diff --git a/doc/topics/development/contributing.rst b/doc/topics/development/contributing.rst index 79413976829..ed4fd2aa12a 100644 --- a/doc/topics/development/contributing.rst +++ b/doc/topics/development/contributing.rst @@ -31,7 +31,7 @@ documentation for more information. .. _github-pull-request: Sending a GitHub pull request -============================= +----------------------------- Sending pull requests on GitHub is the preferred method for receiving contributions. The workflow advice below mirrors `GitHub's own guide `_ and is well worth reading. .. code-block:: bash git fetch upstream - git checkout -b fix-broken-thing upstream/2016.3 + git checkout -b fix-broken-thing upstream/2016.11 If you're working on a feature, create your branch from the develop branch. @@ -130,7 +130,7 @@ Fork a Repo Guide_>`_ and is well worth reading. .. code-block:: bash git fetch upstream - git rebase upstream/2016.3 fix-broken-thing + git rebase upstream/2016.11 fix-broken-thing git push -u origin fix-broken-thing or @@ -170,9 +170,9 @@ Fork a Repo Guide_>`_ and is well worth reading. https://github.com/my-account/salt/pull/new/fix-broken-thing #. If your branch is a fix for a release branch, choose that as the base - branch (e.g. ``2016.3``), + branch (e.g. ``2016.11``), - https://github.com/my-account/salt/compare/saltstack:2016.3...fix-broken-thing + https://github.com/my-account/salt/compare/saltstack:2016.11...fix-broken-thing If your branch is a feature, choose ``develop`` as the base branch, @@ -205,80 +205,206 @@ Fork a Repo Guide_>`_ and is well worth reading. .. _which-salt-branch: -Which Salt branch? -================== - -GitHub will open pull requests against Salt's main branch, ``develop``, by -default. Ideally, features should go into ``develop`` and bug fixes and -documentation changes should go into the oldest supported release branch -affected by the bug or documentation update. See -:ref:`Sending a GitHub pull request `. - -If you have a bug fix or doc change and have already forked your working -branch from ``develop`` and do not know how to rebase your commits against -another branch, then submit it to ``develop`` anyway and we'll be sure to -back-port it to the correct place. - -The current release branch --------------------------- - -The current release branch is the most recent stable release. Pull requests -containing bug fixes should be made against the release branch. - -The branch name will be a date-based name such as ``2016.3``. - -Bug fixes are made on this branch so that minor releases can be cut from this -branch without introducing surprises and new features. This approach maximizes -stability. - -The Salt development team will "merge-forward" any fixes made on the release -branch to the ``develop`` branch once the pull request has been accepted. This -keeps the fix in isolation on the release branch and also keeps the ``develop`` -branch up-to-date. - -.. note:: Closing GitHub issues from commits - - This "merge-forward" strategy requires that `the magic keywords to close a - GitHub issue `_ appear in the commit - message text directly. Only including the text in a pull request will not - close the issue. - - GitHub will close the referenced issue once the *commit* containing the - magic text is merged into the default branch (``develop``). Any magic text - input only into the pull request description will not be seen at the - Git-level when those commits are merged-forward. In other words, only the - commits are merged-forward and not the pull request. - -The ``develop`` branch +Salt's Branch Topology ---------------------- +There are three different kinds of branches in use: develop, main release +branches, and dot release branches. + +- All feature work should go into the ``develop`` branch. +- Bug fixes and documentation changes should go into the oldest supported + **main** release branch affected by the the bug or documentation change. + Main release branches are named after a year and month, such as + ``2016.11`` and ``2017.7``. +- Hot fixes, as determined by SaltStack's release team, should be submitted + against **dot** release branches. Dot release branches are named after a + year, month, and version. Examples include ``2016.11.8`` and ``2017.7.2``. + +.. note:: + + GitHub will open pull requests against Salt's main branch, ``develop``, + byndefault. Be sure to check which branch is selected when creating the + pull request. + +The Develop Branch +================== + The ``develop`` branch is unstable and bleeding-edge. Pull requests containing feature additions or non-bug-fix changes should be made against the ``develop`` branch. -The Salt development team will back-port bug fixes made to ``develop`` to the -current release branch if the contributor cannot create the pull request -against that branch. +.. note:: -Release Branches ----------------- + If you have a bug fix or documentation change and have already forked your + working branch from ``develop`` and do not know how to rebase your commits + against another branch, then submit it to ``develop`` anyway. SaltStack's + development team will be happy to back-port it to the correct branch. -For each release, a branch will be created when the SaltStack release team is -ready to tag. The release branch is created from the parent branch and will be -the same name as the tag minus the ``v``. For example, the ``2017.7.1`` release -branch was created from the ``2017.7`` parent branch and the ``v2017.7.1`` -release was tagged at the ``HEAD`` of the ``2017.7.1`` branch. This branching -strategy will allow for more stability when there is a need for a re-tag during -the testing phase of the release process. + **Please make sure you let the maintainers know that the pull request needs + to be back-ported.** -Once the release branch is created, the fixes required for a given release, as -determined by the SaltStack release team, will be added to this branch. All -commits in this branch will be merged forward into the parent branch as well. +Main Release Branches +===================== + +The current release branch is the most recent stable release. Pull requests +containing bug fixes or documentation changes should be made against the main +release branch that is affected. + +The branch name will be a date-based name such as ``2016.11``. + +Bug fixes are made on this branch so that dot release branches can be cut from +the main release branch without introducing surprises and new features. This +approach maximizes stability. + +Dot Release Branches +==================== + +Prior to tagging an official release, a branch will be created when the SaltStack +release team is ready to tag. The dot release branch is created from a main release +branch. The dot release branch will be the same name as the tag minus the ``v``. +For example, the ``2017.7.1`` dot release branch was created from the ``2017.7`` +main release branch. The ``v2017.7.1`` release was tagged at the ``HEAD`` of the +``2017.7.1`` branch. + +This branching strategy will allow for more stability when there is a need for +a re-tag during the testing phase of the release process and further increases +stability. + +Once the dot release branch is created, the fixes required for a given release, +as determined by the SaltStack release team, will be added to this branch. All +commits in this branch will be merged forward into the main release branch as +well. + +Merge Forward Process +===================== + +The Salt repository follows a "Merge Forward" policy. The merge-forward +behavior means that changes submitted to older main release branches will +automatically be "merged-forward" into the newer branches. + +For example, a pull request is merged into ``2016.11``. Then, the entire +``2016.11`` branch is merged-forward into the ``2017.7`` branch, and the +``2017.7`` branch is merged-forward into the ``develop`` branch. + +This process makes is easy for contributors to make only one pull-request +against an older branch, but allows the change to propagate to all **main** +release branches. + +The merge-forward work-flow applies to all main release branches and the +operation runs continuously. + +Merge-Forwards for Dot Release Branches +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The merge-forward policy applies to dot release branches as well, but has a +slightly different behavior. If a change is submitted to a **dot** release +branch, the dot release branch will be merged into its parent **main** +release branch. + +For example, a pull request is merged into the ``2017.7.2`` release branch. +Then, the entire ``2017.7.2`` branch is merged-forward into the ``2017.7`` +branch. From there, the merge forward process continues as normal. + +The only way in which dot release branches differ from main release branches +in regard to merge-forwards, is that once a dot release branch is created +from the main release branch, the dot release branch does not receive merge +forwards. + +.. note:: + + The merge forward process for dot release branches is one-way: + dot release branch --> main release branch. + +Closing GitHub issues from commits +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This "merge-forward" strategy requires that `the magic keywords to close a +GitHub issue `_ appear in the commit +message text directly. Only including the text in a pull request will not +close the issue. + +GitHub will close the referenced issue once the *commit* containing the +magic text is merged into the default branch (``develop``). Any magic text +input only into the pull request description will not be seen at the +Git-level when those commits are merged-forward. In other words, only the +commits are merged-forward and not the pull request text. + +.. _backporting-pull-requests: + +Backporting Pull Requests +========================= + +If a bug is fixed on ``develop`` and the bug is also present on a +currently-supported release branch, it will need to be back-ported to an +applicable branch. + +.. note:: Most Salt contributors can skip these instructions + + These instructions do not need to be read in order to contribute to the + Salt project! The SaltStack team will back-port fixes on behalf of + contributors in order to keep the contribution process easy. + + These instructions are intended for frequent Salt contributors, advanced + Git users, SaltStack employees, or independent souls who wish to back-port + changes themselves. + +It is often easiest to fix a bug on the oldest supported release branch and +then merge that branch forward into ``develop`` (as described earlier in this +document). When that is not possible the fix must be back-ported, or copied, +into any other affected branches. + +These steps assume a pull request ``#1234`` has been merged into ``develop``. +And ``upstream`` is the name of the remote pointing to the main Salt repo. + +#. Identify the oldest supported release branch that is affected by the bug. + +#. Create a new branch for the back-port by reusing the same branch from the + original pull request. + + Name the branch ``bp-`` and use the number of the original pull + request. + + .. code-block:: bash + + git fetch upstream refs/pull/1234/head:bp-1234 + git checkout bp-1234 + +#. Find the parent commit of the original pull request. + + The parent commit of the original pull request must be known in order to + rebase onto a release branch. The easiest way to find this is on GitHub. + + Open the original pull request on GitHub and find the first commit in the + list of commits. Select and copy the SHA for that commit. The parent of + that commit can be specified by appending ``~1`` to the end. + +#. Rebase the new branch on top of the release branch. + + * ```` is the branch identified in step #1. + + * ```` is the SHA identified in step #3 -- don't forget to add + ``~1`` to the end! + + .. code-block:: bash + + git rebase --onto bp-1234 + + Note, release branches prior to ``2016.11`` will not be able to make use of + rebase and must use cherry-picking instead. + +#. Push the back-port branch to GitHub and open a new pull request. + + Opening a pull request for the back-port allows for the test suite and + normal code-review process. + + .. code-block:: bash + + git push -u origin bp-1234 Keeping Salt Forks in Sync -========================== +-------------------------- -Salt is advancing quickly. It is therefore critical to pull upstream changes +Salt advances quickly. It is therefore critical to pull upstream changes from upstream into your fork on a regular basis. Nothing is worse than putting hard work into a pull request only to see bunches of merge conflicts because it has diverged too far from upstream. @@ -340,92 +466,53 @@ the name of the main `saltstack/salt`_ repository. the current release branch. Posting patches to the mailing list -=================================== +----------------------------------- Patches will also be accepted by email. Format patches using `git format-patch`_ and send them to the `salt-users`_ mailing list. The contributor will then get credit for the patch, and the Salt community will have an archive of the patch and a place for discussion. -.. _backporting-pull-requests: - -Backporting Pull Requests -========================= - -If a bug is fixed on ``develop`` and the bug is also present on a -currently-supported release branch it will need to be back-ported to all -applicable branches. - -.. note:: Most Salt contributors can skip these instructions - - These instructions do not need to be read in order to contribute to the - Salt project! The SaltStack team will back-port fixes on behalf of - contributors in order to keep the contribution process easy. - - These instructions are intended for frequent Salt contributors, advanced - Git users, SaltStack employees, or independent souls who wish to back-port - changes themselves. - -It is often easiest to fix a bug on the oldest supported release branch and -then merge that branch forward into ``develop`` (as described earlier in this -document). When that is not possible the fix must be back-ported, or copied, -into any other affected branches. - -These steps assume a pull request ``#1234`` has been merged into ``develop``. -And ``upstream`` is the name of the remote pointing to the main Salt repo. - -1. Identify the oldest supported release branch that is affected by the bug. - -2. Create a new branch for the back-port by reusing the same branch from the - original pull request. - - Name the branch ``bp-`` and use the number of the original pull - request. - - .. code-block:: bash - - git fetch upstream refs/pull/1234/head:bp-1234 - git checkout bp-1234 - -3. Find the parent commit of the original pull request. - - The parent commit of the original pull request must be known in order to - rebase onto a release branch. The easiest way to find this is on GitHub. - - Open the original pull request on GitHub and find the first commit in the - list of commits. Select and copy the SHA for that commit. The parent of - that commit can be specified by appending ``~1`` to the end. - -4. Rebase the new branch on top of the release branch. - - * ```` is the branch identified in step #1. - - * ```` is the SHA identified in step #3 -- don't forget to add - ``~1`` to the end! - - .. code-block:: bash - - git rebase --onto bp-1234 - - Note, release branches prior to ``2016.3`` will not be able to make use of - rebase and must use cherry-picking instead. - -5. Push the back-port branch to GitHub and open a new pull request. - - Opening a pull request for the back-port allows for the test suite and - normal code-review process. - - .. code-block:: bash - - git push -u origin bp-1234 - Issue and Pull Request Labeling System -====================================== +-------------------------------------- SaltStack uses several labeling schemes to help facilitate code contributions and bug resolution. See the :ref:`Labels and Milestones ` documentation for more information. +Mentionbot +---------- + +SaltStack runs a mention-bot which notifies contributors who might be able +to help review incoming pull-requests based on their past contribution to +files which are being changed. + +If you do not wish to receive these notifications, please add your GitHub +handle to the blacklist line in the ``.mention-bot`` file located in the +root of the Salt repository. + +.. _probot-gpg-verification: + +GPG Verification +---------------- + +SaltStack has enabled `GPG Probot`_ to enforce GPG signatures for all +commits included in a Pull Request. + +In order for the GPG verification status check to pass, *every* contributor in +the pull request must: + +- Set up a GPG key on local machine +- Sign all commits in the pull request with key +- Link key with GitHub account + +This applies to all commits in the pull request. + +GitHub hosts a number of `help articles`_ for creating a GPG key, using the +GPG key with ``git`` locally, and linking the GPG key to your GitHub account. +Once these steps are completed, the commit signing verification will look like +the example in GitHub's `GPG Signature Verification feature announcement`_. + .. _`saltstack/salt`: https://github.com/saltstack/salt .. _`GitHub Fork a Repo Guide`: https://help.github.com/articles/fork-a-repo .. _`GitHub issue tracker`: https://github.com/saltstack/salt/issues @@ -434,14 +521,6 @@ and bug resolution. See the :ref:`Labels and Milestones .. _`Closing issues via commit message`: https://help.github.com/articles/closing-issues-via-commit-messages .. _`git format-patch`: https://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html .. _salt-users: https://groups.google.com/forum/#!forum/salt-users - -Mentionbot -========== - -SaltStack runs a mention-bot which notifies contributors who might be able -to help review incoming pull-requests based on their past contribution to -files which are being changed. - -If you do not wish to receive these notifications, please add your GitHub -handle to the blacklist line in the `.mention-bot` file located in the -root of the Salt repository. +.. _GPG Probot: https://probot.github.io/apps/gpg/ +.. _help articles: https://help.github.com/articles/signing-commits-with-gpg/ +.. _GPG Signature Verification feature announcement: https://github.com/blog/2144-gpg-signature-verification diff --git a/doc/topics/releases/2017.7.0.rst b/doc/topics/releases/2017.7.0.rst index a0e257b3473..16811015226 100644 --- a/doc/topics/releases/2017.7.0.rst +++ b/doc/topics/releases/2017.7.0.rst @@ -21,6 +21,9 @@ Salt will no longer support Python 2.6. We will provide python2.7 packages on ou .. _repo: https://repo.saltstack.com/ +As this will impact the installation of additional dependencies for salt modules please use pip packages if there is not a package available in a repository. You will need to install the python27-pip package to get access to the correct pip27 executable: ``yum install python27-pip`` + + ============ Known Issues ============ diff --git a/doc/topics/releases/2017.7.2.rst b/doc/topics/releases/2017.7.2.rst new file mode 100644 index 00000000000..1f823d74175 --- /dev/null +++ b/doc/topics/releases/2017.7.2.rst @@ -0,0 +1,3160 @@ +============================ +Salt 2017.7.2 Release Notes +============================ + +Version 2017.7.2 is a bugfix release for :ref:`2017.7.0 `. + +Changes for v2017.7.1..v2017.7.2 +-------------------------------- + +Extended changelog courtesy of Todd Stansell (https://github.com/tjstansell/salt-changelogs): + +*Generated at: 2017-09-26T21:06:19Z* + +Statistics: + +- Total Merges: **326** +- Total Issue references: **133** +- Total PR references: **389** + +Changes: + + +- **PR** `#43585`_: (*rallytime*) Back-port `#43330`_ to 2017.7.2 + @ *2017-09-19T17:33:34Z* + + - **ISSUE** `#43077`_: (*Manoj2087*) Issue with deleting key via wheel + | refs: `#43330`_ + - **PR** `#43330`_: (*terminalmage*) Fix reactor regression + unify reactor config schema + | refs: `#43585`_ + * 89f629233f Merge pull request `#43585`_ from rallytime/`bp-43330`_ + * c4f693bae8 Merge branch '2017.7.2' into `bp-43330`_ + +- **PR** `#43586`_: (*rallytime*) Back-port `#43526`_ to 2017.7.2 + @ *2017-09-19T15:36:27Z* + + - **ISSUE** `#43447`_: (*UtahDave*) When using Syndic with Multi Master the top level master doesn't reliably get returns from lower minion. + | refs: `#43526`_ + - **PR** `#43526`_: (*DmitryKuzmenko*) Forward events to all masters syndic connected to + | refs: `#43586`_ + * abb7fe4422 Merge pull request `#43586`_ from rallytime/`bp-43526`_ + * e076e9b634 Forward events to all masters syndic connected to. + + * 7abd07fa07 Simplify client logic + + * b5f10696c2 Improve the reactor documentation + + * 7a2f12b96a Include a better example for reactor in master conf file + + * 531cac610e Rewrite the reactor unit tests + + * 2a35ab7f39 Unify reactor configuration, fix caller reactors + + * 4afb179bad Un-deprecate passing kwargs outside of 'kwarg' param + +- **PR** `#43551`_: (*twangboy*) Fix preinstall script on OSX for 2017.7.2 + @ *2017-09-18T18:35:35Z* + + * 3d3b09302d Merge pull request `#43551`_ from twangboy/osx_fix_preinstall_2017.7.2 + * c3d9fb63f0 Merge branch '2017.7.2' into osx_fix_preinstall_2017.7.2 + +- **PR** `#43509`_: (*rallytime*) Back-port `#43333`_ to 2017.7.2 + @ *2017-09-15T21:21:40Z* + + - **ISSUE** `#2`_: (*thatch45*) salt job queries + - **PR** `#43333`_: (*damon-atkins*) Docs are wrong cache_dir (bool) and cache_file (str) cannot be passed as params + 1 bug + | refs: `#43509`_ + * 24691da888 Merge pull request `#43509`_ from rallytime/`bp-43333`_-2017.7.2 + * b3dbafb035 Update doco + + * 5cdcdbf428 Update win_pkg.py + + * c3e16661c3 Docs are wrong cache_dir (bool) and cache_file (str) cannot be passed on the cli (`#2`_) + + * f33395f1ee Fix logic in `/etc/paths.d/salt` detection + +- **PR** `#43440`_: (*rallytime*) Back-port `#43421`_ to 2017.7.2 + @ *2017-09-11T20:59:53Z* + + - **PR** `#43421`_: (*gtmanfred*) Revert "Reduce fileclient.get_file latency by merging _file_find and … + | refs: `#43440`_ + * 8964cacbf8 Merge pull request `#43440`_ from rallytime/`bp-43421`_ + * ea6e661755 Revert "Reduce fileclient.get_file latency by merging _file_find and _file_hash" + +- **PR** `#43377`_: (*rallytime*) Back-port `#43193`_ to 2017.7.2 + @ *2017-09-11T15:32:23Z* + + - **PR** `#43193`_: (*jettero*) Prevent spurious "Template does not exist" error + | refs: `#43377`_ + - **PR** `#39516`_: (*jettero*) Prevent spurious "Template does not exist" error + | refs: `#43193`_ + * 7fda186b18 Merge pull request `#43377`_ from rallytime/`bp-43193`_ + * 842b07fd25 Prevent spurious "Template does not exist" error + +- **PR** `#43315`_: (*rallytime*) Back-port `#43283`_ to 2017.7.2 + @ *2017-09-05T20:04:25Z* + + - **ISSUE** `#42459`_: (*iavael*) Broken ldap groups retrieval in salt.auth.ldap after upgrade to 2017.7 + | refs: `#43283`_ + - **PR** `#43283`_: (*DmitryKuzmenko*) Fix ldap token groups auth. + | refs: `#43315`_ + * 85dba1e898 Merge pull request `#43315`_ from rallytime/`bp-43283`_ + * f29f5b0cce Fix for tests: don't require 'groups' in the eauth token. + + * 56938d5bf2 Fix ldap token groups auth. + +- **PR** `#43266`_: (*gtmanfred*) switch virtualbox cloud driver to use __utils__ + @ *2017-08-30T18:36:20Z* + + - **ISSUE** `#43259`_: (*mahesh21*) NameError: global name '__opts__' is not defined + | refs: `#43266`_ + * 26ff8088cb Merge pull request `#43266`_ from gtmanfred/virtualbox + * 382bf92de7 switch virtualbox cloud driver to use __utils__ + +- **PR** `#43073`_: (*Mapel88*) Fix bug `#42936`_ - win_iis module container settings + @ *2017-08-30T18:34:37Z* + + - **ISSUE** `#43110`_: (*Mapel88*) bug in iis_module - create_cert_binding + - **ISSUE** `#42936`_: (*Mapel88*) bug in win_iis module & state - container_setting + | refs: `#43073`_ + * ee209b144c Merge pull request `#43073`_ from Mapel88/patch-2 + * b1a3d15b28 Remove trailing whitespace for linter + + * 25c8190e48 Fix pylint errors + + * 1eba8c4b8e Fix pylint errors + + * 290d7b54af Fix plint errors + + * f4f32421ab Fix plint errors + + * ec20e9a19a Fix bug `#43110`_ - win_iis module + + * 009ef6686b Fix dictionary keys from string to int + + * dc793f9a05 Fix bug `#42936`_ - win_iis state + + * 13404a47b5 Fix bug `#42936`_ - win_iis module + +- **PR** `#43254`_: (*twangboy*) Fix `unit.modules.test_inspect_collector` on Windows + @ *2017-08-30T15:46:07Z* + + * ec1bedc646 Merge pull request `#43254`_ from twangboy/win_fix_test_inspect_collector + * b401340e6c Fix `unit.modules.test_inspect_collector` on Windows + +- **PR** `#43255`_: (*gtmanfred*) always return a dict object + @ *2017-08-30T14:47:15Z* + + - **ISSUE** `#43241`_: (*mirceaulinic*) Error whilst collecting napalm grains + | refs: `#43255`_ + * 1fc7307735 Merge pull request `#43255`_ from gtmanfred/2017.7 + * 83b0bab34b opt_args needs to be a dict + +- **PR** `#43229`_: (*twangboy*) Bring changes from `#43228`_ to 2017.7 + @ *2017-08-30T14:26:55Z* + + - **PR** `#43228`_: (*twangboy*) Win fix pkg.install + | refs: `#43229`_ + * fa904ee225 Merge pull request `#43229`_ from twangboy/win_fix_pkg.install-2017.7 + * e007a1c26e Fix regex, add `.` + + * 23ec47c74c Add _ to regex search + + * b1788b1e5f Bring changes from `#43228`_ to 2017.7 + +- **PR** `#43251`_: (*twangboy*) Skips `unit.modules.test_groupadd` on Windows + @ *2017-08-30T13:56:36Z* + + * 25666f88f7 Merge pull request `#43251`_ from twangboy/win_skip_test_groupadd + * 5185071d5a Skips `unit.modules.test_groupadd` on Windows + +- **PR** `#43256`_: (*twangboy*) Skip mac tests for user and group + @ *2017-08-30T13:18:13Z* + + * a8e09629b2 Merge pull request `#43256`_ from twangboy/win_skip_mac_tests + * cec627a60b Skip mac tests for user and group + +- **PR** `#43226`_: (*lomeroe*) Fixes for issues in PR `#43166`_ + @ *2017-08-29T19:05:39Z* + + - **ISSUE** `#42279`_: (*dafyddj*) win_lgpo matches multiple policies due to startswith() + | refs: `#43116`_ `#43116`_ `#43166`_ `#43226`_ `#43156`_ + - **PR** `#43166`_: (*lomeroe*) Backport `#43116`_ to 2017.7 + | refs: `#43226`_ + - **PR** `#43156`_: (*lomeroe*) Backport `#43116`_ to 2017.7 + | refs: `#43166`_ + - **PR** `#43116`_: (*lomeroe*) Fix 42279 in develop + | refs: `#43166`_ `#43156`_ + - **PR** `#39773`_: (*twangboy*) Make win_file use the win_dacl salt util + | refs: `#43226`_ + * ac2189c870 Merge pull request `#43226`_ from lomeroe/fix_43166 + * 0c424dc4a3 Merge branch '2017.7' into fix_43166 + + * 324cfd8d1e correcting bad format statement in search for policy to be disabled (fix for `#43166`_) verify that file exists before attempting to remove (fix for commits from `#39773`_) + +- **PR** `#43227`_: (*twangboy*) Fix `unit.fileserver.test_gitfs` for Windows + @ *2017-08-29T19:03:36Z* + + * 6199fb46dc Merge pull request `#43227`_ from twangboy/win_fix_unit_test_gitfs + * c956d24283 Fix is_windows detection when USERNAME missing + + * 869e8cc603 Fix `unit.fileserver.test_gitfs` for Windows + +- **PR** `#43217`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-28T16:36:28Z* + + - **ISSUE** `#43101`_: (*aogier*) genesis.bootstrap fails if no pkg AND exclude_pkgs (which can't be a string) + | refs: `#43103`_ + - **ISSUE** `#42642`_: (*githubcdr*) state.augeas + | refs: `#42669`_ `#43202`_ + - **ISSUE** `#42329`_: (*jagguli*) State git.latest does not pull latest tags + | refs: `#42663`_ + - **PR** `#43202`_: (*garethgreenaway*) Reverting previous augeas module changes + - **PR** `#43103`_: (*aogier*) genesis.bootstrap deboostrap fix + - **PR** `#42663`_: (*jagguli*) Check remote tags before deciding to do a fetch `#42329`_ + * 6adc03e4b4 Merge pull request `#43217`_ from rallytime/merge-2017.7 + * 3911df2f4b Merge branch '2016.11' into '2017.7' + + * 5308c27f9f Merge pull request `#43202`_ from garethgreenaway/42642_2016_11_augeas_module_revert_fix + + * ef7e93eb3f Reverting this change due to it breaking other uses. + + * f16b7246e4 Merge pull request `#43103`_ from aogier/43101-genesis-bootstrap + + * db94f3bb1c better formatting + + * e5cc667762 tests: fix a leftover and simplify some parts + + * 13e5997457 lint + + * 216ced69e5 allow comma-separated pkgs lists, quote args, test deb behaviour + + * d8612ae006 fix debootstrap and enhance packages selection/deletion via cmdline + + * 4863771428 Merge pull request `#42663`_ from StreetHawkInc/fix_git_tag_check + + * 2b5af5b59d Remove refs/tags prefix from remote tags + + * 3f2e96e561 Convert set to list for serializer + + * 2728e5d977 Only include new tags in changes + + * 4b1df2f223 Exclude annotated tags from checks + + * 389c037285 Check remote tags before deciding to do a fetch `#42329`_ + +- **PR** `#43201`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-25T22:56:46Z* + + - **ISSUE** `#43198`_: (*corywright*) disk.format_ needs to be aliased to disk.format + | refs: `#43199`_ + - **ISSUE** `#43143`_: (*abulford*) git.detached does not fetch if rev is missing from local + | refs: `#43178`_ + - **ISSUE** `#495`_: (*syphernl*) mysql.* without having MySQL installed/configured gives traceback + | refs: `#43196`_ + - **PR** `#43199`_: (*corywright*) Add `disk.format` alias for `disk.format_` + - **PR** `#43196`_: (*gtmanfred*) Pin request install to version for npm tests + - **PR** `#43179`_: (*terminalmage*) Fix missed deprecation + - **PR** `#43178`_: (*terminalmage*) git.detached: Fix traceback when rev is a SHA and is not present locally + - **PR** `#43173`_: (*Ch3LL*) Add New Release Branch Strategy to Contribution Docs + - **PR** `#43171`_: (*terminalmage*) Add warning about adding new functions to salt/utils/__init__.py + * a563a9422a Merge pull request `#43201`_ from rallytime/merge-2017.7 + * d40eba6b37 Merge branch '2016.11' into '2017.7' + + * 4193e7f0a2 Merge pull request `#43199`_ from corywright/disk-format-alias + + * f00d3a9ddc Add `disk.format` alias for `disk.format_` + + * 5471f9fe0c Merge pull request `#43196`_ from gtmanfred/2016.11 + + * ccd2241777 Pin request install to version + + * ace2715c60 Merge pull request `#43178`_ from terminalmage/issue43143 + + * 2640833400 git.detached: Fix traceback when rev is a SHA and is not present locally + + * 12e9507b9e Merge pull request `#43179`_ from terminalmage/old-deprecation + + * 3adf8ad04b Fix missed deprecation + + * b595440d90 Merge pull request `#43171`_ from terminalmage/salt-utils-warning + + * 7b5943a31a Add warning about adding new functions to salt/utils/__init__.py + + * 4f273cac4f Merge pull request `#43173`_ from Ch3LL/add_branch_docs + + * 1b24244bd3 Add New Release Branch Strategy to Contribution Docs + +- **PR** `#42997`_: (*twangboy*) Fix `unit.test_test_module_names` for Windows + @ *2017-08-25T21:19:11Z* + + * ce04ab4286 Merge pull request `#42997`_ from twangboy/win_fix_test_module_names + * 2722e9521d Use os.path.join to create paths + +- **PR** `#43006`_: (*SuperPommeDeTerre*) Try to fix `#26995`_ + @ *2017-08-25T21:16:07Z* + + - **ISSUE** `#26995`_: (*jbouse*) Issue with artifactory.downloaded and snapshot artifacts + | refs: `#43006`_ `#43006`_ + * c0279e491e Merge pull request `#43006`_ from SuperPommeDeTerre/SuperPommeDeTerre-patch-`#26995`_ + * 30dd6f5d12 Merge remote-tracking branch 'upstream/2017.7' into SuperPommeDeTerre-patch-`#26995`_ + + * f42ae9b8cd Merge branch 'SuperPommeDeTerre-patch-`#26995`_' of https://github.com/SuperPommeDeTerre/salt into SuperPommeDeTerre-patch-`#26995`_ + + * 50ee3d5682 Merge remote-tracking branch 'remotes/origin/2017.7' into SuperPommeDeTerre-patch-`#26995`_ + + * 0b666e100b Fix typo. + + * 1b8729b3e7 Fix for `#26995`_ + + * e314102978 Fix typo. + + * db11e1985b Fix for `#26995`_ + +- **PR** `#43184`_: (*terminalmage*) docker.compare_container: Perform boolean comparison when one side's value is null/None + @ *2017-08-25T18:42:11Z* + + - **ISSUE** `#43162`_: (*MorphBonehunter*) docker_container.running interference with restart_policy + | refs: `#43184`_ + * b6c5314fe9 Merge pull request `#43184`_ from terminalmage/issue43162 + * 081f42ad71 docker.compare_container: Perform boolean comparison when one side's value is null/None + +- **PR** `#43165`_: (*mirceaulinic*) Improve napalm state output in debug mode + @ *2017-08-24T23:05:37Z* + + * 688125bb4f Merge pull request `#43165`_ from cloudflare/fix-napalm-ret + * c10717dc89 Lint and fix + + * 1cd33cbaa9 Simplify the loaded_ret logic + + * 0bbea6b04c Document the new compliance_report arg + + * 3a906109bd Include compliance reports + + * 3634055e34 Improve napalm state output in debug mode + +- **PR** `#43155`_: (*terminalmage*) Resolve image ID during container comparison + @ *2017-08-24T22:09:47Z* + + * a6a327b1e5 Merge pull request `#43155`_ from terminalmage/issue43001 + * 0186835ebf Fix docstring in test + + * a0bb654e46 Fixing lint issues + + * d5b2a0be68 Resolve image ID during container comparison + +- **PR** `#43170`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-24T19:22:26Z* + + - **PR** `#43151`_: (*ushmodin*) state.sls hangs on file.recurse with clean: True on windows + - **PR** `#42969`_: (*ushmodin*) state.sls hangs on file.recurse with clean: True on windows + | refs: `#43151`_ + * c071fd44c8 Merge pull request `#43170`_ from rallytime/merge-2017.7 + * 3daad5a3a2 Merge branch '2016.11' into '2017.7' + + * 669b376abf Merge pull request `#43151`_ from ushmodin/2016.11 + + * c5841e2ade state.sls hangs on file.recurse with clean: True on windows + +- **PR** `#43168`_: (*rallytime*) Back-port `#43041`_ to 2017.7 + @ *2017-08-24T19:07:23Z* + + - **ISSUE** `#43040`_: (*darcoli*) gitFS ext_pillar with branch name __env__ results in empty pillars + | refs: `#43041`_ `#43041`_ + - **PR** `#43041`_: (*darcoli*) Do not try to match pillarenv with __env__ + | refs: `#43168`_ + * 034c325a09 Merge pull request `#43168`_ from rallytime/`bp-43041`_ + * d010b74b87 Do not try to match pillarenv with __env__ + +- **PR** `#43172`_: (*rallytime*) Move new utils/__init__.py funcs to utils.files.py + @ *2017-08-24T19:05:30Z* + + - **PR** `#43056`_: (*damon-atkins*) safe_filename_leaf(file_basename) and safe_filepath(file_path_name) + | refs: `#43172`_ + * d48938e6b4 Merge pull request `#43172`_ from rallytime/move-utils-funcs + * 5385c7901e Move new utils/__init__.py funcs to utils.files.py + +- **PR** `#43061`_: (*pabloh007*) Have docker.save use the image name when valid if not use image id, i… + @ *2017-08-24T16:32:02Z* + + - **ISSUE** `#43043`_: (*pabloh007*) docker.save and docker.load problem + | refs: `#43061`_ `#43061`_ + * e60f586442 Merge pull request `#43061`_ from pabloh007/fix-save-image-name-id + * 0ffc57d1df Have docker.save use the image name when valid if not use image id, issue when loading and image is savid with id issue `#43043`_ + +- **PR** `#43166`_: (*lomeroe*) Backport `#43116`_ to 2017.7 + | refs: `#43226`_ + @ *2017-08-24T15:01:23Z* + + - **ISSUE** `#42279`_: (*dafyddj*) win_lgpo matches multiple policies due to startswith() + | refs: `#43116`_ `#43116`_ `#43166`_ `#43226`_ `#43156`_ + - **PR** `#43156`_: (*lomeroe*) Backport `#43116`_ to 2017.7 + | refs: `#43166`_ + - **PR** `#43116`_: (*lomeroe*) Fix 42279 in develop + | refs: `#43166`_ `#43156`_ + * 9da57543f8 Merge pull request `#43166`_ from lomeroe/`bp-43116`_-2017.7 + * af181b3257 correct fopen calls from salt.utils for 2017.7 + + * f74480f11e lint fix + + * ecd446fd55 track xml namespace to ensure policies w/duplicate IDs or Names do not conflict + + * 9f3047c420 add additional checks for ADM policies that have the same ADMX policy ID (`#42279`_) + +- **PR** `#43056`_: (*damon-atkins*) safe_filename_leaf(file_basename) and safe_filepath(file_path_name) + | refs: `#43172`_ + @ *2017-08-23T17:35:02Z* + + * 44b3caead1 Merge pull request `#43056`_ from damon-atkins/2017.7 + * 08ded1546e more lint + + * 6e9c0957fb fix typo + + * ee41171c9f lint fixes + + * 8c864f02c7 fix missing imports + + * 964cebd954 safe_filename_leaf(file_basename) and safe_filepath(file_path_name) + +- **PR** `#43146`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-23T16:56:10Z* + + - **ISSUE** `#43036`_: (*mcarlton00*) Linux VMs in Bhyve aren't displayed properly in grains + | refs: `#43037`_ + - **PR** `#43100`_: (*vutny*) [DOCS] Add missing `utils` sub-dir listed for `extension_modules` + - **PR** `#43037`_: (*mcarlton00*) Issue `#43036`_ Bhyve virtual grain in Linux VMs + - **PR** `#42986`_: (*renner*) Notify systemd synchronously (via NOTIFY_SOCKET) + * 6ca9131a23 Merge pull request `#43146`_ from rallytime/merge-2017.7 + * bcbe180fbc Merge branch '2016.11' into '2017.7' + + * ae9d2b7985 Merge pull request `#42986`_ from renner/systemd-notify + + * 79c53f3f81 Fallback to systemd_notify_call() in case of socket.error + + * f1765472dd Notify systemd synchronously (via NOTIFY_SOCKET) + + * b420fbe618 Merge pull request `#43037`_ from mcarlton00/fix-bhyve-grains + + * 73315f0cf0 Issue `#43036`_ Bhyve virtual grain in Linux VMs + + * 0a86f2d884 Merge pull request `#43100`_ from vutny/doc-add-missing-utils-ext + + * af743ff6c3 [DOCS] Add missing `utils` sub-dir listed for `extension_modules` + +- **PR** `#43123`_: (*twangboy*) Fix `unit.utils.test_which` for Windows + @ *2017-08-23T16:01:39Z* + + * 03f652159f Merge pull request `#43123`_ from twangboy/win_fix_test_which + * ed97cff5f6 Fix `unit.utils.test_which` for Windows + +- **PR** `#43142`_: (*rallytime*) Back-port `#43068`_ to 2017.7 + @ *2017-08-23T15:56:48Z* + + - **ISSUE** `#42505`_: (*ikogan*) selinux.fcontext_policy_present exception looking for selinux.filetype_id_to_string + | refs: `#43068`_ + - **PR** `#43068`_: (*ixs*) Mark selinux._filetype_id_to_string as public function + | refs: `#43142`_ + * 5a4fc07863 Merge pull request `#43142`_ from rallytime/`bp-43068`_ + * efc1c8c506 Mark selinux._filetype_id_to_string as public function + +- **PR** `#43038`_: (*twangboy*) Fix `unit.utils.test_url` for Windows + @ *2017-08-23T13:35:25Z* + + * 0467a0e3bf Merge pull request `#43038`_ from twangboy/win_unit_utils_test_url + * 7f5ee55f57 Fix `unit.utils.test_url` for Windows + +- **PR** `#43097`_: (*twangboy*) Fix `group.present` for Windows + @ *2017-08-23T13:19:56Z* + + * e9ccaa61d2 Merge pull request `#43097`_ from twangboy/win_fix_group + * 43b0360763 Fix lint + + * 9ffe315d7d Add kwargs + + * 4f4e34c79f Fix group state for Windows + +- **PR** `#43115`_: (*rallytime*) Back-port `#42067`_ to 2017.7 + @ *2017-08-22T20:09:52Z* + + - **PR** `#42067`_: (*vitaliyf*) Removed several uses of name.split('.')[0] in SoftLayer driver. + | refs: `#43115`_ + * 8140855627 Merge pull request `#43115`_ from rallytime/`bp-42067`_ + * 8a6ad0a9cf Fixed typo. + + * 9a5ae2bba1 Removed several uses of name.split('.')[0] in SoftLayer driver. + +- **PR** `#42962`_: (*twangboy*) Fix `unit.test_doc test` for Windows + @ *2017-08-22T18:06:23Z* + + * 1e1a81036c Merge pull request `#42962`_ from twangboy/win_unit_test_doc + * 201ceae4c4 Fix lint, remove debug statement + + * 37029c1a16 Fix unit.test_doc test + +- **PR** `#42995`_: (*twangboy*) Fix malformed requisite for Windows + @ *2017-08-22T16:50:01Z* + + * d347d1cf8f Merge pull request `#42995`_ from twangboy/win_fix_invalid_requisite + * 93390de88b Fix malformed requisite for Windows + +- **PR** `#43108`_: (*rallytime*) Back-port `#42988`_ to 2017.7 + @ *2017-08-22T16:49:27Z* + + - **PR** `#42988`_: (*thusoy*) Fix broken negation in iptables + | refs: `#43108`_ + * 1c7992a832 Merge pull request `#43108`_ from rallytime/`bp-42988`_ + * 1a987cb948 Fix broken negation in iptables + +- **PR** `#43107`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-22T16:11:25Z* + + - **ISSUE** `#42869`_: (*abednarik*) Git Module : Failed to update repository + | refs: `#43064`_ + - **ISSUE** `#42041`_: (*lorengordon*) pkg.list_repo_pkgs fails to find pkgs with spaces around yum repo enabled value + | refs: `#43054`_ + - **ISSUE** `#15171`_: (*JensRantil*) Maximum recursion limit hit related to requisites + | refs: `#42985`_ + - **PR** `#43092`_: (*blarghmatey*) Fixed issue with silently passing all tests in Testinfra module + - **PR** `#43064`_: (*terminalmage*) Fix race condition in git.latest + - **PR** `#43060`_: (*twangboy*) Osx update pkg scripts + - **PR** `#43054`_: (*lorengordon*) Uses ConfigParser to read yum config files + - **PR** `#42985`_: (*DmitryKuzmenko*) Properly handle `prereq` having lost requisites. + - **PR** `#42045`_: (*arount*) Fix: salt.modules.yumpkg: ConfigParser to read ini like files. + | refs: `#43054`_ + * c6993f4a84 Merge pull request `#43107`_ from rallytime/merge-2017.7 + * 328dd6aa23 Merge branch '2016.11' into '2017.7' + + * e2bf2f448e Merge pull request `#42985`_ from DSRCorporation/bugs/15171_recursion_limit + + * 651b1bab09 Properly handle `prereq` having lost requisites. + + * e51333306c Merge pull request `#43092`_ from mitodl/2016.11 + + * d4b113acdf Fixed issue with silently passing all tests in Testinfra module + + * 77a443ce8e Merge pull request `#43060`_ from twangboy/osx_update_pkg_scripts + + * ef8a14cdf9 Remove /opt/salt instead of /opt/salt/bin + + * 2dd62aa1da Add more information to the description + + * f44f5b70dc Only stop services if they are running + + * 3b62bf953c Remove salt from the path + + * ebdca3a0f5 Update pkg-scripts + + * 1b1b6da803 Merge pull request `#43064`_ from terminalmage/issue42869 + + * 093c0c2f77 Fix race condition in git.latest + + * 96e8e836d1 Merge pull request `#43054`_ from lorengordon/fix/yumpkg/config-parser + + * 3b2cb81a72 fix typo in salt.modules.yumpkg + + * 38add0e4a2 break if leading comments are all fetched + + * d7f65dc7a7 fix configparser import & log if error was raised + + * ca1b1bb633 use configparser to parse yum repo file + +- **PR** `#42996`_: (*twangboy*) Fix `unit.test_stateconf` for Windows + @ *2017-08-21T22:43:58Z* + + * f9b4976c02 Merge pull request `#42996`_ from twangboy/win_fix_test_stateconf + * 92dc3c0ece Use os.sep for path + +- **PR** `#43024`_: (*twangboy*) Fix `unit.utils.test_find` for Windows + @ *2017-08-21T22:38:10Z* + + * 19fc644c9b Merge pull request `#43024`_ from twangboy/win_unit_utils_test_find + * fbe54c9a33 Remove unused import six (lint) + + * b04d1a2f18 Fix `unit.utils.test_find` for Windows + +- **PR** `#43088`_: (*gtmanfred*) allow docker util to be reloaded with reload_modules + @ *2017-08-21T22:14:37Z* + + * 1a531169fc Merge pull request `#43088`_ from gtmanfred/2017.7 + * 373a9a0be4 allow docker util to be reloaded with reload_modules + +- **PR** `#43091`_: (*blarghmatey*) Fixed issue with silently passing all tests in Testinfra module + @ *2017-08-21T22:06:22Z* + + * 83e528f0b3 Merge pull request `#43091`_ from mitodl/2017.7 + * b502560e61 Fixed issue with silently passing all tests in Testinfra module + +- **PR** `#41994`_: (*twangboy*) Fix `unit.modules.test_cmdmod` on Windows + @ *2017-08-21T21:53:01Z* + + * 5482524270 Merge pull request `#41994`_ from twangboy/win_unit_test_cmdmod + * a5f7288ad9 Skip test that uses pwd, not available on Windows + +- **PR** `#42933`_: (*garethgreenaway*) Fixes to osquery module + @ *2017-08-21T20:48:31Z* + + - **ISSUE** `#42873`_: (*TheVakman*) osquery Data Empty Upon Return / Reporting Not Installed + | refs: `#42933`_ + * b33c4abc15 Merge pull request `#42933`_ from garethgreenaway/42873_2017_7_osquery_fix + * 8915e62bd9 Removing an import that is not needed. + + * 74bc377eb4 Updating the other function that uses cmd.run_all + + * e6a4619ec1 Better approach without using python_shell=True. + + * 5ac41f496d When running osquery commands through cmd.run we should pass python_shell=True to ensure everything is formatted right. `#42873`_ + +- **PR** `#43093`_: (*gtmanfred*) Fix ec2 list_nodes_full to work on 2017.7 + @ *2017-08-21T20:21:21Z* + + * 53c2115769 Merge pull request `#43093`_ from gtmanfred/ec2 + * c7cffb5a04 This block isn't necessary + + * b7283bcc6f _vm_provider_driver isn't needed anymore + +- **PR** `#43087`_: (*rallytime*) Back-port `#42174`_ to 2017.7 + @ *2017-08-21T18:40:18Z* + + - **ISSUE** `#43085`_: (*brejoc*) Patch for Kubernetes module missing from 2017.7 and 2017.7.1 + | refs: `#43087`_ + - **PR** `#42174`_: (*mcalmer*) kubernetes: provide client certificate authentication + | refs: `#43087`_ + * 32f9ade4db Merge pull request `#43087`_ from rallytime/`bp-42174`_ + * cf6563645b add support for certificate authentication to kubernetes module + +- **PR** `#43029`_: (*terminalmage*) Normalize the salt caching API + @ *2017-08-21T16:54:58Z* + + * 882fcd846f Merge pull request `#43029`_ from terminalmage/fix-func-alias + * f8f74a310c Update localfs cache tests to reflect changes to func naming + + * c4ae79b229 Rename other refs to cache.ls with cache.list + + * ee59d127e8 Normalize the salt caching API + +- **PR** `#43039`_: (*gtmanfred*) catch ImportError for kubernetes.client import + @ *2017-08-21T14:32:38Z* + + - **ISSUE** `#42843`_: (*brejoc*) Kubernetes module won't work with Kubernetes Python client > 1.0.2 + | refs: `#42845`_ + - **PR** `#42845`_: (*brejoc*) API changes for Kubernetes version 2.0.0 + | refs: `#43039`_ + * dbee735f6e Merge pull request `#43039`_ from gtmanfred/kube + * 7e269cb368 catch ImportError for kubernetes.client import + +- **PR** `#43058`_: (*rallytime*) Update release version number for jenkins.run function + @ *2017-08-21T14:13:34Z* + + * c56a8499b3 Merge pull request `#43058`_ from rallytime/fix-release-num + * d7eef70df0 Update release version number for jenkins.run function + +- **PR** `#43051`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-18T17:05:57Z* + + - **ISSUE** `#42992`_: (*pabloh007*) docker.save flag push does is ignored + - **ISSUE** `#42627`_: (*taigrrr8*) salt-cp no longer works. Was working a few months back. + | refs: `#42890`_ + - **ISSUE** `#40490`_: (*alxwr*) saltstack x509 incompatible to m2crypto 0.26.0 + | refs: `#42760`_ + - **PR** `#43048`_: (*rallytime*) Back-port `#43031`_ to 2016.11 + - **PR** `#43033`_: (*rallytime*) Back-port `#42760`_ to 2016.11 + - **PR** `#43032`_: (*rallytime*) Back-port `#42547`_ to 2016.11 + - **PR** `#43031`_: (*gtmanfred*) use a ruby gem that doesn't have dependencies + | refs: `#43048`_ + - **PR** `#43027`_: (*pabloh007*) Fixes ignore push flag for docker.push module issue `#42992`_ + - **PR** `#43026`_: (*rallytime*) Back-port `#43020`_ to 2016.11 + - **PR** `#43023`_: (*terminalmage*) Fixes/improvements to Jenkins state/module + - **PR** `#43021`_: (*terminalmage*) Use socket.AF_INET6 to get the correct value instead of doing an OS check + - **PR** `#43020`_: (*gtmanfred*) test with gem that appears to be abandoned + | refs: `#43026`_ + - **PR** `#43019`_: (*rallytime*) Update bootstrap script to latest stable: v2017.08.17 + - **PR** `#43014`_: (*Ch3LL*) Change AF_INET6 family for mac in test_host_to_ips + | refs: `#43021`_ + - **PR** `#43009`_: (*rallytime*) [2016.11] Merge forward from 2016.3 to 2016.11 + - **PR** `#42954`_: (*Ch3LL*) [2016.3] Bump latest and previous versions + - **PR** `#42949`_: (*Ch3LL*) Add Security Notice to 2016.3.7 Release Notes + - **PR** `#42942`_: (*Ch3LL*) [2016.3] Add clean_id function to salt.utils.verify.py + - **PR** `#42890`_: (*DmitryKuzmenko*) Make chunked mode in salt-cp optional + - **PR** `#42760`_: (*AFriemann*) Catch TypeError thrown by m2crypto when parsing missing subjects in c… + | refs: `#43033`_ + - **PR** `#42547`_: (*blarghmatey*) Updated testinfra modules to work with more recent versions + | refs: `#43032`_ + * 7b0c94768a Merge pull request `#43051`_ from rallytime/merge-2017.7 + * 153a463b86 Lint: Add missing blank line + + * 84829a6f8c Merge branch '2016.11' into '2017.7' + + * 43aa46f512 Merge pull request `#43048`_ from rallytime/`bp-43031`_ + + * 35e45049e2 use a ruby gem that doesn't have dependencies + + * ad89ff3104 Merge pull request `#43023`_ from terminalmage/fix-jenkins-xml-caching + + * 33fd8ff939 Update jenkins.py + + * fc306fc8c3 Add missing colon in `if` statement + + * 822eabcc81 Catch exceptions raised when making changes to jenkins + + * 91b583b493 Improve and correct execption raising + + * f096917a0e Raise an exception if we fail to cache the config xml + + * 2957467ed7 Merge pull request `#43026`_ from rallytime/`bp-43020`_ + + * 0eb15a1f67 test with gem that appears to be abandoned + + * 4150b094fe Merge pull request `#43033`_ from rallytime/`bp-42760`_ + + * 3e3f7f5d8e Catch TypeError thrown by m2crypto when parsing missing subjects in certificate files. + + * b124d3667e Merge pull request `#43032`_ from rallytime/`bp-42547`_ + + * ea4d7f4176 Updated testinfra modules to work with more recent versions + + * a88386ad44 Merge pull request `#43027`_ from pabloh007/fix-docker-save-push-2016-11 + + * d0fd949f85 Fixes ignore push flag for docker.push module issue `#42992`_ + + * 51d16840bb Merge pull request `#42890`_ from DSRCorporation/bugs/42627_salt-cp + + * cfddbf1c75 Apply code review: update the doc + + * afedd3b654 Typos and version fixes in the doc. + + * 9fedf6012e Fixed 'test_valid_docs' test. + + * 999388680c Make chunked mode in salt-cp optional (disabled by default). + + * b3c253cdfa Merge pull request `#43009`_ from rallytime/merge-2016.11 + + * 566ba4fe76 Merge branch '2016.3' into '2016.11' + + * 13b8637d53 Merge pull request `#42942`_ from Ch3LL/2016.3.6_follow_up + + * f281e1795f move additional minion config options to 2016.3.8 release notes + + * 168604ba6b remove merge conflict + + * 8a07d95212 update release notes with cve number + + * 149633fdca Add release notes for 2016.3.7 release + + * 7a4cddcd95 Add clean_id function to salt.utils.verify.py + + * bbb1b29ccb Merge pull request `#42954`_ from Ch3LL/latest_2016.3 + + * b551e66744 [2016.3] Bump latest and previous versions + + * 5d5edc54b7 Merge pull request `#42949`_ from Ch3LL/2016.3.7_docs + + * d75d3741f8 Add Security Notice to 2016.3.7 Release Notes + + * 37c63e7cf2 Merge pull request `#43021`_ from terminalmage/fix-network-test + + * 4089b7b1bc Use socket.AF_INET6 to get the correct value instead of doing an OS check + + * 8f6423247c Merge pull request `#43019`_ from rallytime/bootstrap_2017.08.17 + + * 2f762b3a17 Update bootstrap script to latest stable: v2017.08.17 + + * ff1caeee68 Merge pull request `#43014`_ from Ch3LL/fix_network_mac + + * b8eee4401e Change AF_INET6 family for mac in test_host_to_ips + +- **PR** `#43035`_: (*rallytime*) [2017.7] Merge forward from 2017.7.1 to 2017.7 + @ *2017-08-18T12:58:17Z* + + - **PR** `#42948`_: (*Ch3LL*) [2017.7.1] Add clean_id function to salt.utils.verify.py + | refs: `#43035`_ + - **PR** `#42945`_: (*Ch3LL*) [2017.7] Add clean_id function to salt.utils.verify.py + | refs: `#43035`_ + * d15b0ca937 Merge pull request `#43035`_ from rallytime/merge-2017.7 + * 756128a896 Merge branch '2017.7.1' into '2017.7' + + * ab1b099730 Merge pull request `#42948`_ from Ch3LL/2017.7.0_follow_up + +- **PR** `#43034`_: (*rallytime*) Back-port `#43002`_ to 2017.7 + @ *2017-08-17T23:18:16Z* + + - **ISSUE** `#42989`_: (*blbradley*) GitFS GitPython performance regression in 2017.7.1 + | refs: `#43002`_ `#43002`_ + - **PR** `#43002`_: (*the-glu*) Try to fix `#42989`_ + | refs: `#43034`_ + * bcbb973a71 Merge pull request `#43034`_ from rallytime/`bp-43002`_ + * 350c0767dc Try to fix `#42989`_ by doing sslVerify and refspecs for origin remote only if there is no remotes + +- **PR** `#42958`_: (*gtmanfred*) runit module should also be loaded as runit + @ *2017-08-17T22:30:23Z* + + - **ISSUE** `#42375`_: (*dragonpaw*) salt.modules.*.__virtualname__ doens't work as documented. + | refs: `#42523`_ `#42958`_ + * 9182f55bbb Merge pull request `#42958`_ from gtmanfred/2017.7 + * fd6874668b runit module should also be loaded as runit + +- **PR** `#43031`_: (*gtmanfred*) use a ruby gem that doesn't have dependencies + | refs: `#43048`_ + @ *2017-08-17T22:26:25Z* + + * 5985cc4e8e Merge pull request `#43031`_ from gtmanfred/test_gem + * ba80a7d4b5 use a ruby gem that doesn't have dependencies + +- **PR** `#43030`_: (*rallytime*) Small cleanup to dockermod.save + @ *2017-08-17T22:26:00Z* + + * 246176b1a6 Merge pull request `#43030`_ from rallytime/dockermod-minor-change + * d6a5e85632 Small cleanup to dockermod.save + +- **PR** `#42993`_: (*pabloh007*) Fixes ignored push flag for docker.push module issue `#42992`_ + @ *2017-08-17T18:50:37Z* + + - **ISSUE** `#42992`_: (*pabloh007*) docker.save flag push does is ignored + * 160001120b Merge pull request `#42993`_ from pabloh007/fix-docker-save-push + * fe7554cfeb Fixes ignored push flag for docker.push module issue `#42992`_ + +- **PR** `#42967`_: (*terminalmage*) Fix bug in on_header callback when no Content-Type is found in headers + @ *2017-08-17T18:48:52Z* + + - **ISSUE** `#42941`_: (*danlsgiga*) pkg.installed fails on installing from HTTPS rpm source + | refs: `#42967`_ + * 9009a971b1 Merge pull request `#42967`_ from terminalmage/issue42941 + * b838460816 Fix bug in on_header callback when no Content-Type is found in headers + +- **PR** `#43016`_: (*gtmanfred*) service should return false on exception + @ *2017-08-17T18:08:05Z* + + - **ISSUE** `#43008`_: (*fillarios*) states.service.running always succeeds when watched state has changes + | refs: `#43016`_ + * 58f070d7a7 Merge pull request `#43016`_ from gtmanfred/service + * 21c264fe55 service should return false on exception + +- **PR** `#43020`_: (*gtmanfred*) test with gem that appears to be abandoned + | refs: `#43026`_ + @ *2017-08-17T16:40:41Z* + + * 973d288eca Merge pull request `#43020`_ from gtmanfred/test_gem + * 0a1f40a664 test with gem that appears to be abandoned + +- **PR** `#42999`_: (*garethgreenaway*) Fixes to slack engine + @ *2017-08-17T15:46:24Z* + + * 9cd0607fd4 Merge pull request `#42999`_ from garethgreenaway/slack_engine_allow_editing_messages + * 0ece2a8f0c Fixing a bug that prevented editing Slack messages and having the commands resent to the Slack engine. + +- **PR** `#43010`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-17T15:10:29Z* + + - **ISSUE** `#42803`_: (*gmcwhistler*) master_type: str, not working as expected, parent salt-minion process dies. + | refs: `#42848`_ + - **ISSUE** `#42753`_: (*grichmond-salt*) SaltReqTimeout Error on Some Minions when One Master in a Multi-Master Configuration is Unavailable + | refs: `#42848`_ + - **ISSUE** `#42644`_: (*stamak*) nova salt-cloud -P Private IPs returned, but not public. Checking for misidentified IPs + | refs: `#42940`_ + - **ISSUE** `#38839`_: (*DaveOHenry*) Invoking runner.cloud.action via reactor sls fails + | refs: `#42291`_ + - **PR** `#42968`_: (*vutny*) [DOCS] Fix link to Salt Cloud Feature Matrix + - **PR** `#42959`_: (*rallytime*) Back-port `#42883`_ to 2016.11 + - **PR** `#42952`_: (*Ch3LL*) [2016.11] Bump latest and previous versions + - **PR** `#42950`_: (*Ch3LL*) Add Security Notice to 2016.11.7 Release Notes + - **PR** `#42944`_: (*Ch3LL*) [2016.11] Add clean_id function to salt.utils.verify.py + - **PR** `#42940`_: (*gtmanfred*) create new ip address before checking list of allocated ips + - **PR** `#42919`_: (*rallytime*) Back-port `#42871`_ to 2016.11 + - **PR** `#42918`_: (*rallytime*) Back-port `#42848`_ to 2016.11 + - **PR** `#42883`_: (*rallytime*) Fix failing boto tests + | refs: `#42959`_ + - **PR** `#42871`_: (*amalleo25*) Update joyent.rst + | refs: `#42919`_ + - **PR** `#42861`_: (*twangboy*) Fix pkg.install salt-minion using salt-call + - **PR** `#42848`_: (*DmitryKuzmenko*) Execute fire_master asynchronously in the main minion thread. + | refs: `#42918`_ + - **PR** `#42836`_: (*aneeshusa*) Backport salt.utils.versions from develop to 2016.11 + - **PR** `#42835`_: (*aneeshusa*) Fix typo in utils/versions.py module + | refs: `#42836`_ + - **PR** `#42798`_: (*s-sebastian*) Update return data before calling returners + - **PR** `#42291`_: (*vutny*) Fix `#38839`_: remove `state` from Reactor runner kwags + * 31627a9163 Merge pull request `#43010`_ from rallytime/merge-2017.7 + * 8a0f948e4a Merge branch '2016.11' into '2017.7' + + * 1ee9499d28 Merge pull request `#42968`_ from vutny/doc-salt-cloud-ref + + * 44ed53b1df [DOCS] Fix link to Salt Cloud Feature Matrix + + * 923f9741fe Merge pull request `#42291`_ from vutny/`fix-38839`_ + + * 5f8f98a01f Fix `#38839`_: remove `state` from Reactor runner kwags + + * c20bc7d515 Merge pull request `#42940`_ from gtmanfred/2016.11 + + * 253e216a8d fix IP address spelling + + * bd63074e7a create new ip address before checking list of allocated ips + + * d6496eca72 Merge pull request `#42959`_ from rallytime/`bp-42883`_ + + * c6b9ca4b9e Lint fix: add missing space + + * 5597b1a30e Skip 2 failing tests in Python 3 due to upstream bugs + + * a0b19bdc27 Update account id value in boto_secgroup module unit test + + * 60b406e088 @mock_elb needs to be changed to @mock_elb_deprecated as well + + * 6ae1111295 Replace @mock_ec2 calls with @mock_ec2_deprecated calls + + * 6366e05d0d Merge pull request `#42944`_ from Ch3LL/2016.11.6_follow_up + + * 7e0a20afca Add release notes for 2016.11.7 release + + * 63823f8c3e Add clean_id function to salt.utils.verify.py + + * 49d339c976 Merge pull request `#42952`_ from Ch3LL/latest_2016.11 + + * 74e7055d54 [2016.11] Bump latest and previous versions + + * b0d2e05a79 Merge pull request `#42950`_ from Ch3LL/2016.11.7_docs + + * a6f902db40 Add Security Notice to 2016.11.77 Release Notes + + * c0ff69f88c Merge pull request `#42836`_ from lyft/backport-utils.versions-to-2016.11 + + * 86ce7004a2 Backport salt.utils.versions from develop to 2016.11 + + * 64a79dd5ac Merge pull request `#42919`_ from rallytime/`bp-42871`_ + + * 4e46c968e6 Update joyent.rst + + * bea8ec1098 Merge pull request `#42918`_ from rallytime/`bp-42848`_ + + * cdb48126f7 Make lint happier. + + * 62eca9b00b Execute fire_master asynchronously in the main minion thread. + + * 52bce329cb Merge pull request `#42861`_ from twangboy/win_pkg_install_salt + + * 0d3789f0c6 Fix pkg.install salt-minion using salt-call + + * b9f4f87aa5 Merge pull request `#42798`_ from s-sebastian/2016.11 + + * 1cc86592ed Update return data before calling returners + +- **PR** `#42884`_: (*Giandom*) Convert to dict type the pillar string value passed from slack + @ *2017-08-16T22:30:43Z* + + - **ISSUE** `#42842`_: (*Giandom*) retreive kwargs passed with slack engine + | refs: `#42884`_ + * 82be9dceb6 Merge pull request `#42884`_ from Giandom/2017.7.1-fix-slack-engine-pillar-args + * 80fd733c99 Update slack.py + +- **PR** `#42963`_: (*twangboy*) Fix `unit.test_fileclient` for Windows + @ *2017-08-16T14:18:18Z* + + * 42bd553b98 Merge pull request `#42963`_ from twangboy/win_unit_test_fileclient + * e9febe4893 Fix unit.test_fileclient + +- **PR** `#42964`_: (*twangboy*) Fix `salt.utils.recursive_copy` for Windows + @ *2017-08-16T14:17:27Z* + + * 7dddeeea8d Merge pull request `#42964`_ from twangboy/win_fix_recursive_copy + * 121cd4ef81 Fix `salt.utils.recursive_copy` for Windows + +- **PR** `#42946`_: (*mirceaulinic*) extension_modules should default to $CACHE_DIR/proxy/extmods + @ *2017-08-15T21:26:36Z* + + - **ISSUE** `#42943`_: (*mirceaulinic*) `extension_modules` defaulting to `/var/cache/minion` although running under proxy minion + | refs: `#42946`_ + * 6da4d1d95e Merge pull request `#42946`_ from cloudflare/px_extmods_42943 + * 73f9135340 extension_modules should default to /proxy/extmods + +- **PR** `#42945`_: (*Ch3LL*) [2017.7] Add clean_id function to salt.utils.verify.py + | refs: `#43035`_ + @ *2017-08-15T18:04:20Z* + + * 95645d49f9 Merge pull request `#42945`_ from Ch3LL/2017.7.0_follow_up + * dcd92042e3 remove extra doc + + * 693a504ef0 update release notes with cve number + +- **PR** `#42812`_: (*terminalmage*) Update custom YAML loader tests to properly test unicode literals + @ *2017-08-15T17:50:22Z* + + - **ISSUE** `#42427`_: (*grichmond-salt*) Issue Passing Variables created from load_json as Inline Pillar Between States + | refs: `#42435`_ + - **PR** `#42435`_: (*terminalmage*) Modify our custom YAML loader to treat unicode literals as unicode strings + | refs: `#42812`_ + * 47ff9d5627 Merge pull request `#42812`_ from terminalmage/yaml-loader-tests + * 9d8486a894 Add test for custom YAML loader with unicode literal strings + + * a0118bcece Remove bytestrings and use textwrap.dedent for readability + +- **PR** `#42953`_: (*Ch3LL*) [2017.7] Bump latest and previous versions + @ *2017-08-15T17:23:28Z* + + * 5d0c2198ac Merge pull request `#42953`_ from Ch3LL/latest_2017.7 + * cbecf65823 [2017.7] Bump latest and previous versions + +- **PR** `#42951`_: (*Ch3LL*) Add Security Notice to 2017.7.1 Release Notes + @ *2017-08-15T16:49:56Z* + + * 730e71db17 Merge pull request `#42951`_ from Ch3LL/2017.7.1_docs + * 1d8f827c58 Add Security Notice to 2017.7.1 Release Notes + +- **PR** `#42868`_: (*carsonoid*) Stub out required functions in redis_cache + @ *2017-08-15T14:33:54Z* + + * c1c8cb9bfa Merge pull request `#42868`_ from carsonoid/redisjobcachefix + * 885bee2a7d Stub out required functions for redis cache + +- **PR** `#42810`_: (*amendlik*) Ignore error values when listing Windows SNMP community strings + @ *2017-08-15T03:55:15Z* + + * e192d6e0af Merge pull request `#42810`_ from amendlik/win-snmp-community + * dc20e4651b Ignore error values when listing Windows SNMP community strings + +- **PR** `#42920`_: (*cachedout*) pid_race + @ *2017-08-15T03:49:10Z* + + * a1817f1de3 Merge pull request `#42920`_ from cachedout/pid_race + * 5e930b8cbd If we catch the pid file in a transistory state, return None + +- **PR** `#42925`_: (*terminalmage*) Add debug logging to troubleshoot test failures + @ *2017-08-15T03:47:51Z* + + * 11a33fe692 Merge pull request `#42925`_ from terminalmage/f26-debug-logging + * 8165f46165 Add debug logging to troubleshoot test failures + +- **PR** `#42913`_: (*twangboy*) Change service shutdown timeouts for salt-minion service (Windows) + @ *2017-08-14T20:55:24Z* + + * a537197030 Merge pull request `#42913`_ from twangboy/win_change_timeout + * ffb23fbe47 Remove the line that wipes out the cache + + * a3becf8342 Change service shutdown timeouts + +- **PR** `#42800`_: (*skizunov*) Fix exception when master_type=disable + @ *2017-08-14T20:53:38Z* + + * ca0555f616 Merge pull request `#42800`_ from skizunov/develop6 + * fa5822009f Fix exception when master_type=disable + +- **PR** `#42679`_: (*mirceaulinic*) Add multiprocessing option for NAPALM proxy + @ *2017-08-14T20:45:06Z* + + * 3af264b664 Merge pull request `#42679`_ from cloudflare/napalm-multiprocessing + * 9c4566db0c multiprocessing option tagged for 2017.7.2 + + * 37bca1b902 Add multiprocessing option for NAPALM proxy + + * a2565ba8e5 Add new napalm option: multiprocessing + +- **PR** `#42657`_: (*nhavens*) back-port `#42612`_ to 2017.7 + @ *2017-08-14T19:42:26Z* + + - **ISSUE** `#42611`_: (*nhavens*) selinux.boolean state does not return changes + | refs: `#42612`_ + - **PR** `#42612`_: (*nhavens*) fix for issue `#42611`_ + | refs: `#42657`_ + * 4fcdab3ae9 Merge pull request `#42657`_ from nhavens/2017.7 + * d73c4b55b7 back-port `#42612`_ to 2017.7 + +- **PR** `#42709`_: (*whiteinge*) Add token_expire_user_override link to auth runner docstring + @ *2017-08-14T19:03:06Z* + + * d2b6ce327a Merge pull request `#42709`_ from whiteinge/doc-token_expire_user_override + * c7ea631558 Add more docs on the token_expire param + + * 4a9f6ba44f Add token_expire_user_override link to auth runner docstring + +- **PR** `#42848`_: (*DmitryKuzmenko*) Execute fire_master asynchronously in the main minion thread. + | refs: `#42918`_ + @ *2017-08-14T18:28:38Z* + + - **ISSUE** `#42803`_: (*gmcwhistler*) master_type: str, not working as expected, parent salt-minion process dies. + | refs: `#42848`_ + - **ISSUE** `#42753`_: (*grichmond-salt*) SaltReqTimeout Error on Some Minions when One Master in a Multi-Master Configuration is Unavailable + | refs: `#42848`_ + * c6a7bf02e9 Merge pull request `#42848`_ from DSRCorporation/bugs/42753_mmaster_timeout + * 7f5412c19e Make lint happier. + + * ff66b7aaf0 Execute fire_master asynchronously in the main minion thread. + +- **PR** `#42911`_: (*gtmanfred*) cloud driver isn't a provider + @ *2017-08-14T17:47:16Z* + + * 6a3279ea50 Merge pull request `#42911`_ from gtmanfred/2017.7 + * 99046b441f cloud driver isn't a provider + +- **PR** `#42860`_: (*skizunov*) hash_and_stat_file should return a 2-tuple + @ *2017-08-14T15:44:54Z* + + * 4456f7383d Merge pull request `#42860`_ from skizunov/develop7 + * 5f85a03636 hash_and_stat_file should return a 2-tuple + +- **PR** `#42889`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-14T14:16:20Z* + + - **ISSUE** `#41976`_: (*abulford*) dockerng network states do not respect test=True + | refs: `#41977`_ `#41977`_ + - **ISSUE** `#41770`_: (*Ch3LL*) NPM v5 incompatible with salt.modules.cache_list + | refs: `#42856`_ + - **ISSUE** `#475`_: (*thatch45*) Change yaml to use C bindings + | refs: `#42856`_ + - **PR** `#42886`_: (*sarcasticadmin*) Adding missing output flags to salt cli docs + - **PR** `#42882`_: (*gtmanfred*) make sure cmd is not run when npm isn't installed + - **PR** `#42877`_: (*terminalmage*) Add virtual func for cron state module + - **PR** `#42864`_: (*whiteinge*) Make syndic_log_file respect root_dir setting + - **PR** `#42859`_: (*terminalmage*) Add note about git CLI requirement for GitPython to GitFS tutorial + - **PR** `#42856`_: (*gtmanfred*) skip cache_clean test if npm version is >= 5.0.0 + - **PR** `#42788`_: (*amendlik*) Remove waits and retries from Saltify deployment + - **PR** `#41977`_: (*abulford*) Fix dockerng.network_* ignoring of tests=True + * c6ca7d639f Merge pull request `#42889`_ from rallytime/merge-2017.7 + * fb7117f2ac Use salt.utils.versions.LooseVersion instead of distutils + + * 29ff19c587 Merge branch '2016.11' into '2017.7' + + * c15d0034fe Merge pull request `#41977`_ from redmatter/fix-dockerng-network-ignores-test + + * 1cc2aa503a Fix dockerng.network_* ignoring of tests=True + + * 3b9c3c5671 Merge pull request `#42886`_ from sarcasticadmin/adding_docs_salt_outputs + + * 744bf954ff Adding missing output flags to salt cli + + * e5b98c8a88 Merge pull request `#42882`_ from gtmanfred/2016.11 + + * da3402a53d make sure cmd is not run when npm isn't installed + + * 5962c9588b Merge pull request `#42788`_ from amendlik/saltify-timeout + + * 928b523797 Remove waits and retries from Saltify deployment + + * 227ecddd13 Merge pull request `#42877`_ from terminalmage/add-cron-state-virtual + + * f1de196740 Add virtual func for cron state module + + * ab9f6cef33 Merge pull request `#42859`_ from terminalmage/gitpython-git-cli-note + + * 35e05c9515 Add note about git CLI requirement for GitPython to GitFS tutorial + + * 682b4a8d14 Merge pull request `#42856`_ from gtmanfred/2016.11 + + * b458b89fb8 skip cache_clean test if npm version is >= 5.0.0 + + * 01ea854029 Merge pull request `#42864`_ from whiteinge/syndic-log-root_dir + + * 4b1f55da9c Make syndic_log_file respect root_dir setting + +- **PR** `#42898`_: (*mirceaulinic*) Minor eos doc correction + @ *2017-08-14T13:42:21Z* + + * 4b6fe2ee59 Merge pull request `#42898`_ from mirceaulinic/patch-11 + * 93be79a135 Index eos under the installation instructions list + + * f903e7bc39 Minor eos doc correction + +- **PR** `#42883`_: (*rallytime*) Fix failing boto tests + | refs: `#42959`_ + @ *2017-08-11T20:29:12Z* + + * 1764878754 Merge pull request `#42883`_ from rallytime/fix-boto-tests + * 6a7bf99848 Lint fix: add missing space + + * 43643227c6 Skip 2 failing tests in Python 3 due to upstream bugs + + * 7f46603e9c Update account id value in boto_secgroup module unit test + + * 7c1d493fdd @mock_elb needs to be changed to @mock_elb_deprecated as well + + * 3055e17ed5 Replace @mock_ec2 calls with @mock_ec2_deprecated calls + +- **PR** `#42885`_: (*terminalmage*) Move weird tearDown test to an actual tearDown + @ *2017-08-11T19:14:42Z* + + * b21778efac Merge pull request `#42885`_ from terminalmage/fix-f26-tests + * 462d653082 Move weird tearDown test to an actual tearDown + +- **PR** `#42887`_: (*rallytime*) Remove extraneous "deprecated" notation + @ *2017-08-11T18:34:25Z* + + - **ISSUE** `#42870`_: (*boltronics*) webutil.useradd marked as deprecated:: 2016.3.0 by mistake? + | refs: `#42887`_ + * 9868ab6f3b Merge pull request `#42887`_ from rallytime/`fix-42870`_ + * 71e7581a2d Remove extraneous "deprecated" notation + +- **PR** `#42881`_: (*gtmanfred*) fix vmware for python 3.4.2 in salt.utils.vmware + @ *2017-08-11T17:52:29Z* + + * da71f2a11b Merge pull request `#42881`_ from gtmanfred/vmware + * 05ecc6ac8d fix vmware for python 3.4.2 in salt.utils.vmware + +- **PR** `#42845`_: (*brejoc*) API changes for Kubernetes version 2.0.0 + | refs: `#43039`_ + @ *2017-08-11T14:04:30Z* + + - **ISSUE** `#42843`_: (*brejoc*) Kubernetes module won't work with Kubernetes Python client > 1.0.2 + | refs: `#42845`_ + * c7750d5717 Merge pull request `#42845`_ from brejoc/updates-for-kubernetes-2.0.0 + * 81674aa88a Version info in :optdepends: not needed anymore + + * 71995505bc Not depending on specific K8s version anymore + + * d8f7d7a7c0 API changes for Kubernetes version 2.0.0 + +- **PR** `#42678`_: (*frankiexyz*) Add eos.rst in the installation guide + @ *2017-08-11T13:58:37Z* + + * 459fdedc67 Merge pull request `#42678`_ from frankiexyz/2017.7 + * 1598571f52 Add eos.rst in the installation guide + +- **PR** `#42778`_: (*gtmanfred*) make sure to use the correct out_file + @ *2017-08-11T13:44:48Z* + + - **ISSUE** `#42646`_: (*gmacon*) SPM fails to install multiple packages + | refs: `#42778`_ + * 4ce96eb1a1 Merge pull request `#42778`_ from gtmanfred/spm + * 7ef691e8da make sure to use the correct out_file + +- **PR** `#42857`_: (*gtmanfred*) use older name if _create_unverified_context is unvailable + @ *2017-08-11T13:37:59Z* + + - **ISSUE** `#480`_: (*zyluo*) PEP8 types clean-up + | refs: `#42857`_ + * 3d05d89e09 Merge pull request `#42857`_ from gtmanfred/vmware + * c1f673eca4 use older name if _create_unverified_context is unvailable + +- **PR** `#42866`_: (*twangboy*) Change to GitPython version 2.1.1 + @ *2017-08-11T13:23:52Z* + + * 7e8cfff21c Merge pull request `#42866`_ from twangboy/osx_downgrade_gitpython + * 28053a84a6 Change GitPython version to 2.1.1 + +- **PR** `#42855`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-10T21:40:39Z* + + - **ISSUE** `#42747`_: (*whiteinge*) Outputters mutate data which can be a problem for Runners and perhaps other things + | refs: `#42748`_ + - **ISSUE** `#42731`_: (*infoveinx*) http.query template_data render exception + | refs: `#42804`_ + - **ISSUE** `#42690`_: (*ChristianBeer*) git.latest state with remote set fails on first try + | refs: `#42694`_ + - **ISSUE** `#42683`_: (*rgcosma*) Gluster module broken in 2017.7 + | refs: `#42806`_ + - **ISSUE** `#42600`_: (*twangboy*) Unable to set 'Not Configured' using win_lgpo execution module + | refs: `#42744`_ `#42794`_ `#42795`_ + - **PR** `#42851`_: (*terminalmage*) Backport `#42651`_ to 2016.11 + - **PR** `#42838`_: (*twangboy*) Document requirements for win_pki + - **PR** `#42829`_: (*twangboy*) Fix passing version in pkgs as shown in docs + - **PR** `#42826`_: (*terminalmage*) Fix misspelling of "versions" + - **PR** `#42806`_: (*rallytime*) Update doc references in glusterfs.volume_present + - **PR** `#42805`_: (*rallytime*) Back-port `#42552`_ to 2016.11 + - **PR** `#42804`_: (*rallytime*) Back-port `#42784`_ to 2016.11 + - **PR** `#42795`_: (*lomeroe*) backport `#42744`_ to 2016.11 + - **PR** `#42786`_: (*Ch3LL*) Fix typo for template_dict in http docs + - **PR** `#42784`_: (*gtmanfred*) only read file if ret is not a string in http.query + | refs: `#42804`_ + - **PR** `#42764`_: (*amendlik*) Fix infinite loop with salt-cloud and Windows nodes + - **PR** `#42748`_: (*whiteinge*) Workaround Orchestrate problem that highstate outputter mutates data + - **PR** `#42744`_: (*lomeroe*) fix `#42600`_ in develop + | refs: `#42794`_ `#42795`_ + - **PR** `#42694`_: (*gtmanfred*) allow adding extra remotes to a repository + - **PR** `#42651`_: (*gtmanfred*) python2- prefix for fedora 26 packages + - **PR** `#42552`_: (*remijouannet*) update consul module following this documentation https://www.consul.… + | refs: `#42805`_ + * 3ce18637be Merge pull request `#42855`_ from rallytime/merge-2017.7 + * 08bbcf5790 Merge branch '2016.11' into '2017.7' + + * 2dde1f77e9 Merge pull request `#42851`_ from terminalmage/`bp-42651`_ + + * a3da86eea8 fix syntax + + * 6ecdbcec1d make sure names are correct + + * f83b553d6e add py3 for versionlock + + * 21934f61bb python2- prefix for fedora 26 packages + + * c746f79a3a Merge pull request `#42806`_ from rallytime/`fix-42683`_ + + * 8c8640d6b8 Update doc references in glusterfs.volume_present + + * 27a8a2695a Merge pull request `#42829`_ from twangboy/win_pkg_fix_install + + * 83b9b230cd Add winrepo to docs about supporting versions in pkgs + + * 81fefa6e67 Add ability to pass version in pkgs list + + * 3c3ac6aeb2 Merge pull request `#42838`_ from twangboy/win_doc_pki + + * f0a1d06b46 Standardize PKI Client + + * 7de687aa57 Document requirements for win_pki + + * b3e2ae3c58 Merge pull request `#42805`_ from rallytime/`bp-42552`_ + + * 5a91c1f2d1 update consul module following this documentation https://www.consul.io/api/acl.html + + * d2ee7934ed Merge pull request `#42804`_ from rallytime/`bp-42784`_ + + * dbd29e4aaa only read file if it is not a string + + * 4cbf8057b3 Merge pull request `#42826`_ from terminalmage/fix-spelling + + * 00f93142e4 Fix misspelling of "versions" + + * de997edd90 Merge pull request `#42786`_ from Ch3LL/fix_typo + + * 90a2fb66a2 Fix typo for template_dict in http docs + + * bf6153ebe5 Merge pull request `#42795`_ from lomeroe/`bp-42744`__201611 + + * 695f8c1ae4 fix `#42600`_ in develop + + * 61fad97286 Merge pull request `#42748`_ from whiteinge/save-before-output + + * de60b77c82 Workaround Orchestrate problem that highstate outputter mutates data + + * a4e3e7e786 Merge pull request `#42764`_ from amendlik/cloud-win-loop + + * f3dcfca4e0 Fix infinite loops on failed Windows deployments + + * da85326ad4 Merge pull request `#42694`_ from gtmanfred/2016.11 + + * 1a0457af51 allow adding extra remotes to a repository + +- **PR** `#42808`_: (*terminalmage*) Fix regression in yum/dnf version specification + @ *2017-08-10T15:59:22Z* + + - **ISSUE** `#42774`_: (*rossengeorgiev*) pkg.installed succeeds, but fails when you specify package version + | refs: `#42808`_ + * f954f4f33a Merge pull request `#42808`_ from terminalmage/issue42774 + * c69f17dd18 Add integration test for `#42774`_ + + * 78d826dd14 Fix regression in yum/dnf version specification + +- **PR** `#42807`_: (*rallytime*) Update modules --> states in kubernetes doc module + @ *2017-08-10T14:10:40Z* + + - **ISSUE** `#42639`_: (*amnonbc*) k8s module needs a way to manage configmaps + | refs: `#42807`_ + * d9b0f44885 Merge pull request `#42807`_ from rallytime/`fix-42639`_ + * 152eb88d9f Update modules --> states in kubernetes doc module + +- **PR** `#42841`_: (*Mapel88*) Fix bug `#42818`_ in win_iis module + @ *2017-08-10T13:44:21Z* + + - **ISSUE** `#42818`_: (*Mapel88*) Bug in win_iis module - "create_cert_binding" + | refs: `#42841`_ + * b8c7bda68d Merge pull request `#42841`_ from Mapel88/patch-1 + * 497241fbcb Fix bug `#42818`_ in win_iis module + +- **PR** `#42782`_: (*rallytime*) Add a cmp compatibility function utility + @ *2017-08-09T22:37:29Z* + + - **ISSUE** `#42697`_: (*Ch3LL*) [Python3] NameError when running salt-run manage.versions + | refs: `#42782`_ + * 135f9522d0 Merge pull request `#42782`_ from rallytime/`fix-42697`_ + * d707f94863 Update all other calls to "cmp" function + + * 5605104285 Add a cmp compatibility function utility + +- **PR** `#42784`_: (*gtmanfred*) only read file if ret is not a string in http.query + | refs: `#42804`_ + @ *2017-08-08T17:20:13Z* + + * ac752223ad Merge pull request `#42784`_ from gtmanfred/http + * d397c90e92 only read file if it is not a string + +- **PR** `#42794`_: (*lomeroe*) Backport `#42744`_ to 2017.7 + @ *2017-08-08T17:16:31Z* + + - **ISSUE** `#42600`_: (*twangboy*) Unable to set 'Not Configured' using win_lgpo execution module + | refs: `#42744`_ `#42794`_ `#42795`_ + - **PR** `#42744`_: (*lomeroe*) fix `#42600`_ in develop + | refs: `#42794`_ `#42795`_ + * 44995b1abf Merge pull request `#42794`_ from lomeroe/`bp-42744`_ + * 0acffc6df5 fix `#42600`_ in develop + +- **PR** `#42708`_: (*cro*) Do not change the arguments of the function when memoizing + @ *2017-08-08T13:47:01Z* + + - **ISSUE** `#42707`_: (*cro*) Service module and state fails on FreeBSD + | refs: `#42708`_ + * dcf474c47c Merge pull request `#42708`_ from cro/dont_change_args_during_memoize + * a260e913b5 Do not change the arguments of the function when memoizing + +- **PR** `#42783`_: (*rallytime*) Sort lists before comparing them in python 3 unit test + @ *2017-08-08T13:25:15Z* + + - **PR** `#42206`_: (*rallytime*) [PY3] Fix test that is flaky in Python 3 + | refs: `#42783`_ + * ddb671b8fe Merge pull request `#42783`_ from rallytime/fix-flaky-py3-test + * 998834fbac Sort lists before compairing them in python 3 unit test + +- **PR** `#42721`_: (*hibbert*) Allow no ip sg + @ *2017-08-07T22:07:18Z* + + * d69822fe93 Merge pull request `#42721`_ from hibbert/allow_no_ip_sg + * f58256802a allow_no_ip_sg: Allow user to not supply ipaddress or securitygroups when running boto_efs.create_mount_target + +- **PR** `#42769`_: (*terminalmage*) Fix domainname parameter input translation + @ *2017-08-07T20:46:07Z* + + - **ISSUE** `#42538`_: (*marnovdm*) docker_container.running issue since 2017.7.0: passing domainname gives Error 500: json: cannot unmarshal array into Go value of type string + | refs: `#42769`_ + * bf7938fbe0 Merge pull request `#42769`_ from terminalmage/issue42538 + * 665de2d1f9 Fix domainname parameter input translation + +- **PR** `#42388`_: (*The-Loeki*) pillar.items pillar_env & pillar_override are never used + @ *2017-08-07T17:51:48Z* + + * 7bf2cdb363 Merge pull request `#42388`_ from The-Loeki/patch-1 + * 664f4b577b pillar.items pillar_env & pillar_override are never used + +- **PR** `#42770`_: (*rallytime*) [2017.7] Merge forward from 2017.7.1 to 2017.7 + @ *2017-08-07T16:21:45Z* + + * 9a8c9ebffc Merge pull request `#42770`_ from rallytime/merge-2017.7.1-into-2017.7 + * 6d17c9d227 Merge branch '2017.7.1' into '2017.7' + +- **PR** `#42768`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-08-07T16:21:17Z* + + - **ISSUE** `#42686`_: (*gilbsgilbs*) Unable to set multiple RabbitMQ tags + | refs: `#42693`_ `#42693`_ + - **ISSUE** `#42642`_: (*githubcdr*) state.augeas + | refs: `#42669`_ `#43202`_ + - **ISSUE** `#41433`_: (*sbojarski*) boto_cfn.present fails when reporting error for failed state + | refs: `#42574`_ + - **PR** `#42693`_: (*gilbsgilbs*) Fix RabbitMQ tags not properly set. + - **PR** `#42669`_: (*garethgreenaway*) [2016.11] Fixes to augeas module + - **PR** `#42655`_: (*whiteinge*) Reenable cpstats for rest_cherrypy + - **PR** `#42629`_: (*xiaoanyunfei*) tornado api + - **PR** `#42623`_: (*terminalmage*) Fix unicode constructor in custom YAML loader + - **PR** `#42574`_: (*sbojarski*) Fixed error reporting in "boto_cfn.present" function. + - **PR** `#33806`_: (*cachedout*) Work around upstream cherrypy bug + | refs: `#42655`_ + * c765e528d0 Merge pull request `#42768`_ from rallytime/merge-2017.7 + * 0f75482c37 Merge branch '2016.11' into '2017.7' + + * 7b2119feee Merge pull request `#42669`_ from garethgreenaway/42642_2016_11_augeas_module_fix + + * 24413084e2 Updating the call to shlex_split to pass the posix=False argument so that quotes are preserved. + + * 30725769ed Merge pull request `#42629`_ from xiaoanyunfei/tornadoapi + + * 1e13383b95 tornado api + + * f0f00fcee1 Merge pull request `#42655`_ from whiteinge/rest_cherrypy-reenable-stats + + * deb6316d67 Fix lint errors + + * 6bd91c8b03 Reenable cpstats for rest_cherrypy + + * 21cf15f9c3 Merge pull request `#42693`_ from gilbsgilbs/fix-rabbitmq-tags + + * 78fccdc7e2 Cast to list in case tags is a tuple. + + * 287b57b5c5 Fix RabbitMQ tags not properly set. + + * f2b0c9b4fa Merge pull request `#42574`_ from sbojarski/boto-cfn-error-reporting + + * 5c945f10c2 Fix debug message in "boto_cfn._validate" function. + + * 181a1beecc Fixed error reporting in "boto_cfn.present" function. + + * bc1effc4f2 Merge pull request `#42623`_ from terminalmage/fix-unicode-constructor + + * fcf45889dd Fix unicode constructor in custom YAML loader + +- **PR** `#42651`_: (*gtmanfred*) python2- prefix for fedora 26 packages + @ *2017-08-07T14:35:04Z* + + * 3f5827f61e Merge pull request `#42651`_ from gtmanfred/2017.7 + * 8784899942 fix syntax + + * 178cc1bd81 make sure names are correct + + * f179b97b52 add py3 for versionlock + + * 1958d18634 python2- prefix for fedora 26 packages + +- **PR** `#42689`_: (*hibbert*) boto_efs_fix_tags: Fix `#42688`_ invalid type for parameter tags + @ *2017-08-06T17:47:07Z* + + - **ISSUE** `#42688`_: (*hibbert*) salt.modules.boto_efs module Invalid type for parameter Tags - type: , valid types: , + | refs: `#42689`_ + * 791248e398 Merge pull request `#42689`_ from hibbert/boto_efs_fix_tags + * 157fb28851 boto_efs_fix_tags: Fix `#42688`_ invalid type for parameter tags + +- **PR** `#42745`_: (*terminalmage*) docker.compare_container: treat null oom_kill_disable as False + @ *2017-08-05T15:28:20Z* + + - **ISSUE** `#42705`_: (*hbruch*) salt.states.docker_container.running replaces container on subsequent runs if oom_kill_disable unsupported + | refs: `#42745`_ + * 1b3407649b Merge pull request `#42745`_ from terminalmage/issue42705 + * 710bdf6115 docker.compare_container: treat null oom_kill_disable as False + +- **PR** `#42704`_: (*whiteinge*) Add import to work around likely multiprocessing scoping bug + @ *2017-08-04T23:03:13Z* + + - **ISSUE** `#42649`_: (*tehsu*) local_batch no longer working in 2017.7.0, 500 error + | refs: `#42704`_ + * 5d5b22021b Merge pull request `#42704`_ from whiteinge/expr_form-warn-scope-bug + * 03b675a618 Add import to work around likely multiprocessing scoping bug + +- **PR** `#42743`_: (*kkoppel*) Fix docker.compare_container for containers with links + @ *2017-08-04T16:00:33Z* + + - **ISSUE** `#42741`_: (*kkoppel*) docker_container.running keeps re-creating containers with links to other containers + | refs: `#42743`_ + * 888e954e73 Merge pull request `#42743`_ from kkoppel/fix-issue-42741 + * de6d3cc0cf Update dockermod.py + + * 58b997c67f Added a helper function that removes container names from container HostConfig:Links values to enable compare_container() to make the correct decision about differences in links. + +- **PR** `#42710`_: (*gtmanfred*) use subtraction instead of or + @ *2017-08-04T15:14:14Z* + + - **ISSUE** `#42668`_: (*UtahDave*) Minions under syndics don't respond to MoM + | refs: `#42710`_ + - **ISSUE** `#42545`_: (*paul-mulvihill*) Salt-api failing to return results for minions connected via syndics. + | refs: `#42710`_ + * 03a7f9bbee Merge pull request `#42710`_ from gtmanfred/syndic + * 683561a711 use subtraction instead of or + +- **PR** `#42670`_: (*gtmanfred*) render kubernetes docs + @ *2017-08-03T20:30:56Z* + + * 005182b6a1 Merge pull request `#42670`_ from gtmanfred/kube + * bca17902f5 add version added info + + * 4bbfc751ae render kubernetes docs + +- **PR** `#42712`_: (*twangboy*) Remove master config file from minion-only installer + @ *2017-08-03T20:25:02Z* + + * df354ddabf Merge pull request `#42712`_ from twangboy/win_build_pkg + * 8604312a7b Remove master conf in minion install + +- **PR** `#42714`_: (*cachedout*) Set fact gathering style to 'old' for test_junos + @ *2017-08-03T13:39:40Z* + + * bb1dfd4a42 Merge pull request `#42714`_ from cachedout/workaround_jnpr_test_bug + * 834d6c605e Set fact gathering style to 'old' for test_junos + +- **PR** `#42481`_: (*twangboy*) Fix `unit.test_crypt` for Windows + @ *2017-08-01T18:10:50Z* + + * 4c1d931654 Merge pull request `#42481`_ from twangboy/win_unit_test_crypt + * 102509029e Remove chown mock, fix path seps + +- **PR** `#42654`_: (*morganwillcock*) Disable ZFS in the core grain for NetBSD + @ *2017-08-01T17:52:36Z* + + * 8bcefb5e67 Merge pull request `#42654`_ from morganwillcock/zfsgrain + * 49023deb94 Disable ZFS grain on NetBSD + +- **PR** `#42453`_: (*gtmanfred*) don't pass user to makedirs on windows + @ *2017-07-31T19:57:57Z* + + - **ISSUE** `#42421`_: (*bartuss7*) archive.extracted on Windows failed when dir not exist + | refs: `#42453`_ + * 5baf2650fc Merge pull request `#42453`_ from gtmanfred/makedirs + * 559d432930 fix tests + + * afa7a13ce3 use logic from file.directory for makedirs + +- **PR** `#42603`_: (*twangboy*) Add runas_passwd as a global for states + @ *2017-07-31T19:49:49Z* + + * fb81e78f71 Merge pull request `#42603`_ from twangboy/win_fix_runas + * 0c9e40012b Remove deprecation, add logic to state.py + + * 464ec34713 Fix another instance of runas_passwd + + * 18d6ce4d55 Add global vars to cmd.call + + * 6c71ab6f80 Remove runas and runas_password after state run + + * 4ea264e3db Change to runas_password in docs + + * 61aba35718 Deprecate password, make runas_password a named arg + + * 41f0f75a06 Add new var to list, change to runas_password + + * b9c91eba60 Add runas_passwd as a global for states + +- **PR** `#42541`_: (*Mareo*) Avoid confusing warning when using file.line + @ *2017-07-31T19:41:58Z* + + * 75ba23c253 Merge pull request `#42541`_ from epita/fix-file-line-warning + * 2fd172e07b Avoid confusing warning when using file.line + +- **PR** `#42625`_: (*twangboy*) Fix the list function in the win_wua execution module + @ *2017-07-31T19:27:16Z* + + * 3d328eba80 Merge pull request `#42625`_ from twangboy/fix_win_wua + * 1340c15ce7 Add general usage instructions + + * 19f34bda55 Fix docs, formatting + + * b17495c9c8 Fix problem with list when install=True + +- **PR** `#42602`_: (*garethgreenaway*) Use superseded and deprecated configuration from pillar + @ *2017-07-31T18:53:06Z* + + - **ISSUE** `#42514`_: (*rickh563*) `module.run` does not work as expected in 2017.7.0 + | refs: `#42602`_ + * 25094ad9b1 Merge pull request `#42602`_ from garethgreenaway/42514_2017_7_superseded_deprecated_from_pillar + * 2e132daa73 Slight update to formatting + + * 74bae13939 Small update to something I missed in the first commit. Updating tests to also test for pillar values. + + * 928a4808dd Updating the superseded and deprecated decorators to work when specified as pillar values. + +- **PR** `#42621`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-07-28T19:45:51Z* + + - **ISSUE** `#42456`_: (*gdubroeucq*) Use yum lib + | refs: `#42586`_ + - **ISSUE** `#41982`_: (*abulford*) dockerng.network_* matches too easily + | refs: `#41988`_ `#41988`_ `#42006`_ `#42006`_ + - **PR** `#42586`_: (*gdubroeucq*) [Fix] yumpkg.py: add option to the command "check-update" + - **PR** `#42515`_: (*gtmanfred*) Allow not interpreting backslashes in the repl + - **PR** `#41988`_: (*abulford*) Fix dockerng.network_* name matching + | refs: `#42006`_ + * b7cd30d3ee Merge pull request `#42621`_ from rallytime/merge-2017.7 + * 58dcb58a47 Merge branch '2016.11' into '2017.7' + + * cbf752cd73 Merge pull request `#42515`_ from gtmanfred/backslash + + * cc4e45656d Allow not interpreting backslashes in the repl + + * 549495831f Merge pull request `#42586`_ from gdubroeucq/2016.11 + + * 9c0b5cc1d6 Remove extra newline + + * d2ef4483e4 yumpkg.py: clean + + * a96f7c09e0 yumpkg.py: add option to the command "check-update" + + * 6b45debf28 Merge pull request `#41988`_ from redmatter/fix-dockerng-network-matching + + * 9eea796da8 Add regression tests for `#41982`_ + + * 3369f0072f Fix broken unit test test_network_absent + + * 0ef6cf634c Add trace logging of dockerng.networks result + + * 515c612808 Fix dockerng.network_* name matching + +- **PR** `#42618`_: (*rallytime*) Back-port `#41690`_ to 2017.7 + @ *2017-07-28T19:27:11Z* + + - **ISSUE** `#34245`_: (*Talkless*) ini.options_present always report state change + | refs: `#41690`_ + - **PR** `#41690`_: (*m03*) Fix issue `#34245`_ with ini.options_present reporting changes + | refs: `#42618`_ + * d48749b476 Merge pull request `#42618`_ from rallytime/`bp-41690`_ + * 22c6a7c7ff Improve output precision + + * ee4ea6b860 Fix `#34245`_ ini.options_present reporting changes + +- **PR** `#42619`_: (*rallytime*) Back-port `#42589`_ to 2017.7 + @ *2017-07-28T19:26:36Z* + + - **ISSUE** `#42588`_: (*ixs*) salt-ssh fails when using scan roster and detected minions are uncached + | refs: `#42589`_ + - **PR** `#42589`_: (*ixs*) Fix ssh-salt calls with scan roster for uncached clients + | refs: `#42619`_ + * e671242a4f Merge pull request `#42619`_ from rallytime/`bp-42589`_ + * cd5eb93903 Fix ssh-salt calls with scan roster for uncached clients + +- **PR** `#42006`_: (*abulford*) Fix dockerng.network_* name matching + @ *2017-07-28T15:52:52Z* + + - **ISSUE** `#41982`_: (*abulford*) dockerng.network_* matches too easily + | refs: `#41988`_ `#41988`_ `#42006`_ `#42006`_ + - **PR** `#41988`_: (*abulford*) Fix dockerng.network_* name matching + | refs: `#42006`_ + * 7d385f8bdc Merge pull request `#42006`_ from redmatter/fix-dockerng-network-matching-2017.7 + * f83960c02a Lint: Remove extra line at end of file. + + * c7d364ec56 Add regression tests for `#41982`_ + + * d31f2913bd Fix broken unit test test_network_absent + + * d42f781c64 Add trace logging of docker.networks result + + * 8c00c63b55 Fix dockerng.network_* name matching + +- **PR** `#42616`_: (*amendlik*) Sync cloud modules + @ *2017-07-28T15:40:36Z* + + - **ISSUE** `#12587`_: (*Katafalkas*) salt-cloud custom functions/actions + | refs: `#42616`_ + * ee8aee1496 Merge pull request `#42616`_ from amendlik/sync-clouds + * ab21bd9b5b Sync cloud modules when saltutil.sync_all is run + +- **PR** `#42601`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-07-27T22:32:07Z* + + - **ISSUE** `#1036125`_: (**) + - **ISSUE** `#42477`_: (*aikar*) Invalid ssh_interface value prevents salt-cloud provisioning without reason of why + | refs: `#42479`_ + - **ISSUE** `#42405`_: (*felrivero*) The documentation is incorrectly compiled (PILLAR section) + | refs: `#42516`_ + - **ISSUE** `#42403`_: (*astronouth7303*) [2017.7] Pillar empty when state is applied from orchestrate + | refs: `#42433`_ + - **ISSUE** `#42375`_: (*dragonpaw*) salt.modules.*.__virtualname__ doens't work as documented. + | refs: `#42523`_ `#42958`_ + - **ISSUE** `#42371`_: (*tsaridas*) Minion unresponsive after trying to failover + | refs: `#42387`_ + - **ISSUE** `#41955`_: (*root360-AndreasUlm*) rabbitmq 3.6.10 changed output => rabbitmq-module broken + | refs: `#41968`_ + - **ISSUE** `#23516`_: (*dkiser*) BUG: cron job scheduler sporadically works + | refs: `#42077`_ + - **PR** `#42573`_: (*rallytime*) Back-port `#42433`_ to 2016.11 + - **PR** `#42571`_: (*twangboy*) Avoid loading system PYTHON* environment vars + - **PR** `#42551`_: (*binocvlar*) Remove '-s' (--script) argument to parted within align_check function + - **PR** `#42527`_: (*twangboy*) Document changes to Windows Update in Windows 10/Server 2016 + - **PR** `#42523`_: (*rallytime*) Add a mention of the True/False returns with __virtual__() + - **PR** `#42516`_: (*rallytime*) Add info about top file to pillar walk-through example to include edit.vim + - **PR** `#42479`_: (*gtmanfred*) validate ssh_interface for ec2 + - **PR** `#42433`_: (*terminalmage*) Only force saltenv/pillarenv to be a string when not None + | refs: `#42573`_ + - **PR** `#42414`_: (*vutny*) DOCS: unify hash sum with hash type format + - **PR** `#42387`_: (*DmitryKuzmenko*) Fix race condition in usage of weakvaluedict + - **PR** `#42339`_: (*isbm*) Bugfix: Jobs scheduled to run at a future time stay pending for Salt minions (bsc`#1036125`_) + - **PR** `#42077`_: (*vutny*) Fix scheduled job run on Master if `when` parameter is a list + | refs: `#42107`_ + - **PR** `#41973`_: (*vutny*) Fix Master/Minion scheduled jobs based on Cron expressions + | refs: `#42077`_ + - **PR** `#41968`_: (*root360-AndreasUlm*) Fix rabbitmqctl output sanitizer for version 3.6.10 + * e2dd443002 Merge pull request `#42601`_ from rallytime/merge-2017.7 + * 36a1bcf8c5 Merge branch '2016.11' into '2017.7' + + * 4b16109122 Merge pull request `#42339`_ from isbm/isbm-jobs-scheduled-in-a-future-bsc1036125 + + * bbba84ce2d Bugfix: Jobs scheduled to run at a future time stay pending for Salt minions (bsc`#1036125`_) + + * 6c5a7c604a Merge pull request `#42077`_ from vutny/fix-jobs-scheduled-with-whens + + * b1960cea44 Fix scheduled job run on Master if `when` parameter is a list + + * f9cb536589 Merge pull request `#42414`_ from vutny/unify-hash-params-format + + * d1f2a93368 DOCS: unify hash sum with hash type format + + * 535c922511 Merge pull request `#42523`_ from rallytime/`fix-42375`_ + + * 685c2cced6 Add information about returning a tuple with an error message + + * fa466519c4 Add a mention of the True/False returns with __virtual__() + + * 0df0e7e749 Merge pull request `#42527`_ from twangboy/win_wua + + * 0373791f2a Correct capatlization + + * af3bcc927b Document changes to Windows Update in 10/2016 + + * 69b06586da Merge pull request `#42551`_ from binocvlar/fix-lack-of-align-check-output + + * c4fabaa192 Remove '-s' (--script) argument to parted within align_check function + + * 9e0b4e9faf Merge pull request `#42573`_ from rallytime/`bp-42433`_ + + * 0293429e24 Only force saltenv/pillarenv to be a string when not None + + * e931ed2517 Merge pull request `#42571`_ from twangboy/win_add_pythonpath + + * d55a44dd1a Avoid loading user site packages + + * 9af1eb2741 Ignore any PYTHON* environment vars already on the system + + * 4e2fb03a95 Add pythonpath to batch files and service + + * de2f397041 Merge pull request `#42387`_ from DSRCorporation/bugs/42371_KeyError_WeakValueDict + + * e721c7eee2 Don't use `key in weakvaluedict` because it could lie. + + * 641a9d7efd Merge pull request `#41968`_ from root360-AndreasUlm/fix-rabbitmqctl-output-handler + + * 76fd941d91 added tests for rabbitmq 3.6.10 output handler + + * 3602af1e1b Fix rabbitmqctl output handler for 3.6.10 + + * 66fede378a Merge pull request `#42479`_ from gtmanfred/interface + + * c32c1b2803 fix pylint + + * 99ec634c6b validate ssh_interface for ec2 + + * a925c7029a Merge pull request `#42516`_ from rallytime/`fix-42405`_ + + * e3a6717efa Add info about top file to pillar walk-through example to include edit.vim + +- **PR** `#42290`_: (*isbm*) Backport of `#42270`_ + @ *2017-07-27T22:30:05Z* + + * 22eea389fa Merge pull request `#42290`_ from isbm/isbm-module_run_parambug_42270_217 + * e38d432f90 Fix docs + + * 1e8a56eda5 Describe function tagging + + * 1d7233224b Describe function batching + + * 1391a05d5e Bugfix: syntax error in the example + + * 8c71257a4b Call unnamed parameters properly + + * 94c97a8f25 Update and correct the error message + + * ea8351362c Bugfix: args gets ignored alongside named parameters + + * 74689e3462 Add ability to use tagged functions in the same set + +- **PR** `#42251`_: (*twangboy*) Fix `unit.modules.test_win_ip` for Windows + @ *2017-07-27T19:22:03Z* + + * 4c20f1cfbb Merge pull request `#42251`_ from twangboy/unit_win_test_win_ip + * 97261bfe69 Fix win_inet_pton check for malformatted ip addresses + +- **PR** `#42255`_: (*twangboy*) Fix `unit.modules.test_win_system` for Windows + @ *2017-07-27T19:12:42Z* + + * 2985e4c0e6 Merge pull request `#42255`_ from twangboy/win_unit_test_win_system + * acc0345bc8 Fix unit tests + +- **PR** `#42528`_: (*twangboy*) Namespace `cmp_to_key` in the pkg state for Windows + @ *2017-07-27T18:30:23Z* + + * a573386260 Merge pull request `#42528`_ from twangboy/win_fix_pkg_state + * a040443fa1 Move functools import inside pylint escapes + + * 118d5134e2 Remove namespaced function `cmp_to_key` + + * a02c91adda Namespace `cmp_to_key` in the pkg state for Windows + +- **PR** `#42534`_: (*jmarinaro*) Fixes AttributeError thrown by chocolatey state + @ *2017-07-27T17:59:50Z* + + - **ISSUE** `#42521`_: (*rickh563*) chocolatey.installed broken on 2017.7.0 + | refs: `#42534`_ + * 62ae12bcd9 Merge pull request `#42534`_ from jmarinaro/2017.7 + * b242d2d6b5 Fixes AttributeError thrown by chocolatey state Fixes `#42521`_ + +- **PR** `#42557`_: (*justincbeard*) Fixing output so --force-color and --no-color override master and min… + @ *2017-07-27T17:07:33Z* + + - **ISSUE** `#40354`_: (*exc414*) CentOS 6.8 Init Script - Sed unterminated address regex + | refs: `#42557`_ + - **ISSUE** `#37312`_: (*gtmanfred*) CLI flags should take overload settings in the config files + | refs: `#42557`_ + * 52605c249d Merge pull request `#42557`_ from justincbeard/bugfix_37312 + * ee3bc6eb10 Fixing output so --force-color and --no-color override master and minion config color value + +- **PR** `#42567`_: (*skizunov*) Fix disable_ config option + @ *2017-07-27T17:05:00Z* + + * ab33517efb Merge pull request `#42567`_ from skizunov/develop3 + * 0f0b7e3e0a Fix disable_ config option + +- **PR** `#42577`_: (*twangboy*) Compile scripts with -E -s params for Salt on Mac + @ *2017-07-26T22:44:37Z* + + * 30bb941179 Merge pull request `#42577`_ from twangboy/mac_scripts + * 69d5973651 Compile scripts with -E -s params for python + +- **PR** `#42524`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-07-26T22:41:06Z* + + - **ISSUE** `#42417`_: (*clem-compilatio*) salt-cloud - openstack - "no more floating IP addresses" error - but public_ip in node + | refs: `#42509`_ + - **ISSUE** `#42413`_: (*goten4*) Invalid error message when proxy_host is set and tornado not installed + | refs: `#42424`_ + - **ISSUE** `#42357`_: (*Giandom*) Salt pillarenv problem with slack engine + | refs: `#42443`_ `#42444`_ + - **ISSUE** `#42198`_: (*shengis*) state sqlite3.row_absent fail with "parameters are of unsupported type" + | refs: `#42200`_ + - **PR** `#42509`_: (*clem-compilatio*) Fix _assign_floating_ips in openstack.py + - **PR** `#42464`_: (*garethgreenaway*) [2016.11] Small fix to modules/git.py + - **PR** `#42443`_: (*garethgreenaway*) [2016.11] Fix to slack engine + - **PR** `#42424`_: (*goten4*) Fix error message when tornado or pycurl is not installed + - **PR** `#42200`_: (*shengis*) Fix `#42198`_ + * 60cd078164 Merge pull request `#42524`_ from rallytime/merge-2017.7 + * 14d8d795f6 Merge branch '2016.11' into '2017.7' + + * 1bd5bbccc2 Merge pull request `#42509`_ from clem-compilatio/`fix-42417`_ + + * 72924b06b8 Fix _assign_floating_ips in openstack.py + + * 4bf35a74de Merge pull request `#42464`_ from garethgreenaway/2016_11_remove_tmp_identity_file + + * ff24102d51 Uncomment the line that removes the temporary identity file. + + * e2120dbd0e Merge pull request `#42443`_ from garethgreenaway/42357_pass_args_kwargs_correctly + + * 635810b3e3 Updating the slack engine in 2016.11 to pass the args and kwrags correctly to LocalClient + + * 8262cc9054 Merge pull request `#42200`_ from shengis/sqlite3_fix_row_absent_2016.11 + + * 407b8f4bb3 Fix `#42198`_ If where_args is not set, not using it in the delete request. + + * d9df97e5a3 Merge pull request `#42424`_ from goten4/2016.11 + + * 1c0574d05e Fix error message when tornado or pycurl is not installed + +- **PR** `#42575`_: (*rallytime*) [2017.7] Merge forward from 2017.7.1 to 2017.7 + @ *2017-07-26T22:39:10Z* + + * 2acde837df Merge pull request `#42575`_ from rallytime/merge-2017.7.1-into-2017.7 + * 63bb0fb2c4 pass in empty kwarg for reactor + + * 2868061ee4 update chunk, not kwarg in chunk + + * 46715e9d94 Merge branch '2017.7.1' into '2017.7' + +- **PR** `#42555`_: (*Ch3LL*) add changelog to 2017.7.1 release notes + @ *2017-07-26T14:57:43Z* + + * 1d93e92194 Merge pull request `#42555`_ from Ch3LL/7.1_add_changelog + * fb69e71093 add changelog to 2017.7.1 release notes + +- **PR** `#42266`_: (*twangboy*) Fix `unit.states.test_file` for Windows + @ *2017-07-25T20:26:32Z* + + * 07c2793e86 Merge pull request `#42266`_ from twangboy/win_unit_states_test_file + * 669aaee10d Mock file exists properly + + * a4231c9827 Fix ret mock for linux + + * 0c484f8979 Fix unit tests on Windows + +- **PR** `#42484`_: (*shengis*) Fix a potential Exception with an explicit error message + @ *2017-07-25T18:34:12Z* + + * df417eae17 Merge pull request `#42484`_ from shengis/fix-explicit-error-msg-x509-sign-remote + * 0b548c72e1 Fix a potential Exception with an explicit error message + +- **PR** `#42529`_: (*gtmanfred*) Fix joyent for python3 + @ *2017-07-25T16:37:48Z* + + - **ISSUE** `#41720`_: (*rallytime*) [Py3] Some salt-cloud drivers do not work using Python 3 + | refs: `#42529`_ + - **PR** `#396`_: (*mb0*) add file state template context and defaults + | refs: `#42529`_ + * 0f25ec76f9 Merge pull request `#42529`_ from gtmanfred/2017.7 + * b7ebb4d81a these drivers do not actually have an issue. + + * e90ca7a114 use salt encoding for joyent on 2017.7 + +- **PR** `#42465`_: (*garethgreenaway*) [2017.7] Small fix to modules/git.py + @ *2017-07-24T17:24:55Z* + + * 488457c5a0 Merge pull request `#42465`_ from garethgreenaway/2017_7_remove_tmp_identity_file + * 1920dc6079 Uncomment the line that removes the temporary identity file. + +- **PR** `#42107`_: (*vutny*) [2017.7] Fix scheduled jobs if `when` parameter is a list + @ *2017-07-24T17:04:12Z* + + - **ISSUE** `#23516`_: (*dkiser*) BUG: cron job scheduler sporadically works + | refs: `#42077`_ + - **PR** `#42077`_: (*vutny*) Fix scheduled job run on Master if `when` parameter is a list + | refs: `#42107`_ + - **PR** `#41973`_: (*vutny*) Fix Master/Minion scheduled jobs based on Cron expressions + | refs: `#42077`_ + * 4f044999fa Merge pull request `#42107`_ from vutny/2017.7-fix-jobs-scheduled-with-whens + * 905be493d4 [2017.7] Fix scheduled jobs if `when` parameter is a list + +- **PR** `#42506`_: (*terminalmage*) Add PER_REMOTE_ONLY to init_remotes call in git_pillar runner + @ *2017-07-24T16:59:21Z* + + * 6eaa0763e1 Merge pull request `#42506`_ from terminalmage/fix-git-pillar-runner + * 6352f447ce Add PER_REMOTE_ONLY to init_remotes call in git_pillar runner + +- **PR** `#42502`_: (*shengis*) Fix azurerm query to show IPs + @ *2017-07-24T15:54:45Z* + + * b88e645f10 Merge pull request `#42502`_ from shengis/fix_azurerm_request_ips + * 92f1890701 Fix azurerm query to show IPs + +- **PR** `#42180`_: (*twangboy*) Fix `unit.modules.test_timezone` for Windows + @ *2017-07-24T14:46:16Z* + + * c793d83d26 Merge pull request `#42180`_ from twangboy/win_unit_test_timezone + * 832a3d86dd Skip tests that use os.symlink on Windows + +- **PR** `#42474`_: (*whiteinge*) Cmd arg kwarg parsing test + @ *2017-07-24T14:13:30Z* + + - **PR** `#39646`_: (*terminalmage*) Handle deprecation of passing string args to load_args_and_kwargs + | refs: `#42474`_ + * 083ff00410 Merge pull request `#42474`_ from whiteinge/cmd-arg-kwarg-parsing-test + * 0cc0c0967a Lint fixes + + * 66093738c8 Add back support for string kwargs + + * 622ff5be40 Add LocalClient.cmd test for arg/kwarg parsing + + * 9f4eb80d90 Add a test.arg variant that cleans the pub kwargs by default + +- **PR** `#42425`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-07-21T22:43:41Z* + + - **ISSUE** `#42333`_: (*b3hni4*) Getting "invalid type of dict, a list is required" when trying to configure engines in master config file + | refs: `#42352`_ + - **ISSUE** `#32400`_: (*rallytime*) Document Default Config Values + | refs: `#42319`_ + - **PR** `#42370`_: (*rallytime*) [2016.11] Merge forward from 2016.3 to 2016.11 + - **PR** `#42368`_: (*twangboy*) Remove build and dist directories before install (2016.11) + - **PR** `#42360`_: (*Ch3LL*) [2016.11] Update version numbers in doc config for 2017.7.0 release + - **PR** `#42359`_: (*Ch3LL*) [2016.3] Update version numbers in doc config for 2017.7.0 release + - **PR** `#42356`_: (*meaksh*) Allow to check whether a function is available on the AliasesLoader wrapper + - **PR** `#42352`_: (*CorvinM*) Multiple documentation fixes + - **PR** `#42350`_: (*twangboy*) Fixes problem with Version and OS Release related grains on certain versions of Python (2016.11) + - **PR** `#42319`_: (*rallytime*) Add more documentation for config options that are missing from master/minion docs + * c91a5e539e Merge pull request `#42425`_ from rallytime/merge-2017.7 + * ea457aa0a5 Remove ALIASES block from template util + + * c673b64583 Merge branch '2016.11' into '2017.7' + + * 42bb1a64ca Merge pull request `#42350`_ from twangboy/win_fix_ver_grains_2016.11 + + * 8c048403d7 Detect Server OS with a desktop release name + + * 0a72e56f6b Merge pull request `#42356`_ from meaksh/2016.11-AliasesLoader-wrapper-fix + + * 915d94219e Allow to check whether a function is available on the AliasesLoader wrapper + + * 10eb7b7a79 Merge pull request `#42368`_ from twangboy/win_fix_build_2016.11 + + * a7c910c31e Remove build and dist directories before install + + * 016189f62f Merge pull request `#42370`_ from rallytime/merge-2016.11 + + * 0aa5dde1de Merge branch '2016.3' into '2016.11' + + * e9b0f20f8a Merge pull request `#42359`_ from Ch3LL/doc-update-2016.3 + + * dc85b5edbe [2016.3] Update version numbers in doc config for 2017.7.0 release + + * f06a6f1796 Merge pull request `#42360`_ from Ch3LL/doc-update-2016.11 + + * b90b7a7506 [2016.11] Update version numbers in doc config for 2017.7.0 release + + * e0595b0a0f Merge pull request `#42319`_ from rallytime/config-docs + + * b40f980632 Add more documentation for config options that are missing from master/minion docs + + * 78940400e3 Merge pull request `#42352`_ from CorvinM/issue42333 + + * 526b6ee14d Multiple documentation fixes + +- **PR** `#42444`_: (*garethgreenaway*) [2017.7] Fix to slack engine + @ *2017-07-21T22:03:48Z* + + - **ISSUE** `#42357`_: (*Giandom*) Salt pillarenv problem with slack engine + | refs: `#42443`_ `#42444`_ + * 10e4d9234b Merge pull request `#42444`_ from garethgreenaway/42357_2017_7_pass_args_kwargs_correctly + * f411cfc2a9 Updating the slack engine in 2017.7 to pass the args and kwrags correctly to LocalClient + +- **PR** `#42461`_: (*rallytime*) Bump warning version from Oxygen to Fluorine in roster cache + @ *2017-07-21T21:33:25Z* + + * 723be49fac Merge pull request `#42461`_ from rallytime/bump-roster-cache-deprecations + * c0df0137f5 Bump warning version from Oxygen to Fluorine in roster cache + +- **PR** `#42436`_: (*garethgreenaway*) Fixes to versions function in manage runner + @ *2017-07-21T19:41:07Z* + + - **ISSUE** `#42374`_: (*tyhunt99*) [2017.7.0] salt-run mange.versions throws exception if minion is offline or unresponsive + | refs: `#42436`_ + * 09521602c1 Merge pull request `#42436`_ from garethgreenaway/42374_manage_runner_minion_offline + * 0fd39498c0 Updating the versions function inside the manage runner to account for when a minion is offline and we are unable to determine it's version. + +- **PR** `#42435`_: (*terminalmage*) Modify our custom YAML loader to treat unicode literals as unicode strings + | refs: `#42812`_ + @ *2017-07-21T19:40:34Z* + + - **ISSUE** `#42427`_: (*grichmond-salt*) Issue Passing Variables created from load_json as Inline Pillar Between States + | refs: `#42435`_ + * 54193ea543 Merge pull request `#42435`_ from terminalmage/issue42427 + * 31273c7ec1 Modify our custom YAML loader to treat unicode literals as unicode strings + +- **PR** `#42399`_: (*rallytime*) Update old "ref" references to "rev" in git.detached state + @ *2017-07-21T19:38:59Z* + + - **ISSUE** `#42381`_: (*zebooka*) Git.detached broken in 2017.7.0 + | refs: `#42399`_ + - **ISSUE** `#38878`_: (*tomlaredo*) [Naming consistency] git.latest "rev" option VS git.detached "ref" option + | refs: `#38898`_ + - **PR** `#38898`_: (*terminalmage*) git.detached: rename ref to rev for consistency + | refs: `#42399`_ + * 0b3179135c Merge pull request `#42399`_ from rallytime/`fix-42381`_ + * d9d94fe02f Update old "ref" references to "rev" in git.detached state + +- **PR** `#42031`_: (*skizunov*) Fix: Reactor emits critical error + @ *2017-07-21T19:38:34Z* + + - **ISSUE** `#42400`_: (*Enquier*) Conflict in execution of passing pillar data to orch/reactor event executions 2017.7.0 + | refs: `#42031`_ + * bd4adb483d Merge pull request `#42031`_ from skizunov/develop3 + * 540977b4b1 Fix: Reactor emits critical error + +- **PR** `#42027`_: (*gtmanfred*) import salt.minion for EventReturn for Windows + @ *2017-07-21T19:37:03Z* + + - **ISSUE** `#41949`_: (*jrporcaro*) Event returner doesn't work with Windows Master + | refs: `#42027`_ + * 3abf7ad7d7 Merge pull request `#42027`_ from gtmanfred/2017.7 + * fd4458b6c7 import salt.minion for EventReturn for Windows + +- **PR** `#42454`_: (*terminalmage*) Document future renaming of new rand_str jinja filter + @ *2017-07-21T18:47:51Z* + + * 994d3dc74a Merge pull request `#42454`_ from terminalmage/jinja-docs-2017.7 + * 98b661406e Document future renaming of new rand_str jinja filter + +- **PR** `#42452`_: (*Ch3LL*) update windows urls to new py2/py3 naming scheme + @ *2017-07-21T17:20:47Z* + + * 4480075129 Merge pull request `#42452`_ from Ch3LL/fix_url_windows + * 3f4a918f73 update windows urls to new py2/py3 naming scheme + +- **PR** `#42411`_: (*seedickcode*) Fix file.managed check_cmd file not found - Issue `#42404`_ + @ *2017-07-20T21:59:17Z* + + - **ISSUE** `#42404`_: (*gabekahen*) [2017.7] file.managed with cmd_check "No such file or directory" + | refs: `#42411`_ + - **ISSUE** `#33708`_: (*pepinje*) visudo check command leaves cache file in /tmp + | refs: `#42411`_ `#38063`_ + - **PR** `#38063`_: (*llua*) tmp file clean up in file.manage - fix for `#33708`_ + | refs: `#42411`_ + * 33e90be1fe Merge pull request `#42411`_ from seedickcode/check_cmd_fix + * 4ae3911f01 Fix file.managed check_cmd file not found - Issue `#42404`_ + +- **PR** `#42409`_: (*twangboy*) Add Scripts to build Py3 on Mac + @ *2017-07-20T21:36:34Z* + + * edde31376a Merge pull request `#42409`_ from twangboy/mac_py3_scripts + * ac0e04af72 Remove build and dist, sign pkgs + + * 9d66e273c4 Fix hard coded pip path + + * 7b8d6cbbd2 Add support for Py3 + + * aa4eed93c8 Update Python and other reqs + +- **PR** `#42433`_: (*terminalmage*) Only force saltenv/pillarenv to be a string when not None + | refs: `#42573`_ + @ *2017-07-20T21:32:24Z* + + - **ISSUE** `#42403`_: (*astronouth7303*) [2017.7] Pillar empty when state is applied from orchestrate + | refs: `#42433`_ + * 82982f940d Merge pull request `#42433`_ from terminalmage/issue42403 +- **PR** `#42408`_: (*CorvinM*) Fix documentation misformat in salt.states.file.replace + @ *2017-07-20T00:45:43Z* + + * a71938cefe Merge pull request `#42408`_ from CorvinM/file-replace-doc-fix + * 246a2b3e74 Fix documentation misformat in salt.states.file.replace + +- **PR** `#42347`_: (*twangboy*) Fixes problem with Version and OS Release related grains on certain versions of Python + @ *2017-07-19T17:05:43Z* + + * d385dfd19d Merge pull request `#42347`_ from twangboy/win_fix_ver_grains + * ef1f663fc9 Detect server OS with a desktop release name + +- **PR** `#42366`_: (*twangboy*) Remove build and dist directories before install + @ *2017-07-19T16:37:41Z* + + * eb9e4206c9 Merge pull request `#42366`_ from twangboy/win_fix_build + * 0946002713 Add blank line after delete + + * f7c0bb4f46 Remove build and dist directories before install + +- **PR** `#42373`_: (*Ch3LL*) Add initial 2017.7.1 Release Notes File + @ *2017-07-19T16:28:46Z* + + * af7820f25d Merge pull request `#42373`_ from Ch3LL/add_2017.7.1 + * ce1c1b6d28 Add initial 2017.7.1 Release Notes File + +- **PR** `#42150`_: (*twangboy*) Fix `unit.modules.test_pip` for Windows + @ *2017-07-19T16:01:17Z* + + * 59e012b485 Merge pull request `#42150`_ from twangboy/win_unit_test_pip + * 4ee24202fc Fix unit tests for test_pip + +- **PR** `#42154`_: (*twangboy*) Fix `unit.modules.test_reg_win` for Windows + @ *2017-07-19T16:00:38Z* + + * ade25c6b34 Merge pull request `#42154`_ from twangboy/win_unit_test_reg + * 00d9a52802 Fix problem with handling REG_QWORD in list values + +- **PR** `#42182`_: (*twangboy*) Fix `unit.modules.test_useradd` for Windows + @ *2017-07-19T15:55:33Z* + + * 07593675e2 Merge pull request `#42182`_ from twangboy/win_unit_test_useradd + * 8260a71c07 Disable tests that require pwd in Windows + +- **PR** `#42364`_: (*twangboy*) Windows Package notes for 2017.7.0 + @ *2017-07-18T19:24:45Z* + + * a175c40c1d Merge pull request `#42364`_ from twangboy/release_notes_2017.7.0 + * 96517d1355 Add note about patched windows packages + +- **PR** `#42361`_: (*Ch3LL*) [2017.7] Update version numbers in doc config for 2017.7.0 release + @ *2017-07-18T19:23:22Z* + + * 4dfe50e558 Merge pull request `#42361`_ from Ch3LL/doc-update-2017.7 + * dc5bb301f7 [2017.7] Update version numbers in doc config for 2017.7.0 release + +- **PR** `#42363`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-07-18T18:40:48Z* + + - **ISSUE** `#42295`_: (*lubyou*) file.absent fails on windows if the file to be removed has the "readonly" attribute set + | refs: `#42308`_ + - **ISSUE** `#42267`_: (*gzcwnk*) salt-ssh not creating ssh keys automatically as per documentation + | refs: `#42314`_ + - **ISSUE** `#42240`_: (*casselt*) empty_password in user.present always changes password, even with test=True + | refs: `#42289`_ + - **ISSUE** `#42232`_: (*astronouth7303*) Half of dnsutil refers to dig + | refs: `#42235`_ + - **ISSUE** `#42194`_: (*jryberg*) pkg version: latest are now broken, appending -latest to filename + | refs: `#42275`_ + - **ISSUE** `#42152`_: (*dubb-b*) salt-cloud errors on Rackspace driver using -out=yaml + | refs: `#42282`_ + - **ISSUE** `#42137`_: (*kiemlicz*) cmd.run with multiple commands - random order of execution + | refs: `#42181`_ + - **ISSUE** `#42116`_: (*terminalmage*) CLI pillar override regression in 2017.7.0rc1 + | refs: `#42119`_ + - **ISSUE** `#42115`_: (*nomeelnoj*) Installing EPEL repo breaks salt-cloud + | refs: `#42163`_ + - **ISSUE** `#42114`_: (*clallen*) saltenv bug in pillar.get execution module function + | refs: `#42121`_ + - **ISSUE** `#41936`_: (*michaelkarrer81*) git.latest identity does not set the correct user for the private key file on the minion + | refs: `#41945`_ + - **ISSUE** `#41721`_: (*sazaro*) state.sysrc broken when setting the value to YES or NO + | refs: `#42269`_ + - **ISSUE** `#41116`_: (*hrumph*) FAQ has wrong instructions for upgrading Windows minion. + | refs: `#42264`_ + - **ISSUE** `#39365`_: (*dglloyd*) service.running fails if sysv script has no status command and enable: True + | refs: `#39366`_ + - **ISSUE** `#1`_: (*thatch45*) Enable regex on the salt cli + - **PR** `#42353`_: (*terminalmage*) is_windows is a function, not a propery/attribute + - **PR** `#42314`_: (*rallytime*) Add clarification to salt ssh docs about key auto-generation. + - **PR** `#42308`_: (*lubyou*) Force file removal on Windows. Fixes `#42295`_ + - **PR** `#42289`_: (*CorvinM*) Multiple empty_password fixes for state.user + - **PR** `#42282`_: (*rallytime*) Handle libcloud objects that throw RepresenterErrors with --out=yaml + - **PR** `#42275`_: (*terminalmage*) pkg.installed: pack name/version into pkgs argument + - **PR** `#42269`_: (*rallytime*) Add some clarity to "multiple quotes" section of yaml docs + - **PR** `#42264`_: (*rallytime*) Update minion restart section in FAQ doc for windows + - **PR** `#42262`_: (*rallytime*) Back-port `#42224`_ to 2016.11 + - **PR** `#42261`_: (*rallytime*) Some minor doc fixes for dnsutil module so they'll render correctly + - **PR** `#42253`_: (*gtmanfred*) Only use unassociated ips when unable to allocate + - **PR** `#42252`_: (*UtahDave*) simple docstring updates + - **PR** `#42235`_: (*astronouth7303*) Abolish references to `dig` in examples. + - **PR** `#42224`_: (*tdutrion*) Remove duplicate instruction in Openstack Rackspace config example + | refs: `#42262`_ + - **PR** `#42215`_: (*twangboy*) Add missing config to example + - **PR** `#42211`_: (*terminalmage*) Only pass a saltenv in orchestration if one was explicitly passed (2016.11) + - **PR** `#42181`_: (*garethgreenaway*) fixes to state.py for names parameter + - **PR** `#42176`_: (*rallytime*) Back-port `#42109`_ to 2016.11 + - **PR** `#42175`_: (*rallytime*) Back-port `#39366`_ to 2016.11 + - **PR** `#42173`_: (*rallytime*) Back-port `#37424`_ to 2016.11 + - **PR** `#42172`_: (*rallytime*) [2016.11] Merge forward from 2016.3 to 2016.11 + - **PR** `#42164`_: (*Ch3LL*) Fix kerberos create_keytab doc + - **PR** `#42163`_: (*vutny*) Fix `#42115`_: parse libcloud "rc" version correctly + - **PR** `#42155`_: (*phsteve*) Fix docs for puppet.plugin_sync + - **PR** `#42142`_: (*Ch3LL*) Update builds available for rc1 + - **PR** `#42141`_: (*rallytime*) Back-port `#42098`_ to 2016.11 + - **PR** `#42140`_: (*rallytime*) Back-port `#42097`_ to 2016.11 + - **PR** `#42123`_: (*vutny*) DOCS: describe importing custom util classes + - **PR** `#42121`_: (*terminalmage*) Fix pillar.get when saltenv is passed + - **PR** `#42119`_: (*terminalmage*) Fix regression in CLI pillar override for salt-call + - **PR** `#42109`_: (*arthurlogilab*) [doc] Update aws.rst - add Debian default username + | refs: `#42176`_ + - **PR** `#42098`_: (*twangboy*) Change repo_ng to repo-ng + | refs: `#42141`_ + - **PR** `#42097`_: (*gtmanfred*) require large timediff for ipv6 warning + | refs: `#42140`_ + - **PR** `#42095`_: (*terminalmage*) Add debug logging to dockerng.login + - **PR** `#42094`_: (*terminalmage*) Prevent command from showing in exception when output_loglevel=quiet + - **PR** `#41945`_: (*garethgreenaway*) Fixes to modules/git.py + - **PR** `#41543`_: (*cri-epita*) Fix user creation with empty password + | refs: `#42289`_ `#42289`_ + - **PR** `#39366`_: (*dglloyd*) Pass sig to service.status in after_toggle + | refs: `#42175`_ + - **PR** `#38965`_: (*toanju*) salt-cloud will use list_floating_ips for OpenStack + | refs: `#42253`_ + - **PR** `#37424`_: (*kojiromike*) Avoid Early Convert ret['comment'] to String + | refs: `#42173`_ + - **PR** `#34280`_: (*kevinanderson1*) salt-cloud will use list_floating_ips for Openstack + | refs: `#38965`_ + * 587138d771 Merge pull request `#42363`_ from rallytime/merge-2017.7 + * 7aa31ff030 Merge branch '2016.11' into '2017.7' + + * b256001760 Merge pull request `#42353`_ from terminalmage/fix-git-test + + * 14cf6ce322 is_windows is a function, not a propery/attribute + + * 866a1febb4 Merge pull request `#42264`_ from rallytime/`fix-41116`_ + + * bd638880e3 Add mono-spacing to salt-minion reference for consistency + + * 30d62f43da Update minion restart section in FAQ doc for windows + + * 9a707088ad Merge pull request `#42275`_ from terminalmage/issue42194 + + * 663874908a pkg.installed: pack name/version into pkgs argument + + * e588f235e0 Merge pull request `#42269`_ from rallytime/`fix-41721`_ + + * f2250d474a Add a note about using different styles of quotes. + + * 38d9b3d553 Add some clarity to "multiple quotes" section of yaml docs + + * 5aaa214a75 Merge pull request `#42282`_ from rallytime/`fix-42152`_ + + * f032223843 Handle libcloud objects that throw RepresenterErrors with --out=yaml + + * fb5697a4bc Merge pull request `#42308`_ from lubyou/42295-fix-file-absent-windows + + * 026ccf401a Force file removal on Windows. Fixes `#42295`_ + + * da2a8a518f Merge pull request `#42314`_ from rallytime/`fix-42267`_ + + * c406046940 Add clarification to salt ssh docs about key auto-generation. + + * acadd54013 Merge pull request `#41945`_ from garethgreenaway/41936_allow_identity_files_with_user + + * 44841e5626 Moving the call to cp.get_file inside the with block to ensure the umask is preserved when we grab the file. + + * f9ba60eed8 Merge pull request `#1`_ from terminalmage/pr-41945 + + * 1b6026177c Restrict set_umask to mkstemp call only + + * 68549f3496 Fixing umask to we can set files as executable. + + * 4949bf3ff3 Updating to swap on the new salt.utils.files.set_umask context_manager + + * 8faa9f6d92 Updating PR with requested changes. + + * 494765e939 Updating the git module to allow an identity file to be used when passing the user parameter + + * f90e04a2bc Merge pull request `#42289`_ from CorvinM/`bp-41543`_ + + * 357dc22f05 Fix user creation with empty password + + * a91a3f81b1 Merge pull request `#42123`_ from vutny/fix-master-utils-import + + * 6bb8b8f98c Add missing doc for ``utils_dirs`` Minion config option + + * f1bc58f6d5 Utils: add example of module import + + * e2aa5114e4 Merge pull request `#42261`_ from rallytime/minor-doc-fix + + * 8c76bbb53d Some minor doc fixes for dnsutil module so they'll render correctly + + * 3e9dfbc9cc Merge pull request `#42262`_ from rallytime/`bp-42224`_ + + * c31ded341c Remove duplicate instruction in Openstack Rackspace config example + + * 7780579c36 Merge pull request `#42181`_ from garethgreenaway/42137_backport_fix_from_2017_7 + + * a34970b45b Back porting the fix for 2017.7 that ensures the order of the names parameter. + + * 72537868a6 Merge pull request `#42253`_ from gtmanfred/2016.11 + + * 53e25760be Only use unassociated ips when unable to allocate + + * b2a4698b5d Merge pull request `#42252`_ from UtahDave/2016.11local + + * e6a9563d47 simple doc updates + + * 781fe13be7 Merge pull request `#42235`_ from astronouth7303/patch-1-2016.3 + + * 4cb51bd03a Make note of dig partial requirement. + + * 08e7d8351a Abolish references to `dig` in examples. + + * 83cbd76f16 Merge pull request `#42215`_ from twangboy/win_iis_docs + + * c07e22041a Add missing config to example + + * 274946ab00 Merge pull request `#42211`_ from terminalmage/issue40928 + + * 22a18fa2ed Only pass a saltenv in orchestration if one was explicitly passed (2016.11) + + * 89261cf06c Merge pull request `#42173`_ from rallytime/`bp-37424`_ + + * 01addb6053 Avoid Early Convert ret['comment'] to String + + * 3b17fb7f83 Merge pull request `#42175`_ from rallytime/`bp-39366`_ + + * 53f7b987e8 Pass sig to service.status in after_toggle + + * ea16f47f0a Merge pull request `#42172`_ from rallytime/merge-2016.11 + + * b1fa332a11 Merge branch '2016.3' into '2016.11' + + * 8fa1fa5bb1 Merge pull request `#42155`_ from phsteve/doc-fix-puppet + + * fb2cb78a31 Fix docs for puppet.plugin_sync so code-block renders properly and sync is spelled consistently + + * 6307b9873f Merge pull request `#42176`_ from rallytime/`bp-42109`_ + + * 686926daf7 Update aws.rst - add Debian default username + + * 28c4e4c3b7 Merge pull request `#42095`_ from terminalmage/docker-login-debugging + + * bd27870a71 Add debug logging to dockerng.login + + * 2b754bc5af Merge pull request `#42119`_ from terminalmage/issue42116 + + * 9a268949e3 Add integration test for 42116 + + * 1bb42bb609 Fix regression when CLI pillar override is used with salt-call + + * 8c0a83cbb5 Merge pull request `#42121`_ from terminalmage/issue42114 + + * d14291267f Fix pillar.get when saltenv is passed + + * 687992c240 Merge pull request `#42094`_ from terminalmage/quiet-exception + + * 47d61f4edf Prevent command from showing in exception when output_loglevel=quiet + + * dad255160c Merge pull request `#42163`_ from vutny/`fix-42115`_ + + * b27b1e340a Fix `#42115`_: parse libcloud "rc" version correctly + + * 2a8ae2b3b6 Merge pull request `#42164`_ from Ch3LL/fix_kerb_doc + + * 7c0fb248ec Fix kerberos create_keytab doc + + * 678d4d4098 Merge pull request `#42141`_ from rallytime/`bp-42098`_ + + * bd80243233 Change repo_ng to repo-ng + + * c8afd7a3c9 Merge pull request `#42140`_ from rallytime/`bp-42097`_ + + * 9c4e132540 Import datetime + + * 1435bf177e require large timediff for ipv6 warning + + * c239664c8b Merge pull request `#42142`_ from Ch3LL/change_builds + + * e1694af39c Update builds available for rc1 + +- **PR** `#42340`_: (*isbm*) Bugfix: Jobs scheduled to run at a future time stay pending for Salt … + @ *2017-07-18T18:13:36Z* + + - **ISSUE** `#1036125`_: (**) + * 55b7a5cb4a Merge pull request `#42340`_ from isbm/isbm-jobs-scheduled-in-a-future-2017.7-bsc1036125 + * 774d204d65 Bugfix: Jobs scheduled to run at a future time stay pending for Salt minions (bsc`#1036125`_) + +- **PR** `#42327`_: (*mirceaulinic*) Default skip_verify to False + @ *2017-07-18T18:04:36Z* + + * e72616c5f1 Merge pull request `#42327`_ from mirceaulinic/patch-10 + * c830573a2c Trailing whitespaces + + * c83e6fc696 Default skip_verify to False + +- **PR** `#42179`_: (*rallytime*) Fix some documentation issues found in jinja filters doc topic + @ *2017-07-18T18:01:57Z* + + - **ISSUE** `#42151`_: (*sjorge*) Doc errors in jinja doc for develop branch + | refs: `#42179`_ `#42179`_ + * ba799b2831 Merge pull request `#42179`_ from rallytime/`fix-42151`_ + * 798d29276e Add note about "to_bytes" jinja filter issues when using yaml_jinja renderer + + * 1bbff572ab Fix some documentation issues found in jinja filters doc topic + +- **PR** `#42087`_: (*abulford*) Make result=true if Docker volume already exists + @ *2017-07-17T18:41:47Z* + + - **ISSUE** `#42076`_: (*abulford*) dockerng.volume_present test looks as though it would cause a change + | refs: `#42086`_ `#42086`_ `#42087`_ `#42087`_ + - **PR** `#42086`_: (*abulford*) Make result=true if Docker volume already exists + | refs: `#42087`_ + * 8dbb93851d Merge pull request `#42087`_ from redmatter/fix-dockerng-volume-present-result-2017.7 + * 2e1dc95500 Make result=true if Docker volume already exists + +- **PR** `#42186`_: (*rallytime*) Use long_range function for IPv6Network hosts() function + @ *2017-07-17T18:39:35Z* + + - **ISSUE** `#42166`_: (*sjorge*) [2017.7.0rc1] jinja filter network_hosts fails on large IPv6 networks + | refs: `#42186`_ + * c84d6db548 Merge pull request `#42186`_ from rallytime/`fix-42166`_ + * b8bcc0d599 Add note to various network_hosts docs about long_run for IPv6 networks + + * 11862743c2 Use long_range function for IPv6Network hosts() function + +- **PR** `#42210`_: (*terminalmage*) Only pass a saltenv in orchestration if one was explicitly passed (2017.7) + @ *2017-07-17T18:22:39Z* + + * e7b79e0fd2 Merge pull request `#42210`_ from terminalmage/issue40928-2017.7 + * 771ade5d73 Only pass a saltenv in orchestration if one was explicitly passed (2017.7) + +- **PR** `#42236`_: (*mirceaulinic*) New option for napalm proxy/minion: provider + @ *2017-07-17T18:19:56Z* + + * 0e49021b0e Merge pull request `#42236`_ from cloudflare/napalm-provider + * 1ac69bd737 Document the provider option and rearrange the doc + + * 4bf4b14161 New option for napalm proxy/minion: provider + +- **PR** `#42257`_: (*twangboy*) Fix `unit.pillar.test_git` for Windows + @ *2017-07-17T17:51:42Z* + + * 3ec5bb1c2f Merge pull request `#42257`_ from twangboy/win_unit_pillar_test_git + * 45be32666a Add error-handling function to shutil.rmtree + +- **PR** `#42258`_: (*twangboy*) Fix `unit.states.test_environ` for Windows + @ *2017-07-17T17:50:38Z* + + * 36395625c2 Merge pull request `#42258`_ from twangboy/win_unit_states_tests_environ + * 55b278c478 Mock the reg.read_value function + +- **PR** `#42265`_: (*rallytime*) Gate boto_elb tests if proper version of moto isn't installed + @ *2017-07-17T17:47:52Z* + + * 894bdd2b19 Merge pull request `#42265`_ from rallytime/gate-moto-version + * 78cdee51d5 Gate boto_elb tests if proper version of moto isn't installed + +- **PR** `#42277`_: (*twangboy*) Fix `unit.states.test_winrepo` for Windows + @ *2017-07-17T17:37:07Z* + + * baf04f2a2d Merge pull request `#42277`_ from twangboy/win_unit_states_test_winrepo + * ed89cd0b93 Use os.sep for path seps + +- **PR** `#42309`_: (*terminalmage*) Change "TBD" in versionadded to "2017.7.0" + @ *2017-07-17T17:11:45Z* + + * be6b211683 Merge pull request `#42309`_ from terminalmage/fix-versionadded + * 603f5b7de6 Change "TBD" in versionadded to "2017.7.0" + +- **PR** `#42206`_: (*rallytime*) [PY3] Fix test that is flaky in Python 3 + | refs: `#42783`_ + @ *2017-07-17T17:09:53Z* + + * acd29f9b38 Merge pull request `#42206`_ from rallytime/fix-flaky-test + * 2be4865f48 [PY3] Fix test that is flaky in Python 3 + +- **PR** `#42126`_: (*rallytime*) [2017.7] Merge forward from 2016.11 to 2017.7 + @ *2017-07-17T17:07:19Z* + + * 8f1cb287cf Merge pull request `#42126`_ from rallytime/merge-2017.7 +* 8b35b367b3 Merge branch '2016.11' into '2017.7' + + +- **PR** `#42078`_: (*damon-atkins*) pkg.install and pkg.remove fix version number input. + @ *2017-07-05T06:04:57Z* + + * 4780d7830a Merge pull request `#42078`_ from damon-atkins/fix_convert_flt_str_version_on_cmd_line + * 09d37dd892 Fix comment typo + + * 7167549425 Handle version=None when converted to a string it becomes 'None' parm should default to empty string rather than None, it would fix better with existing code. + + * 4fb2bb1856 Fix typo + + * cf55c3361c pkg.install and pkg.remove on the command line take number version numbers, store them within a float. However version is a string, to support versions numbers like 1.3.4 + +- **PR** `#42105`_: (*Ch3LL*) Update releasecanddiate doc with new 2017.7.0rc1 Release + @ *2017-07-04T03:14:42Z* + + * 46d575acbc Merge pull request `#42105`_ from Ch3LL/update_rc + * d4e7b91608 Update releasecanddiate doc with new 2017.7.0rc1 Release + +- **PR** `#42099`_: (*rallytime*) Remove references in docs to pip install salt-cloud + @ *2017-07-03T22:13:44Z* + + - **ISSUE** `#41885`_: (*astronouth7303*) Recommended pip installation outdated? + | refs: `#42099`_ + * d38548bbbd Merge pull request `#42099`_ from rallytime/`fix-41885`_ + * c2822e05ad Remove references in docs to pip install salt-cloud + +- **PR** `#42086`_: (*abulford*) Make result=true if Docker volume already exists + | refs: `#42087`_ + @ *2017-07-03T15:48:33Z* + + - **ISSUE** `#42076`_: (*abulford*) dockerng.volume_present test looks as though it would cause a change + | refs: `#42086`_ `#42086`_ `#42087`_ `#42087`_ + * 81d606a8cb Merge pull request `#42086`_ from redmatter/fix-dockerng-volume-present-result + * 8d549685a7 Make result=true if Docker volume already exists + +- **PR** `#42021`_: (*gtmanfred*) Set concurrent to True when running states with sudo + @ *2017-06-30T21:02:15Z* + + - **ISSUE** `#25842`_: (*shikhartanwar*) Running salt-minion as non-root user to execute sudo commands always returns an error + | refs: `#42021`_ + * 7160697123 Merge pull request `#42021`_ from gtmanfred/2016.11 + * 26beb18aa5 Set concurrent to True when running states with sudo + +- **PR** `#42029`_: (*terminalmage*) Mock socket.getaddrinfo in unit.utils.network_test.NetworkTestCase.test_host_to_ips + @ *2017-06-30T20:58:56Z* + + * b784fbbdf8 Merge pull request `#42029`_ from terminalmage/host_to_ips + * 26f848e111 Mock socket.getaddrinfo in unit.utils.network_test.NetworkTestCase.test_host_to_ips + +- **PR** `#42055`_: (*dmurphy18*) Upgrade support for gnupg v2.1 and higher + @ *2017-06-30T20:54:02Z* + + * e067020b9b Merge pull request `#42055`_ from dmurphy18/handle_gnupgv21 + * e20cea6350 Upgrade support for gnupg v2.1 and higher + +- **PR** `#42048`_: (*Ch3LL*) Add initial 2016.11.7 Release Notes + @ *2017-06-30T16:00:05Z* + + * 74ba2abc48 Merge pull request `#42048`_ from Ch3LL/add_11.7 + * 1de5e008a0 Add initial 2016.11.7 Release Notes + + +.. _`#1`: https://github.com/saltstack/salt/issues/1 +.. _`#1036125`: https://github.com/saltstack/salt/issues/1036125 +.. _`#12587`: https://github.com/saltstack/salt/issues/12587 +.. _`#15171`: https://github.com/saltstack/salt/issues/15171 +.. _`#2`: https://github.com/saltstack/salt/issues/2 +.. _`#23516`: https://github.com/saltstack/salt/issues/23516 +.. _`#25842`: https://github.com/saltstack/salt/issues/25842 +.. _`#26995`: https://github.com/saltstack/salt/issues/26995 +.. _`#32400`: https://github.com/saltstack/salt/issues/32400 +.. _`#33708`: https://github.com/saltstack/salt/issues/33708 +.. _`#33806`: https://github.com/saltstack/salt/pull/33806 +.. _`#34245`: https://github.com/saltstack/salt/issues/34245 +.. _`#34280`: https://github.com/saltstack/salt/pull/34280 +.. _`#37312`: https://github.com/saltstack/salt/issues/37312 +.. _`#37424`: https://github.com/saltstack/salt/pull/37424 +.. _`#38063`: https://github.com/saltstack/salt/pull/38063 +.. _`#38839`: https://github.com/saltstack/salt/issues/38839 +.. _`#38878`: https://github.com/saltstack/salt/issues/38878 +.. _`#38898`: https://github.com/saltstack/salt/pull/38898 +.. _`#38965`: https://github.com/saltstack/salt/pull/38965 +.. _`#39365`: https://github.com/saltstack/salt/issues/39365 +.. _`#39366`: https://github.com/saltstack/salt/pull/39366 +.. _`#39516`: https://github.com/saltstack/salt/pull/39516 +.. _`#396`: https://github.com/saltstack/salt/pull/396 +.. _`#39646`: https://github.com/saltstack/salt/pull/39646 +.. _`#39773`: https://github.com/saltstack/salt/pull/39773 +.. _`#40354`: https://github.com/saltstack/salt/issues/40354 +.. _`#40490`: https://github.com/saltstack/salt/issues/40490 +.. _`#41116`: https://github.com/saltstack/salt/issues/41116 +.. _`#41433`: https://github.com/saltstack/salt/issues/41433 +.. _`#41543`: https://github.com/saltstack/salt/pull/41543 +.. _`#41690`: https://github.com/saltstack/salt/pull/41690 +.. _`#41720`: https://github.com/saltstack/salt/issues/41720 +.. _`#41721`: https://github.com/saltstack/salt/issues/41721 +.. _`#41770`: https://github.com/saltstack/salt/issues/41770 +.. _`#41885`: https://github.com/saltstack/salt/issues/41885 +.. _`#41936`: https://github.com/saltstack/salt/issues/41936 +.. _`#41945`: https://github.com/saltstack/salt/pull/41945 +.. _`#41949`: https://github.com/saltstack/salt/issues/41949 +.. _`#41955`: https://github.com/saltstack/salt/issues/41955 +.. _`#41968`: https://github.com/saltstack/salt/pull/41968 +.. _`#41973`: https://github.com/saltstack/salt/pull/41973 +.. _`#41976`: https://github.com/saltstack/salt/issues/41976 +.. _`#41977`: https://github.com/saltstack/salt/pull/41977 +.. _`#41982`: https://github.com/saltstack/salt/issues/41982 +.. _`#41988`: https://github.com/saltstack/salt/pull/41988 +.. _`#41994`: https://github.com/saltstack/salt/pull/41994 +.. _`#42006`: https://github.com/saltstack/salt/pull/42006 +.. _`#42021`: https://github.com/saltstack/salt/pull/42021 +.. _`#42027`: https://github.com/saltstack/salt/pull/42027 +.. _`#42029`: https://github.com/saltstack/salt/pull/42029 +.. _`#42031`: https://github.com/saltstack/salt/pull/42031 +.. _`#42041`: https://github.com/saltstack/salt/issues/42041 +.. _`#42045`: https://github.com/saltstack/salt/pull/42045 +.. _`#42048`: https://github.com/saltstack/salt/pull/42048 +.. _`#42055`: https://github.com/saltstack/salt/pull/42055 +.. _`#42067`: https://github.com/saltstack/salt/pull/42067 +.. _`#42076`: https://github.com/saltstack/salt/issues/42076 +.. _`#42077`: https://github.com/saltstack/salt/pull/42077 +.. _`#42078`: https://github.com/saltstack/salt/pull/42078 +.. _`#42086`: https://github.com/saltstack/salt/pull/42086 +.. _`#42087`: https://github.com/saltstack/salt/pull/42087 +.. _`#42094`: https://github.com/saltstack/salt/pull/42094 +.. _`#42095`: https://github.com/saltstack/salt/pull/42095 +.. _`#42097`: https://github.com/saltstack/salt/pull/42097 +.. _`#42098`: https://github.com/saltstack/salt/pull/42098 +.. _`#42099`: https://github.com/saltstack/salt/pull/42099 +.. _`#42105`: https://github.com/saltstack/salt/pull/42105 +.. _`#42107`: https://github.com/saltstack/salt/pull/42107 +.. _`#42109`: https://github.com/saltstack/salt/pull/42109 +.. _`#42114`: https://github.com/saltstack/salt/issues/42114 +.. _`#42115`: https://github.com/saltstack/salt/issues/42115 +.. _`#42116`: https://github.com/saltstack/salt/issues/42116 +.. _`#42119`: https://github.com/saltstack/salt/pull/42119 +.. _`#42121`: https://github.com/saltstack/salt/pull/42121 +.. _`#42123`: https://github.com/saltstack/salt/pull/42123 +.. _`#42126`: https://github.com/saltstack/salt/pull/42126 +.. _`#42137`: https://github.com/saltstack/salt/issues/42137 +.. _`#42140`: https://github.com/saltstack/salt/pull/42140 +.. _`#42141`: https://github.com/saltstack/salt/pull/42141 +.. _`#42142`: https://github.com/saltstack/salt/pull/42142 +.. _`#42150`: https://github.com/saltstack/salt/pull/42150 +.. _`#42151`: https://github.com/saltstack/salt/issues/42151 +.. _`#42152`: https://github.com/saltstack/salt/issues/42152 +.. _`#42154`: https://github.com/saltstack/salt/pull/42154 +.. _`#42155`: https://github.com/saltstack/salt/pull/42155 +.. _`#42163`: https://github.com/saltstack/salt/pull/42163 +.. _`#42164`: https://github.com/saltstack/salt/pull/42164 +.. _`#42166`: https://github.com/saltstack/salt/issues/42166 +.. _`#42172`: https://github.com/saltstack/salt/pull/42172 +.. _`#42173`: https://github.com/saltstack/salt/pull/42173 +.. _`#42174`: https://github.com/saltstack/salt/pull/42174 +.. _`#42175`: https://github.com/saltstack/salt/pull/42175 +.. _`#42176`: https://github.com/saltstack/salt/pull/42176 +.. _`#42179`: https://github.com/saltstack/salt/pull/42179 +.. _`#42180`: https://github.com/saltstack/salt/pull/42180 +.. _`#42181`: https://github.com/saltstack/salt/pull/42181 +.. _`#42182`: https://github.com/saltstack/salt/pull/42182 +.. _`#42186`: https://github.com/saltstack/salt/pull/42186 +.. _`#42194`: https://github.com/saltstack/salt/issues/42194 +.. _`#42198`: https://github.com/saltstack/salt/issues/42198 +.. _`#42200`: https://github.com/saltstack/salt/pull/42200 +.. _`#42206`: https://github.com/saltstack/salt/pull/42206 +.. _`#42210`: https://github.com/saltstack/salt/pull/42210 +.. _`#42211`: https://github.com/saltstack/salt/pull/42211 +.. _`#42215`: https://github.com/saltstack/salt/pull/42215 +.. _`#42224`: https://github.com/saltstack/salt/pull/42224 +.. _`#42232`: https://github.com/saltstack/salt/issues/42232 +.. _`#42235`: https://github.com/saltstack/salt/pull/42235 +.. _`#42236`: https://github.com/saltstack/salt/pull/42236 +.. _`#42240`: https://github.com/saltstack/salt/issues/42240 +.. _`#42251`: https://github.com/saltstack/salt/pull/42251 +.. _`#42252`: https://github.com/saltstack/salt/pull/42252 +.. _`#42253`: https://github.com/saltstack/salt/pull/42253 +.. _`#42255`: https://github.com/saltstack/salt/pull/42255 +.. _`#42257`: https://github.com/saltstack/salt/pull/42257 +.. _`#42258`: https://github.com/saltstack/salt/pull/42258 +.. _`#42261`: https://github.com/saltstack/salt/pull/42261 +.. _`#42262`: https://github.com/saltstack/salt/pull/42262 +.. _`#42264`: https://github.com/saltstack/salt/pull/42264 +.. _`#42265`: https://github.com/saltstack/salt/pull/42265 +.. _`#42266`: https://github.com/saltstack/salt/pull/42266 +.. _`#42267`: https://github.com/saltstack/salt/issues/42267 +.. _`#42269`: https://github.com/saltstack/salt/pull/42269 +.. _`#42270`: https://github.com/saltstack/salt/issues/42270 +.. _`#42275`: https://github.com/saltstack/salt/pull/42275 +.. _`#42277`: https://github.com/saltstack/salt/pull/42277 +.. _`#42279`: https://github.com/saltstack/salt/issues/42279 +.. _`#42282`: https://github.com/saltstack/salt/pull/42282 +.. _`#42289`: https://github.com/saltstack/salt/pull/42289 +.. _`#42290`: https://github.com/saltstack/salt/pull/42290 +.. _`#42291`: https://github.com/saltstack/salt/pull/42291 +.. _`#42295`: https://github.com/saltstack/salt/issues/42295 +.. _`#42308`: https://github.com/saltstack/salt/pull/42308 +.. _`#42309`: https://github.com/saltstack/salt/pull/42309 +.. _`#42314`: https://github.com/saltstack/salt/pull/42314 +.. _`#42319`: https://github.com/saltstack/salt/pull/42319 +.. _`#42327`: https://github.com/saltstack/salt/pull/42327 +.. _`#42329`: https://github.com/saltstack/salt/issues/42329 +.. _`#42333`: https://github.com/saltstack/salt/issues/42333 +.. _`#42339`: https://github.com/saltstack/salt/pull/42339 +.. _`#42340`: https://github.com/saltstack/salt/pull/42340 +.. _`#42347`: https://github.com/saltstack/salt/pull/42347 +.. _`#42350`: https://github.com/saltstack/salt/pull/42350 +.. _`#42352`: https://github.com/saltstack/salt/pull/42352 +.. _`#42353`: https://github.com/saltstack/salt/pull/42353 +.. _`#42356`: https://github.com/saltstack/salt/pull/42356 +.. _`#42357`: https://github.com/saltstack/salt/issues/42357 +.. _`#42359`: https://github.com/saltstack/salt/pull/42359 +.. _`#42360`: https://github.com/saltstack/salt/pull/42360 +.. _`#42361`: https://github.com/saltstack/salt/pull/42361 +.. _`#42363`: https://github.com/saltstack/salt/pull/42363 +.. _`#42364`: https://github.com/saltstack/salt/pull/42364 +.. _`#42366`: https://github.com/saltstack/salt/pull/42366 +.. _`#42368`: https://github.com/saltstack/salt/pull/42368 +.. _`#42370`: https://github.com/saltstack/salt/pull/42370 +.. _`#42371`: https://github.com/saltstack/salt/issues/42371 +.. _`#42373`: https://github.com/saltstack/salt/pull/42373 +.. _`#42374`: https://github.com/saltstack/salt/issues/42374 +.. _`#42375`: https://github.com/saltstack/salt/issues/42375 +.. _`#42381`: https://github.com/saltstack/salt/issues/42381 +.. _`#42387`: https://github.com/saltstack/salt/pull/42387 +.. _`#42388`: https://github.com/saltstack/salt/pull/42388 +.. _`#42399`: https://github.com/saltstack/salt/pull/42399 +.. _`#42400`: https://github.com/saltstack/salt/issues/42400 +.. _`#42403`: https://github.com/saltstack/salt/issues/42403 +.. _`#42404`: https://github.com/saltstack/salt/issues/42404 +.. _`#42405`: https://github.com/saltstack/salt/issues/42405 +.. _`#42408`: https://github.com/saltstack/salt/pull/42408 +.. _`#42409`: https://github.com/saltstack/salt/pull/42409 +.. _`#42411`: https://github.com/saltstack/salt/pull/42411 +.. _`#42413`: https://github.com/saltstack/salt/issues/42413 +.. _`#42414`: https://github.com/saltstack/salt/pull/42414 +.. _`#42417`: https://github.com/saltstack/salt/issues/42417 +.. _`#42421`: https://github.com/saltstack/salt/issues/42421 +.. _`#42424`: https://github.com/saltstack/salt/pull/42424 +.. _`#42425`: https://github.com/saltstack/salt/pull/42425 +.. _`#42427`: https://github.com/saltstack/salt/issues/42427 +.. _`#42433`: https://github.com/saltstack/salt/pull/42433 +.. _`#42435`: https://github.com/saltstack/salt/pull/42435 +.. _`#42436`: https://github.com/saltstack/salt/pull/42436 +.. _`#42443`: https://github.com/saltstack/salt/pull/42443 +.. _`#42444`: https://github.com/saltstack/salt/pull/42444 +.. _`#42452`: https://github.com/saltstack/salt/pull/42452 +.. _`#42453`: https://github.com/saltstack/salt/pull/42453 +.. _`#42454`: https://github.com/saltstack/salt/pull/42454 +.. _`#42456`: https://github.com/saltstack/salt/issues/42456 +.. _`#42459`: https://github.com/saltstack/salt/issues/42459 +.. _`#42461`: https://github.com/saltstack/salt/pull/42461 +.. _`#42464`: https://github.com/saltstack/salt/pull/42464 +.. _`#42465`: https://github.com/saltstack/salt/pull/42465 +.. _`#42474`: https://github.com/saltstack/salt/pull/42474 +.. _`#42477`: https://github.com/saltstack/salt/issues/42477 +.. _`#42479`: https://github.com/saltstack/salt/pull/42479 +.. _`#42481`: https://github.com/saltstack/salt/pull/42481 +.. _`#42484`: https://github.com/saltstack/salt/pull/42484 +.. _`#42502`: https://github.com/saltstack/salt/pull/42502 +.. _`#42505`: https://github.com/saltstack/salt/issues/42505 +.. _`#42506`: https://github.com/saltstack/salt/pull/42506 +.. _`#42509`: https://github.com/saltstack/salt/pull/42509 +.. _`#42514`: https://github.com/saltstack/salt/issues/42514 +.. _`#42515`: https://github.com/saltstack/salt/pull/42515 +.. _`#42516`: https://github.com/saltstack/salt/pull/42516 +.. _`#42521`: https://github.com/saltstack/salt/issues/42521 +.. _`#42523`: https://github.com/saltstack/salt/pull/42523 +.. _`#42524`: https://github.com/saltstack/salt/pull/42524 +.. _`#42527`: https://github.com/saltstack/salt/pull/42527 +.. _`#42528`: https://github.com/saltstack/salt/pull/42528 +.. _`#42529`: https://github.com/saltstack/salt/pull/42529 +.. _`#42534`: https://github.com/saltstack/salt/pull/42534 +.. _`#42538`: https://github.com/saltstack/salt/issues/42538 +.. _`#42541`: https://github.com/saltstack/salt/pull/42541 +.. _`#42545`: https://github.com/saltstack/salt/issues/42545 +.. _`#42547`: https://github.com/saltstack/salt/pull/42547 +.. _`#42551`: https://github.com/saltstack/salt/pull/42551 +.. _`#42552`: https://github.com/saltstack/salt/pull/42552 +.. _`#42555`: https://github.com/saltstack/salt/pull/42555 +.. _`#42557`: https://github.com/saltstack/salt/pull/42557 +.. _`#42567`: https://github.com/saltstack/salt/pull/42567 +.. _`#42571`: https://github.com/saltstack/salt/pull/42571 +.. _`#42573`: https://github.com/saltstack/salt/pull/42573 +.. _`#42574`: https://github.com/saltstack/salt/pull/42574 +.. _`#42575`: https://github.com/saltstack/salt/pull/42575 +.. _`#42577`: https://github.com/saltstack/salt/pull/42577 +.. _`#42586`: https://github.com/saltstack/salt/pull/42586 +.. _`#42588`: https://github.com/saltstack/salt/issues/42588 +.. _`#42589`: https://github.com/saltstack/salt/pull/42589 +.. _`#42600`: https://github.com/saltstack/salt/issues/42600 +.. _`#42601`: https://github.com/saltstack/salt/pull/42601 +.. _`#42602`: https://github.com/saltstack/salt/pull/42602 +.. _`#42603`: https://github.com/saltstack/salt/pull/42603 +.. _`#42611`: https://github.com/saltstack/salt/issues/42611 +.. _`#42612`: https://github.com/saltstack/salt/pull/42612 +.. _`#42616`: https://github.com/saltstack/salt/pull/42616 +.. _`#42618`: https://github.com/saltstack/salt/pull/42618 +.. _`#42619`: https://github.com/saltstack/salt/pull/42619 +.. _`#42621`: https://github.com/saltstack/salt/pull/42621 +.. _`#42623`: https://github.com/saltstack/salt/pull/42623 +.. _`#42625`: https://github.com/saltstack/salt/pull/42625 +.. _`#42627`: https://github.com/saltstack/salt/issues/42627 +.. _`#42629`: https://github.com/saltstack/salt/pull/42629 +.. _`#42639`: https://github.com/saltstack/salt/issues/42639 +.. _`#42642`: https://github.com/saltstack/salt/issues/42642 +.. _`#42644`: https://github.com/saltstack/salt/issues/42644 +.. _`#42646`: https://github.com/saltstack/salt/issues/42646 +.. _`#42649`: https://github.com/saltstack/salt/issues/42649 +.. _`#42651`: https://github.com/saltstack/salt/pull/42651 +.. _`#42654`: https://github.com/saltstack/salt/pull/42654 +.. _`#42655`: https://github.com/saltstack/salt/pull/42655 +.. _`#42657`: https://github.com/saltstack/salt/pull/42657 +.. _`#42663`: https://github.com/saltstack/salt/pull/42663 +.. _`#42668`: https://github.com/saltstack/salt/issues/42668 +.. _`#42669`: https://github.com/saltstack/salt/pull/42669 +.. _`#42670`: https://github.com/saltstack/salt/pull/42670 +.. _`#42678`: https://github.com/saltstack/salt/pull/42678 +.. _`#42679`: https://github.com/saltstack/salt/pull/42679 +.. _`#42683`: https://github.com/saltstack/salt/issues/42683 +.. _`#42686`: https://github.com/saltstack/salt/issues/42686 +.. _`#42688`: https://github.com/saltstack/salt/issues/42688 +.. _`#42689`: https://github.com/saltstack/salt/pull/42689 +.. _`#42690`: https://github.com/saltstack/salt/issues/42690 +.. _`#42693`: https://github.com/saltstack/salt/pull/42693 +.. _`#42694`: https://github.com/saltstack/salt/pull/42694 +.. _`#42697`: https://github.com/saltstack/salt/issues/42697 +.. _`#42704`: https://github.com/saltstack/salt/pull/42704 +.. _`#42705`: https://github.com/saltstack/salt/issues/42705 +.. _`#42707`: https://github.com/saltstack/salt/issues/42707 +.. _`#42708`: https://github.com/saltstack/salt/pull/42708 +.. _`#42709`: https://github.com/saltstack/salt/pull/42709 +.. _`#42710`: https://github.com/saltstack/salt/pull/42710 +.. _`#42712`: https://github.com/saltstack/salt/pull/42712 +.. _`#42714`: https://github.com/saltstack/salt/pull/42714 +.. _`#42721`: https://github.com/saltstack/salt/pull/42721 +.. _`#42731`: https://github.com/saltstack/salt/issues/42731 +.. _`#42741`: https://github.com/saltstack/salt/issues/42741 +.. _`#42743`: https://github.com/saltstack/salt/pull/42743 +.. _`#42744`: https://github.com/saltstack/salt/pull/42744 +.. _`#42745`: https://github.com/saltstack/salt/pull/42745 +.. _`#42747`: https://github.com/saltstack/salt/issues/42747 +.. _`#42748`: https://github.com/saltstack/salt/pull/42748 +.. _`#42753`: https://github.com/saltstack/salt/issues/42753 +.. _`#42760`: https://github.com/saltstack/salt/pull/42760 +.. _`#42764`: https://github.com/saltstack/salt/pull/42764 +.. _`#42768`: https://github.com/saltstack/salt/pull/42768 +.. _`#42769`: https://github.com/saltstack/salt/pull/42769 +.. _`#42770`: https://github.com/saltstack/salt/pull/42770 +.. _`#42774`: https://github.com/saltstack/salt/issues/42774 +.. _`#42778`: https://github.com/saltstack/salt/pull/42778 +.. _`#42782`: https://github.com/saltstack/salt/pull/42782 +.. _`#42783`: https://github.com/saltstack/salt/pull/42783 +.. _`#42784`: https://github.com/saltstack/salt/pull/42784 +.. _`#42786`: https://github.com/saltstack/salt/pull/42786 +.. _`#42788`: https://github.com/saltstack/salt/pull/42788 +.. _`#42794`: https://github.com/saltstack/salt/pull/42794 +.. _`#42795`: https://github.com/saltstack/salt/pull/42795 +.. _`#42798`: https://github.com/saltstack/salt/pull/42798 +.. _`#42800`: https://github.com/saltstack/salt/pull/42800 +.. _`#42803`: https://github.com/saltstack/salt/issues/42803 +.. _`#42804`: https://github.com/saltstack/salt/pull/42804 +.. _`#42805`: https://github.com/saltstack/salt/pull/42805 +.. _`#42806`: https://github.com/saltstack/salt/pull/42806 +.. _`#42807`: https://github.com/saltstack/salt/pull/42807 +.. _`#42808`: https://github.com/saltstack/salt/pull/42808 +.. _`#42810`: https://github.com/saltstack/salt/pull/42810 +.. _`#42812`: https://github.com/saltstack/salt/pull/42812 +.. _`#42818`: https://github.com/saltstack/salt/issues/42818 +.. _`#42826`: https://github.com/saltstack/salt/pull/42826 +.. _`#42829`: https://github.com/saltstack/salt/pull/42829 +.. _`#42835`: https://github.com/saltstack/salt/pull/42835 +.. _`#42836`: https://github.com/saltstack/salt/pull/42836 +.. _`#42838`: https://github.com/saltstack/salt/pull/42838 +.. _`#42841`: https://github.com/saltstack/salt/pull/42841 +.. _`#42842`: https://github.com/saltstack/salt/issues/42842 +.. _`#42843`: https://github.com/saltstack/salt/issues/42843 +.. _`#42845`: https://github.com/saltstack/salt/pull/42845 +.. _`#42848`: https://github.com/saltstack/salt/pull/42848 +.. _`#42851`: https://github.com/saltstack/salt/pull/42851 +.. _`#42855`: https://github.com/saltstack/salt/pull/42855 +.. _`#42856`: https://github.com/saltstack/salt/pull/42856 +.. _`#42857`: https://github.com/saltstack/salt/pull/42857 +.. _`#42859`: https://github.com/saltstack/salt/pull/42859 +.. _`#42860`: https://github.com/saltstack/salt/pull/42860 +.. _`#42861`: https://github.com/saltstack/salt/pull/42861 +.. _`#42864`: https://github.com/saltstack/salt/pull/42864 +.. _`#42866`: https://github.com/saltstack/salt/pull/42866 +.. _`#42868`: https://github.com/saltstack/salt/pull/42868 +.. _`#42869`: https://github.com/saltstack/salt/issues/42869 +.. _`#42870`: https://github.com/saltstack/salt/issues/42870 +.. _`#42871`: https://github.com/saltstack/salt/pull/42871 +.. _`#42873`: https://github.com/saltstack/salt/issues/42873 +.. _`#42877`: https://github.com/saltstack/salt/pull/42877 +.. _`#42881`: https://github.com/saltstack/salt/pull/42881 +.. _`#42882`: https://github.com/saltstack/salt/pull/42882 +.. _`#42883`: https://github.com/saltstack/salt/pull/42883 +.. _`#42884`: https://github.com/saltstack/salt/pull/42884 +.. _`#42885`: https://github.com/saltstack/salt/pull/42885 +.. _`#42886`: https://github.com/saltstack/salt/pull/42886 +.. _`#42887`: https://github.com/saltstack/salt/pull/42887 +.. _`#42889`: https://github.com/saltstack/salt/pull/42889 +.. _`#42890`: https://github.com/saltstack/salt/pull/42890 +.. _`#42898`: https://github.com/saltstack/salt/pull/42898 +.. _`#42911`: https://github.com/saltstack/salt/pull/42911 +.. _`#42913`: https://github.com/saltstack/salt/pull/42913 +.. _`#42918`: https://github.com/saltstack/salt/pull/42918 +.. _`#42919`: https://github.com/saltstack/salt/pull/42919 +.. _`#42920`: https://github.com/saltstack/salt/pull/42920 +.. _`#42925`: https://github.com/saltstack/salt/pull/42925 +.. _`#42933`: https://github.com/saltstack/salt/pull/42933 +.. _`#42936`: https://github.com/saltstack/salt/issues/42936 +.. _`#42940`: https://github.com/saltstack/salt/pull/42940 +.. _`#42941`: https://github.com/saltstack/salt/issues/42941 +.. _`#42942`: https://github.com/saltstack/salt/pull/42942 +.. _`#42943`: https://github.com/saltstack/salt/issues/42943 +.. _`#42944`: https://github.com/saltstack/salt/pull/42944 +.. _`#42945`: https://github.com/saltstack/salt/pull/42945 +.. _`#42946`: https://github.com/saltstack/salt/pull/42946 +.. _`#42948`: https://github.com/saltstack/salt/pull/42948 +.. _`#42949`: https://github.com/saltstack/salt/pull/42949 +.. _`#42950`: https://github.com/saltstack/salt/pull/42950 +.. _`#42951`: https://github.com/saltstack/salt/pull/42951 +.. _`#42952`: https://github.com/saltstack/salt/pull/42952 +.. _`#42953`: https://github.com/saltstack/salt/pull/42953 +.. _`#42954`: https://github.com/saltstack/salt/pull/42954 +.. _`#42958`: https://github.com/saltstack/salt/pull/42958 +.. _`#42959`: https://github.com/saltstack/salt/pull/42959 +.. _`#42962`: https://github.com/saltstack/salt/pull/42962 +.. _`#42963`: https://github.com/saltstack/salt/pull/42963 +.. _`#42964`: https://github.com/saltstack/salt/pull/42964 +.. _`#42967`: https://github.com/saltstack/salt/pull/42967 +.. _`#42968`: https://github.com/saltstack/salt/pull/42968 +.. _`#42969`: https://github.com/saltstack/salt/pull/42969 +.. _`#42985`: https://github.com/saltstack/salt/pull/42985 +.. _`#42986`: https://github.com/saltstack/salt/pull/42986 +.. _`#42988`: https://github.com/saltstack/salt/pull/42988 +.. _`#42989`: https://github.com/saltstack/salt/issues/42989 +.. _`#42992`: https://github.com/saltstack/salt/issues/42992 +.. _`#42993`: https://github.com/saltstack/salt/pull/42993 +.. _`#42995`: https://github.com/saltstack/salt/pull/42995 +.. _`#42996`: https://github.com/saltstack/salt/pull/42996 +.. _`#42997`: https://github.com/saltstack/salt/pull/42997 +.. _`#42999`: https://github.com/saltstack/salt/pull/42999 +.. _`#43002`: https://github.com/saltstack/salt/pull/43002 +.. _`#43006`: https://github.com/saltstack/salt/pull/43006 +.. _`#43008`: https://github.com/saltstack/salt/issues/43008 +.. _`#43009`: https://github.com/saltstack/salt/pull/43009 +.. _`#43010`: https://github.com/saltstack/salt/pull/43010 +.. _`#43014`: https://github.com/saltstack/salt/pull/43014 +.. _`#43016`: https://github.com/saltstack/salt/pull/43016 +.. _`#43019`: https://github.com/saltstack/salt/pull/43019 +.. _`#43020`: https://github.com/saltstack/salt/pull/43020 +.. _`#43021`: https://github.com/saltstack/salt/pull/43021 +.. _`#43023`: https://github.com/saltstack/salt/pull/43023 +.. _`#43024`: https://github.com/saltstack/salt/pull/43024 +.. _`#43026`: https://github.com/saltstack/salt/pull/43026 +.. _`#43027`: https://github.com/saltstack/salt/pull/43027 +.. _`#43029`: https://github.com/saltstack/salt/pull/43029 +.. _`#43030`: https://github.com/saltstack/salt/pull/43030 +.. _`#43031`: https://github.com/saltstack/salt/pull/43031 +.. _`#43032`: https://github.com/saltstack/salt/pull/43032 +.. _`#43033`: https://github.com/saltstack/salt/pull/43033 +.. _`#43034`: https://github.com/saltstack/salt/pull/43034 +.. _`#43035`: https://github.com/saltstack/salt/pull/43035 +.. _`#43036`: https://github.com/saltstack/salt/issues/43036 +.. _`#43037`: https://github.com/saltstack/salt/pull/43037 +.. _`#43038`: https://github.com/saltstack/salt/pull/43038 +.. _`#43039`: https://github.com/saltstack/salt/pull/43039 +.. _`#43040`: https://github.com/saltstack/salt/issues/43040 +.. _`#43041`: https://github.com/saltstack/salt/pull/43041 +.. _`#43043`: https://github.com/saltstack/salt/issues/43043 +.. _`#43048`: https://github.com/saltstack/salt/pull/43048 +.. _`#43051`: https://github.com/saltstack/salt/pull/43051 +.. _`#43054`: https://github.com/saltstack/salt/pull/43054 +.. _`#43056`: https://github.com/saltstack/salt/pull/43056 +.. _`#43058`: https://github.com/saltstack/salt/pull/43058 +.. _`#43060`: https://github.com/saltstack/salt/pull/43060 +.. _`#43061`: https://github.com/saltstack/salt/pull/43061 +.. _`#43064`: https://github.com/saltstack/salt/pull/43064 +.. _`#43068`: https://github.com/saltstack/salt/pull/43068 +.. _`#43073`: https://github.com/saltstack/salt/pull/43073 +.. _`#43077`: https://github.com/saltstack/salt/issues/43077 +.. _`#43085`: https://github.com/saltstack/salt/issues/43085 +.. _`#43087`: https://github.com/saltstack/salt/pull/43087 +.. _`#43088`: https://github.com/saltstack/salt/pull/43088 +.. _`#43091`: https://github.com/saltstack/salt/pull/43091 +.. _`#43092`: https://github.com/saltstack/salt/pull/43092 +.. _`#43093`: https://github.com/saltstack/salt/pull/43093 +.. _`#43097`: https://github.com/saltstack/salt/pull/43097 +.. _`#43100`: https://github.com/saltstack/salt/pull/43100 +.. _`#43101`: https://github.com/saltstack/salt/issues/43101 +.. _`#43103`: https://github.com/saltstack/salt/pull/43103 +.. _`#43107`: https://github.com/saltstack/salt/pull/43107 +.. _`#43108`: https://github.com/saltstack/salt/pull/43108 +.. _`#43110`: https://github.com/saltstack/salt/issues/43110 +.. _`#43115`: https://github.com/saltstack/salt/pull/43115 +.. _`#43116`: https://github.com/saltstack/salt/pull/43116 +.. _`#43123`: https://github.com/saltstack/salt/pull/43123 +.. _`#43142`: https://github.com/saltstack/salt/pull/43142 +.. _`#43143`: https://github.com/saltstack/salt/issues/43143 +.. _`#43146`: https://github.com/saltstack/salt/pull/43146 +.. _`#43151`: https://github.com/saltstack/salt/pull/43151 +.. _`#43155`: https://github.com/saltstack/salt/pull/43155 +.. _`#43156`: https://github.com/saltstack/salt/pull/43156 +.. _`#43162`: https://github.com/saltstack/salt/issues/43162 +.. _`#43165`: https://github.com/saltstack/salt/pull/43165 +.. _`#43166`: https://github.com/saltstack/salt/pull/43166 +.. _`#43168`: https://github.com/saltstack/salt/pull/43168 +.. _`#43170`: https://github.com/saltstack/salt/pull/43170 +.. _`#43171`: https://github.com/saltstack/salt/pull/43171 +.. _`#43172`: https://github.com/saltstack/salt/pull/43172 +.. _`#43173`: https://github.com/saltstack/salt/pull/43173 +.. _`#43178`: https://github.com/saltstack/salt/pull/43178 +.. _`#43179`: https://github.com/saltstack/salt/pull/43179 +.. _`#43184`: https://github.com/saltstack/salt/pull/43184 +.. _`#43193`: https://github.com/saltstack/salt/pull/43193 +.. _`#43196`: https://github.com/saltstack/salt/pull/43196 +.. _`#43198`: https://github.com/saltstack/salt/issues/43198 +.. _`#43199`: https://github.com/saltstack/salt/pull/43199 +.. _`#43201`: https://github.com/saltstack/salt/pull/43201 +.. _`#43202`: https://github.com/saltstack/salt/pull/43202 +.. _`#43217`: https://github.com/saltstack/salt/pull/43217 +.. _`#43226`: https://github.com/saltstack/salt/pull/43226 +.. _`#43227`: https://github.com/saltstack/salt/pull/43227 +.. _`#43228`: https://github.com/saltstack/salt/pull/43228 +.. _`#43229`: https://github.com/saltstack/salt/pull/43229 +.. _`#43241`: https://github.com/saltstack/salt/issues/43241 +.. _`#43251`: https://github.com/saltstack/salt/pull/43251 +.. _`#43254`: https://github.com/saltstack/salt/pull/43254 +.. _`#43255`: https://github.com/saltstack/salt/pull/43255 +.. _`#43256`: https://github.com/saltstack/salt/pull/43256 +.. _`#43259`: https://github.com/saltstack/salt/issues/43259 +.. _`#43266`: https://github.com/saltstack/salt/pull/43266 +.. _`#43283`: https://github.com/saltstack/salt/pull/43283 +.. _`#43315`: https://github.com/saltstack/salt/pull/43315 +.. _`#43330`: https://github.com/saltstack/salt/pull/43330 +.. _`#43333`: https://github.com/saltstack/salt/pull/43333 +.. _`#43377`: https://github.com/saltstack/salt/pull/43377 +.. _`#43421`: https://github.com/saltstack/salt/pull/43421 +.. _`#43440`: https://github.com/saltstack/salt/pull/43440 +.. _`#43447`: https://github.com/saltstack/salt/issues/43447 +.. _`#43509`: https://github.com/saltstack/salt/pull/43509 +.. _`#43526`: https://github.com/saltstack/salt/pull/43526 +.. _`#43551`: https://github.com/saltstack/salt/pull/43551 +.. _`#43585`: https://github.com/saltstack/salt/pull/43585 +.. _`#43586`: https://github.com/saltstack/salt/pull/43586 +.. _`#475`: https://github.com/saltstack/salt/issues/475 +.. _`#480`: https://github.com/saltstack/salt/issues/480 +.. _`#495`: https://github.com/saltstack/salt/issues/495 +.. _`bp-37424`: https://github.com/saltstack/salt/pull/37424 +.. _`bp-39366`: https://github.com/saltstack/salt/pull/39366 +.. _`bp-41543`: https://github.com/saltstack/salt/pull/41543 +.. _`bp-41690`: https://github.com/saltstack/salt/pull/41690 +.. _`bp-42067`: https://github.com/saltstack/salt/pull/42067 +.. _`bp-42097`: https://github.com/saltstack/salt/pull/42097 +.. _`bp-42098`: https://github.com/saltstack/salt/pull/42098 +.. _`bp-42109`: https://github.com/saltstack/salt/pull/42109 +.. _`bp-42174`: https://github.com/saltstack/salt/pull/42174 +.. _`bp-42224`: https://github.com/saltstack/salt/pull/42224 +.. _`bp-42433`: https://github.com/saltstack/salt/pull/42433 +.. _`bp-42547`: https://github.com/saltstack/salt/pull/42547 +.. _`bp-42552`: https://github.com/saltstack/salt/pull/42552 +.. _`bp-42589`: https://github.com/saltstack/salt/pull/42589 +.. _`bp-42651`: https://github.com/saltstack/salt/pull/42651 +.. _`bp-42744`: https://github.com/saltstack/salt/pull/42744 +.. _`bp-42760`: https://github.com/saltstack/salt/pull/42760 +.. _`bp-42784`: https://github.com/saltstack/salt/pull/42784 +.. _`bp-42848`: https://github.com/saltstack/salt/pull/42848 +.. _`bp-42871`: https://github.com/saltstack/salt/pull/42871 +.. _`bp-42883`: https://github.com/saltstack/salt/pull/42883 +.. _`bp-42988`: https://github.com/saltstack/salt/pull/42988 +.. _`bp-43002`: https://github.com/saltstack/salt/pull/43002 +.. _`bp-43020`: https://github.com/saltstack/salt/pull/43020 +.. _`bp-43031`: https://github.com/saltstack/salt/pull/43031 +.. _`bp-43041`: https://github.com/saltstack/salt/pull/43041 +.. _`bp-43068`: https://github.com/saltstack/salt/pull/43068 +.. _`bp-43116`: https://github.com/saltstack/salt/pull/43116 +.. _`bp-43193`: https://github.com/saltstack/salt/pull/43193 +.. _`bp-43283`: https://github.com/saltstack/salt/pull/43283 +.. _`bp-43330`: https://github.com/saltstack/salt/pull/43330 +.. _`bp-43333`: https://github.com/saltstack/salt/pull/43333 +.. _`bp-43421`: https://github.com/saltstack/salt/pull/43421 +.. _`bp-43526`: https://github.com/saltstack/salt/pull/43526 +.. _`fix-38839`: https://github.com/saltstack/salt/issues/38839 +.. _`fix-41116`: https://github.com/saltstack/salt/issues/41116 +.. _`fix-41721`: https://github.com/saltstack/salt/issues/41721 +.. _`fix-41885`: https://github.com/saltstack/salt/issues/41885 +.. _`fix-42115`: https://github.com/saltstack/salt/issues/42115 +.. _`fix-42151`: https://github.com/saltstack/salt/issues/42151 +.. _`fix-42152`: https://github.com/saltstack/salt/issues/42152 +.. _`fix-42166`: https://github.com/saltstack/salt/issues/42166 +.. _`fix-42267`: https://github.com/saltstack/salt/issues/42267 +.. _`fix-42375`: https://github.com/saltstack/salt/issues/42375 +.. _`fix-42381`: https://github.com/saltstack/salt/issues/42381 +.. _`fix-42405`: https://github.com/saltstack/salt/issues/42405 +.. _`fix-42417`: https://github.com/saltstack/salt/issues/42417 +.. _`fix-42639`: https://github.com/saltstack/salt/issues/42639 +.. _`fix-42683`: https://github.com/saltstack/salt/issues/42683 +.. _`fix-42697`: https://github.com/saltstack/salt/issues/42697 +.. _`fix-42870`: https://github.com/saltstack/salt/issues/42870 + +Build Notes +=========== + +Mac Installer Packages +-------------------------- + +Mac Installer packages have been patched with the following PR: 43756_ + +.. _43756: https://github.com/saltstack/salt/pull/43756 diff --git a/salt/cli/batch.py b/salt/cli/batch.py index 55880c3b836..0bd4a7ace6c 100644 --- a/salt/cli/batch.py +++ b/salt/cli/batch.py @@ -143,10 +143,11 @@ class Batch(object): # sure that the main while loop finishes even with unresp minions minion_tracker = {} - # We already know some minions didn't respond to the ping, so inform - # the user we won't be attempting to run a job on them - for down_minion in self.down_minions: - salt.utils.print_cli('Minion {0} did not respond. No job will be sent.'.format(down_minion)) + if not self.quiet: + # We already know some minions didn't respond to the ping, so inform + # the user we won't be attempting to run a job on them + for down_minion in self.down_minions: + salt.utils.print_cli('Minion {0} did not respond. No job will be sent.'.format(down_minion)) # Iterate while we still have things to execute while len(ret) < len(self.minions): diff --git a/salt/cloud/clouds/azurearm.py b/salt/cloud/clouds/azurearm.py index 51036c3eea3..d218735b328 100644 --- a/salt/cloud/clouds/azurearm.py +++ b/salt/cloud/clouds/azurearm.py @@ -401,8 +401,9 @@ def list_nodes(conn=None, call=None): # pylint: disable=unused-argument pass for node in nodes: - if not nodes[node]['resource_group'] == active_resource_group: - continue + if active_resource_group is not None: + if nodes[node]['resource_group'] != active_resource_group: + continue ret[node] = {'name': node} for prop in ('id', 'image', 'size', 'state', 'private_ips', 'public_ips'): ret[node][prop] = nodes[node].get(prop) diff --git a/salt/cloud/clouds/ec2.py b/salt/cloud/clouds/ec2.py index ac45a7a62ba..b7a9061c003 100644 --- a/salt/cloud/clouds/ec2.py +++ b/salt/cloud/clouds/ec2.py @@ -1988,7 +1988,7 @@ def request_instance(vm_=None, call=None): params[termination_key] = str(set_del_root_vol_on_destroy).lower() # Use default volume type if not specified - if ex_blockdevicemappings and 'Ebs.VolumeType' not in ex_blockdevicemappings[dev_index]: + if ex_blockdevicemappings and dev_index < len(ex_blockdevicemappings) and 'Ebs.VolumeType' not in ex_blockdevicemappings[dev_index]: type_key = '{0}BlockDeviceMapping.{1}.Ebs.VolumeType'.format(spot_prefix, dev_index) params[type_key] = rd_type diff --git a/salt/daemons/masterapi.py b/salt/daemons/masterapi.py index 07b2738b799..2c2ff5cac32 100644 --- a/salt/daemons/masterapi.py +++ b/salt/daemons/masterapi.py @@ -236,12 +236,12 @@ def access_keys(opts): # Check other users matching ACL patterns if opts['client_acl_verify'] and HAS_PWD: - log.profile('Beginning pwd.getpwall() call in masterarpi access_keys function') + log.profile('Beginning pwd.getpwall() call in masterapi access_keys function') for user in pwd.getpwall(): user = user.pw_name if user not in keys and salt.utils.check_whitelist_blacklist(user, whitelist=acl_users): keys[user] = mk_key(opts, user) - log.profile('End pwd.getpwall() call in masterarpi access_keys function') + log.profile('End pwd.getpwall() call in masterapi access_keys function') return keys diff --git a/salt/engines/docker_events.py b/salt/engines/docker_events.py index 3985213e6fd..f2ec60f9135 100644 --- a/salt/engines/docker_events.py +++ b/salt/engines/docker_events.py @@ -74,8 +74,12 @@ def start(docker_url='unix://var/run/docker.sock', else: __salt__['event.send'](tag, msg) - client = docker.Client(base_url=docker_url, - timeout=timeout) + try: + # docker-py 2.0 renamed this client attribute + client = docker.APIClient(base_url=docker_url, timeout=timeout) + except AttributeError: + client = docker.Client(base_url=docker_url, timeout=timeout) + try: events = client.events() for event in events: diff --git a/salt/fileserver/roots.py b/salt/fileserver/roots.py index c795163b9d4..0547ff0e627 100644 --- a/salt/fileserver/roots.py +++ b/salt/fileserver/roots.py @@ -351,6 +351,16 @@ def _file_lists(load, form): 'roots: %s symlink destination is %s', abs_path, link_dest ) + if salt.utils.is_windows() \ + and link_dest.startswith('\\\\'): + # Symlink points to a network path. Since you can't + # join UNC and non-UNC paths, just assume the original + # path. + log.trace( + 'roots: %s is a UNCH path, using %s instead', + link_dest, abs_path + ) + link_dest = abs_path if link_dest.startswith('..'): joined = os.path.join(abs_path, link_dest) else: diff --git a/salt/master.py b/salt/master.py index 19e11002c20..7bd6c93ab77 100644 --- a/salt/master.py +++ b/salt/master.py @@ -59,7 +59,6 @@ import salt.minion import salt.key import salt.acl import salt.engines -import salt.fileserver import salt.daemons.masterapi import salt.defaults.exitcodes import salt.transport.server @@ -183,7 +182,8 @@ class Maintenance(salt.utils.process.SignalHandlingMultiprocessingProcess): in the parent process, then once the fork happens you'll start getting errors like "WARNING: Mixing fork() and threads detected; memory leaked." ''' - # Init fileserver manager + # Avoid circular import + import salt.fileserver self.fileserver = salt.fileserver.Fileserver(self.opts) # Load Runners ropts = dict(self.opts) @@ -444,6 +444,8 @@ class Master(SMaster): ) if self.opts.get(u'fileserver_verify_config', True): + # Avoid circular import + import salt.fileserver fileserver = salt.fileserver.Fileserver(self.opts) if not fileserver.servers: errors.append( @@ -479,16 +481,15 @@ class Master(SMaster): if git_pillars: try: new_opts = copy.deepcopy(self.opts) - from salt.pillar.git_pillar \ - import PER_REMOTE_OVERRIDES as per_remote_overrides, \ - PER_REMOTE_ONLY as per_remote_only + import salt.pillar.git_pillar for repo in git_pillars: new_opts[u'ext_pillar'] = [repo] try: git_pillar = salt.utils.gitfs.GitPillar(new_opts) - git_pillar.init_remotes(repo[u'git'], - per_remote_overrides, - per_remote_only) + git_pillar.init_remotes( + repo[u'git'], + salt.pillar.git_pillar.PER_REMOTE_OVERRIDES, + salt.pillar.git_pillar.PER_REMOTE_ONLY) except FileserverConfigError as exc: critical_errors.append(exc.strerror) finally: @@ -956,6 +957,8 @@ class AESFuncs(object): ''' Set the local file objects from the file server interface ''' + # Avoid circular import + import salt.fileserver self.fs_ = salt.fileserver.Fileserver(self.opts) self._serve_file = self.fs_.serve_file self._file_find = self.fs_._find_file diff --git a/salt/modules/boto_kinesis.py b/salt/modules/boto_kinesis.py index fa75140e2da..cd0e3d7d3ee 100644 --- a/salt/modules/boto_kinesis.py +++ b/salt/modules/boto_kinesis.py @@ -66,15 +66,17 @@ except ImportError: log = logging.getLogger(__name__) +__virtualname__ = 'boto_kinesis' + def __virtual__(): ''' Only load if boto3 libraries exist. ''' if not HAS_BOTO: - return False + return False, 'The boto_kinesis module could not be loaded: boto libraries not found.' __utils__['boto3.assign_funcs'](__name__, 'kinesis') - return True + return __virtualname__ def _get_basic_stream(stream_name, conn): diff --git a/salt/modules/ini_manage.py b/salt/modules/ini_manage.py index 9af24eda199..0f1e8bce115 100644 --- a/salt/modules/ini_manage.py +++ b/salt/modules/ini_manage.py @@ -373,10 +373,11 @@ class _Ini(_Section): with salt.utils.files.fopen(self.name) as rfh: inicontents = rfh.read() except (OSError, IOError) as exc: - raise CommandExecutionError( - "Unable to open file '{0}'. " - "Exception: {1}".format(self.name, exc) - ) + if __opts__['test'] is False: + raise CommandExecutionError( + "Unable to open file '{0}'. " + "Exception: {1}".format(self.name, exc) + ) if not inicontents: return # Remove anything left behind from a previous run. diff --git a/salt/modules/win_repo.py b/salt/modules/win_repo.py index 975ba40496d..0d23e1c7fca 100644 --- a/salt/modules/win_repo.py +++ b/salt/modules/win_repo.py @@ -27,7 +27,8 @@ from salt.exceptions import CommandExecutionError, SaltRenderError from salt.runners.winrepo import ( genrepo as _genrepo, update_git_repos as _update_git_repos, - PER_REMOTE_OVERRIDES + PER_REMOTE_OVERRIDES, + PER_REMOTE_ONLY ) from salt.ext import six try: diff --git a/salt/pillar/__init__.py b/salt/pillar/__init__.py index 8a0756251ca..e6da1d8c80d 100644 --- a/salt/pillar/__init__.py +++ b/salt/pillar/__init__.py @@ -886,9 +886,12 @@ class Pillar(object): and self.opts.get('__role') != 'minion': # Avoid circular import import salt.utils.gitfs - from salt.pillar.git_pillar import PER_REMOTE_OVERRIDES + import salt.pillar.git_pillar git_pillar = salt.utils.gitfs.GitPillar(self.opts) - git_pillar.init_remotes(self.ext['git'], PER_REMOTE_OVERRIDES) + git_pillar.init_remotes( + self.ext['git'], + salt.pillar.git_pillar.PER_REMOTE_OVERRIDES, + salt.pillar.git_pillar.PER_REMOTE_ONLY) git_pillar.fetch_remotes() except TypeError: # Handle malformed ext_pillar diff --git a/salt/pillar/git_pillar.py b/salt/pillar/git_pillar.py index 12bab065d81..fec485263d5 100644 --- a/salt/pillar/git_pillar.py +++ b/salt/pillar/git_pillar.py @@ -348,6 +348,12 @@ from salt.ext import six PER_REMOTE_OVERRIDES = ('env', 'root', 'ssl_verify', 'refspecs') PER_REMOTE_ONLY = ('name', 'mountpoint') +# Fall back to default per-remote-only. This isn't technically needed since +# salt.utils.gitfs.GitBase.init_remotes() will default to +# salt.utils.gitfs.PER_REMOTE_ONLY for this value, so this is mainly for +# runners and other modules that import salt.pillar.git_pillar. +PER_REMOTE_ONLY = salt.utils.gitfs.PER_REMOTE_ONLY + # Set up logging log = logging.getLogger(__name__) diff --git a/salt/runners/cache.py b/salt/runners/cache.py index af074e4aba0..a821d2d7a6e 100644 --- a/salt/runners/cache.py +++ b/salt/runners/cache.py @@ -18,12 +18,11 @@ import salt.utils.master import salt.utils.versions import salt.payload import salt.cache +import salt.fileserver.gitfs +import salt.pillar.git_pillar +import salt.runners.winrepo from salt.exceptions import SaltInvocationError from salt.fileserver import clear_lock as _clear_lock -from salt.fileserver.gitfs import PER_REMOTE_OVERRIDES as __GITFS_OVERRIDES -from salt.pillar.git_pillar \ - import PER_REMOTE_OVERRIDES as __GIT_PILLAR_OVERRIDES -from salt.runners.winrepo import PER_REMOTE_OVERRIDES as __WINREPO_OVERRIDES log = logging.getLogger(__name__) @@ -330,8 +329,10 @@ def clear_git_lock(role, remote=None, **kwargs): if role == 'gitfs': git_objects = [salt.utils.gitfs.GitFS(__opts__)] - git_objects[0].init_remotes(__opts__['gitfs_remotes'], - __GITFS_OVERRIDES) + git_objects[0].init_remotes( + __opts__['gitfs_remotes'], + salt.fileserver.gitfs.PER_REMOTE_OVERRIDES, + salt.fileserver.gitfs.PER_REMOTE_ONLY) elif role == 'git_pillar': git_objects = [] for ext_pillar in __opts__['ext_pillar']: @@ -340,7 +341,10 @@ def clear_git_lock(role, remote=None, **kwargs): if not isinstance(ext_pillar['git'], list): continue obj = salt.utils.gitfs.GitPillar(__opts__) - obj.init_remotes(ext_pillar['git'], __GIT_PILLAR_OVERRIDES) + obj.init_remotes( + ext_pillar['git'], + salt.pillar.git_pillar.PER_REMOTE_OVERRIDES, + salt.pillar.git_pillar.PER_REMOTE_ONLY) git_objects.append(obj) elif role == 'winrepo': winrepo_dir = __opts__['winrepo_dir'] @@ -352,7 +356,10 @@ def clear_git_lock(role, remote=None, **kwargs): (__opts__['winrepo_remotes_ng'], __opts__['winrepo_dir_ng']) ): obj = salt.utils.gitfs.WinRepo(__opts__, base_dir) - obj.init_remotes(remotes, __WINREPO_OVERRIDES) + obj.init_remotes( + remotes, + salt.runners.winrepo.PER_REMOTE_OVERRIDES, + salt.runners.winrepo.PER_REMOTE_ONLY) git_objects.append(obj) else: raise SaltInvocationError('Invalid role \'{0}\''.format(role)) diff --git a/salt/runners/survey.py b/salt/runners/survey.py index 3fd2b1014f7..d7337352f9a 100644 --- a/salt/runners/survey.py +++ b/salt/runners/survey.py @@ -171,7 +171,7 @@ def _get_pool_results(*args, **kwargs): # hash minion return values as a string for minion in sorted(minions): - digest = hashlib.sha256(str(minions[minion])).hexdigest() + digest = hashlib.sha256(str(minions[minion]).encode(__salt_system_encoding__)).hexdigest() if digest not in ret: ret[digest] = {} ret[digest]['pool'] = [] diff --git a/salt/runners/winrepo.py b/salt/runners/winrepo.py index 01c209d3820..1e73974c4ef 100644 --- a/salt/runners/winrepo.py +++ b/salt/runners/winrepo.py @@ -31,6 +31,12 @@ log = logging.getLogger(__name__) # Global parameters which can be overridden on a per-remote basis PER_REMOTE_OVERRIDES = ('ssl_verify', 'refspecs') +# Fall back to default per-remote-only. This isn't technically needed since +# salt.utils.gitfs.GitBase.init_remotes() will default to +# salt.utils.gitfs.PER_REMOTE_ONLY for this value, so this is mainly for +# runners and other modules that import salt.runners.winrepo. +PER_REMOTE_ONLY = salt.utils.gitfs.PER_REMOTE_ONLY + def genrepo(opts=None, fire_event=True): ''' @@ -211,7 +217,8 @@ def update_git_repos(opts=None, clean=False, masterless=False): # New winrepo code utilizing salt.utils.gitfs try: winrepo = salt.utils.gitfs.WinRepo(opts, base_dir) - winrepo.init_remotes(remotes, PER_REMOTE_OVERRIDES) + winrepo.init_remotes( + remotes, PER_REMOTE_OVERRIDES, PER_REMOTE_ONLY) winrepo.fetch_remotes() # Since we're not running update(), we need to manually call # clear_old_remotes() to remove directories from remotes that diff --git a/salt/states/boto_kinesis.py b/salt/states/boto_kinesis.py index 6b7e73a4954..ae8a5d63a77 100644 --- a/salt/states/boto_kinesis.py +++ b/salt/states/boto_kinesis.py @@ -63,13 +63,16 @@ import logging log = logging.getLogger(__name__) +__virtualname__ = 'boto_kinesis' + def __virtual__(): ''' Only load if boto_kinesis is available. ''' - ret = 'boto_kinesis' if 'boto_kinesis.exists' in __salt__ else False - return ret + if 'boto_kinesis.exists' in __salt__: + return __virtualname__ + return False, 'The boto_kinesis module could not be loaded: boto libraries not found.' def present(name, diff --git a/salt/states/ini_manage.py b/salt/states/ini_manage.py index d0ed67e8d37..cb5c1174c55 100644 --- a/salt/states/ini_manage.py +++ b/salt/states/ini_manage.py @@ -93,7 +93,7 @@ def options_present(name, sections=None, separator='=', strict=False): del changes[section_name] else: changes = __salt__['ini.set_option'](name, sections, separator) - except IOError as err: + except (IOError, KeyError) as err: ret['comment'] = "{0}".format(err) ret['result'] = False return ret @@ -102,12 +102,10 @@ def options_present(name, sections=None, separator='=', strict=False): ret['comment'] = 'Errors encountered. {0}'.format(changes['error']) ret['changes'] = {} else: - if changes: - ret['changes'] = changes - ret['comment'] = 'Changes take effect' - else: - ret['changes'] = {} - ret['comment'] = 'No changes take effect' + for name, body in changes.items(): + if body: + ret['comment'] = 'Changes take effect' + ret['changes'].update({name: changes[name]}) return ret diff --git a/salt/utils/path.py b/salt/utils/path.py index b9700fdc3aa..a72e43522fd 100644 --- a/salt/utils/path.py +++ b/salt/utils/path.py @@ -120,6 +120,11 @@ def readlink(path): # comes out in 8.3 form; convert it to LFN to make it look nicer target = win32file.GetLongPathName(target) except pywinerror as exc: + # If target is on a UNC share, the decoded target will be in the format + # "UNC\hostanme\sharename\additional\subdirs\under\share". So, in + # these cases, return the target path in the proper UNC path format. + if target.startswith('UNC\\'): + return re.sub(r'^UNC\\+', r'\\\\', target) # if file is not found (i.e. bad symlink), return it anyway like on *nix if exc.winerror == 2: return target diff --git a/tests/unit/modules/test_snapper.py b/tests/unit/modules/test_snapper.py index 18fded6f735..4d55d239281 100644 --- a/tests/unit/modules/test_snapper.py +++ b/tests/unit/modules/test_snapper.py @@ -141,6 +141,7 @@ MODULE_RET = { } +@skipIf(sys.platform.startswith('win'), 'Snapper not available on Windows') @skipIf(NO_MOCK, NO_MOCK_REASON) class SnapperTestCase(TestCase, LoaderModuleMockMixin): diff --git a/tests/unit/modules/test_state.py b/tests/unit/modules/test_state.py index b6dc97af05e..7d9b78ead1b 100644 --- a/tests/unit/modules/test_state.py +++ b/tests/unit/modules/test_state.py @@ -283,7 +283,7 @@ class MockTarFile(object): ''' Mock tarfile class ''' - path = "/tmp" + path = os.sep + "tmp" def __init__(self): pass @@ -961,36 +961,32 @@ class StateTestCase(TestCase, LoaderModuleMockMixin): ''' Test to execute a packaged state run ''' + tar_file = os.sep + os.path.join('tmp', 'state_pkg.tgz') mock = MagicMock(side_effect=[False, True, True, True, True, True, True, True]) with patch.object(os.path, 'isfile', mock), \ patch('salt.modules.state.tarfile', MockTarFile), \ patch('salt.modules.state.json', MockJson()): - self.assertEqual(state.pkg("/tmp/state_pkg.tgz", "", "md5"), {}) + self.assertEqual(state.pkg(tar_file, "", "md5"), {}) mock = MagicMock(side_effect=[False, 0, 0, 0, 0]) with patch.object(salt.utils, 'get_hash', mock): - self.assertDictEqual(state.pkg("/tmp/state_pkg.tgz", "", "md5"), - {}) + # Verify hash + self.assertDictEqual(state.pkg(tar_file, "", "md5"), {}) - self.assertDictEqual(state.pkg("/tmp/state_pkg.tgz", 0, "md5"), - {}) + # Verify file outside intended root + self.assertDictEqual(state.pkg(tar_file, 0, "md5"), {}) MockTarFile.path = "" MockJson.flag = True with patch('salt.utils.files.fopen', mock_open()): - self.assertListEqual(state.pkg("/tmp/state_pkg.tgz", - 0, - "md5"), - [True]) + self.assertListEqual(state.pkg(tar_file, 0, "md5"), [True]) MockTarFile.path = "" MockJson.flag = False if six.PY2: with patch('salt.utils.files.fopen', mock_open()), \ patch.dict(state.__utils__, {'state.check_result': MagicMock(return_value=True)}): - self.assertTrue(state.pkg("/tmp/state_pkg.tgz", - 0, "md5")) + self.assertTrue(state.pkg(tar_file, 0, "md5")) else: with patch('salt.utils.files.fopen', mock_open()): - self.assertTrue(state.pkg("/tmp/state_pkg.tgz", - 0, "md5")) + self.assertTrue(state.pkg(tar_file, 0, "md5")) diff --git a/tests/unit/modules/test_status.py b/tests/unit/modules/test_status.py index 832ca427bbe..fadd448aaac 100644 --- a/tests/unit/modules/test_status.py +++ b/tests/unit/modules/test_status.py @@ -2,6 +2,7 @@ # Import Python libs from __future__ import absolute_import +import os # Import Salt Libs import salt.utils.platform @@ -78,18 +79,19 @@ class StatusTestCase(TestCase, LoaderModuleMockMixin): is_darwin=MagicMock(return_value=False), is_freebsd=MagicMock(return_value=False), is_openbsd=MagicMock(return_value=False), - is_netbsd=MagicMock(return_value=False)): - with patch.dict(status.__salt__, {'cmd.run': MagicMock(return_value="1\n2\n3")}): - with patch('time.time', MagicMock(return_value=m.now)): - with patch('os.path.exists', MagicMock(return_value=True)): - proc_uptime = '{0} {1}'.format(m.ut, m.idle) - with patch('salt.utils.files.fopen', mock_open(read_data=proc_uptime)): - ret = status.uptime() - self.assertDictEqual(ret, m.ret) + is_netbsd=MagicMock(return_value=False)), \ + patch('salt.utils.path.which', MagicMock(return_value=True)), \ + patch.dict(status.__salt__, {'cmd.run': MagicMock(return_value=os.linesep.join(['1', '2', '3']))}), \ + patch('time.time', MagicMock(return_value=m.now)), \ + patch('os.path.exists', MagicMock(return_value=True)): + proc_uptime = '{0} {1}'.format(m.ut, m.idle) - with patch('os.path.exists', MagicMock(return_value=False)): - with self.assertRaises(CommandExecutionError): - status.uptime() + with patch('salt.utils.files.fopen', mock_open(read_data=proc_uptime)): + ret = status.uptime() + self.assertDictEqual(ret, m.ret) + with patch('os.path.exists', MagicMock(return_value=False)): + with self.assertRaises(CommandExecutionError): + status.uptime() def test_uptime_sunos(self): ''' @@ -103,13 +105,13 @@ class StatusTestCase(TestCase, LoaderModuleMockMixin): is_darwin=MagicMock(return_value=False), is_freebsd=MagicMock(return_value=False), is_openbsd=MagicMock(return_value=False), - is_netbsd=MagicMock(return_value=False)): - - with patch.dict(status.__salt__, {'cmd.run': MagicMock(return_value="1\n2\n3"), - 'cmd.run_all': MagicMock(return_value=m2.ret)}): - with patch('time.time', MagicMock(return_value=m.now)): - ret = status.uptime() - self.assertDictEqual(ret, m.ret) + is_netbsd=MagicMock(return_value=False)), \ + patch('salt.utils.path.which', MagicMock(return_value=True)), \ + patch.dict(status.__salt__, {'cmd.run': MagicMock(return_value=os.linesep.join(['1', '2', '3'])), + 'cmd.run_all': MagicMock(return_value=m2.ret)}), \ + patch('time.time', MagicMock(return_value=m.now)): + ret = status.uptime() + self.assertDictEqual(ret, m.ret) def test_uptime_macos(self): ''' @@ -125,12 +127,14 @@ class StatusTestCase(TestCase, LoaderModuleMockMixin): is_darwin=MagicMock(return_value=True), is_freebsd=MagicMock(return_value=False), is_openbsd=MagicMock(return_value=False), - is_netbsd=MagicMock(return_value=False)): - with patch.dict(status.__salt__, {'cmd.run': MagicMock(return_value="1\n2\n3"), - 'sysctl.get': MagicMock(return_value=kern_boottime)}): - with patch('time.time', MagicMock(return_value=m.now)): - ret = status.uptime() - self.assertDictEqual(ret, m.ret) + is_netbsd=MagicMock(return_value=False)), \ + patch('salt.utils.path.which', MagicMock(return_value=True)), \ + patch.dict(status.__salt__, {'cmd.run': MagicMock(return_value=os.linesep.join(['1', '2', '3'])), + 'sysctl.get': MagicMock(return_value=kern_boottime)}), \ + patch('time.time', MagicMock(return_value=m.now)): + + ret = status.uptime() + self.assertDictEqual(ret, m.ret) with patch.dict(status.__salt__, {'sysctl.get': MagicMock(return_value='')}): with self.assertRaises(CommandExecutionError): diff --git a/tests/unit/modules/test_virt.py b/tests/unit/modules/test_virt.py index 52e7f27e0b5..6f72eb091d2 100644 --- a/tests/unit/modules/test_virt.py +++ b/tests/unit/modules/test_virt.py @@ -3,6 +3,7 @@ # Import python libs from __future__ import absolute_import import re +import os # Import Salt Testing libs from tests.support.mixins import LoaderModuleMockMixin @@ -13,6 +14,7 @@ from tests.support.mock import NO_MOCK, NO_MOCK_REASON, MagicMock, patch import salt.modules.virt as virt import salt.modules.config as config from salt._compat import ElementTree as ET +import salt.config import salt.utils # Import third party libs @@ -245,8 +247,9 @@ class VirtTestCase(TestCase, LoaderModuleMockMixin): disks = root.findall('.//disk') self.assertEqual(len(disks), 1) disk = disks[0] - self.assertTrue(disk.find('source').attrib['file'].startswith('/')) - self.assertTrue('hello/system' in disk.find('source').attrib['file']) + root_dir = salt.config.DEFAULT_MINION_OPTS.get('root_dir') + self.assertTrue(disk.find('source').attrib['file'].startswith(root_dir)) + self.assertTrue(os.path.join('hello', 'system') in disk.find('source').attrib['file']) self.assertEqual(disk.find('target').attrib['dev'], 'vda') self.assertEqual(disk.find('target').attrib['bus'], 'virtio') self.assertEqual(disk.find('driver').attrib['name'], 'qemu') @@ -284,7 +287,7 @@ class VirtTestCase(TestCase, LoaderModuleMockMixin): self.assertEqual(len(disks), 1) disk = disks[0] self.assertTrue('[0]' in disk.find('source').attrib['file']) - self.assertTrue('hello/system' in disk.find('source').attrib['file']) + self.assertTrue(os.path.join('hello', 'system') in disk.find('source').attrib['file']) self.assertEqual(disk.find('target').attrib['dev'], 'sda') self.assertEqual(disk.find('target').attrib['bus'], 'scsi') self.assertEqual(disk.find('address').attrib['unit'], '0') diff --git a/tests/unit/modules/test_vsphere.py b/tests/unit/modules/test_vsphere.py index 004149ebc08..1d841896c2a 100644 --- a/tests/unit/modules/test_vsphere.py +++ b/tests/unit/modules/test_vsphere.py @@ -25,6 +25,13 @@ from tests.support.mock import ( call ) +# Import Third Party Libs +try: + from pyVmomi import vim, vmodl # pylint: disable=unused-import + HAS_PYVMOMI = True +except ImportError: + HAS_PYVMOMI = False + # Globals HOST = '1.2.3.4' USER = 'root' @@ -919,7 +926,7 @@ class GetServiceInstanceViaProxyTestCase(TestCase, LoaderModuleMockMixin): mock_connection_details = [MagicMock(), MagicMock(), MagicMock()] mock_get_service_instance = MagicMock() with patch('salt.modules.vsphere._get_proxy_connection_details', - MagicMock(return_value=mock_connection_details)): + MagicMock(return_value=mock_connection_details)): with patch('salt.utils.vmware.get_service_instance', mock_get_service_instance): vsphere.get_service_instance_via_proxy() @@ -929,7 +936,7 @@ class GetServiceInstanceViaProxyTestCase(TestCase, LoaderModuleMockMixin): def test_output(self): mock_si = MagicMock() with patch('salt.utils.vmware.get_service_instance', - MagicMock(return_value=mock_si)): + MagicMock(return_value=mock_si)): res = vsphere.get_service_instance_via_proxy() self.assertEqual(res, mock_si) @@ -1002,7 +1009,7 @@ class TestVcenterConnectionTestCase(TestCase, LoaderModuleMockMixin): def test_is_connection_to_a_vcenter_call_default_service_instance(self): mock_is_connection_to_a_vcenter = MagicMock() with patch('salt.utils.vmware.is_connection_to_a_vcenter', - mock_is_connection_to_a_vcenter): + mock_is_connection_to_a_vcenter): vsphere.test_vcenter_connection() mock_is_connection_to_a_vcenter.assert_called_once_with(self.mock_si) @@ -1010,39 +1017,40 @@ class TestVcenterConnectionTestCase(TestCase, LoaderModuleMockMixin): expl_mock_si = MagicMock() mock_is_connection_to_a_vcenter = MagicMock() with patch('salt.utils.vmware.is_connection_to_a_vcenter', - mock_is_connection_to_a_vcenter): + mock_is_connection_to_a_vcenter): vsphere.test_vcenter_connection(expl_mock_si) mock_is_connection_to_a_vcenter.assert_called_once_with(expl_mock_si) def test_is_connection_to_a_vcenter_raises_vmware_salt_error(self): exc = VMwareSaltError('VMwareSaltError') with patch('salt.utils.vmware.is_connection_to_a_vcenter', - MagicMock(side_effect=exc)): + MagicMock(side_effect=exc)): res = vsphere.test_vcenter_connection() self.assertEqual(res, False) def test_is_connection_to_a_vcenter_raises_non_vmware_salt_error(self): exc = Exception('NonVMwareSaltError') with patch('salt.utils.vmware.is_connection_to_a_vcenter', - MagicMock(side_effect=exc)): + MagicMock(side_effect=exc)): with self.assertRaises(Exception) as excinfo: res = vsphere.test_vcenter_connection() self.assertEqual('NonVMwareSaltError', str(excinfo.exception)) def test_output_true(self): with patch('salt.utils.vmware.is_connection_to_a_vcenter', - MagicMock(return_value=True)): + MagicMock(return_value=True)): res = vsphere.test_vcenter_connection() self.assertEqual(res, True) def test_output_false(self): with patch('salt.utils.vmware.is_connection_to_a_vcenter', - MagicMock(return_value=False)): + MagicMock(return_value=False)): res = vsphere.test_vcenter_connection() self.assertEqual(res, False) @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class ListDatacentersViaProxyTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.list_datacenters_via_proxy''' def setup_loader_modules(self): @@ -1126,6 +1134,7 @@ class ListDatacentersViaProxyTestCase(TestCase, LoaderModuleMockMixin): @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class CreateDatacenterTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.create_datacenter''' def setup_loader_modules(self): @@ -1174,6 +1183,7 @@ class CreateDatacenterTestCase(TestCase, LoaderModuleMockMixin): @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class EraseDiskPartitionsTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.erase_disk_partitions''' def setup_loader_modules(self): @@ -1244,7 +1254,7 @@ class EraseDiskPartitionsTestCase(TestCase, LoaderModuleMockMixin): def test_scsi_address_to_disk_id_map(self): mock_disk_id = MagicMock(canonicalName='fake_scsi_disk_id') mock_get_scsi_addr_to_lun = \ - MagicMock(return_value={'fake_scsi_address': mock_disk_id}) + MagicMock(return_value={'fake_scsi_address': mock_disk_id}) with patch('salt.utils.vmware.get_scsi_address_to_lun_map', mock_get_scsi_addr_to_lun): vsphere.erase_disk_partitions(scsi_address='fake_scsi_address') @@ -1260,6 +1270,7 @@ class EraseDiskPartitionsTestCase(TestCase, LoaderModuleMockMixin): @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class RemoveDatastoreTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.remove_datastore''' def setup_loader_modules(self): @@ -1347,6 +1358,7 @@ class RemoveDatastoreTestCase(TestCase, LoaderModuleMockMixin): @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class RemoveDiskgroupTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.remove_diskgroup''' def setup_loader_modules(self): @@ -1605,6 +1617,7 @@ class RemoveCapacityFromDiskgroupTestCase(TestCase, LoaderModuleMockMixin): @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class ListClusterTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.list_cluster''' def setup_loader_modules(self): @@ -1694,6 +1707,7 @@ class ListClusterTestCase(TestCase, LoaderModuleMockMixin): @skipIf(NO_MOCK, NO_MOCK_REASON) +@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing') class RenameDatastoreTestCase(TestCase, LoaderModuleMockMixin): '''Tests for salt.modules.vsphere.rename_datastore''' def setup_loader_modules(self): @@ -1837,7 +1851,7 @@ class _GetProxyTargetTestCase(TestCase, LoaderModuleMockMixin): 'connected via the ESXi host') def test_get_cluster_call(self): - #with patch('salt.modules.vsphere.get_proxy_type', + # with patch('salt.modules.vsphere.get_proxy_type', # MagicMock(return_value='esxcluster')): vsphere._get_proxy_target(self.mock_si) self.mock_get_datacenter.assert_called_once_with(self.mock_si, diff --git a/tests/unit/modules/test_win_service.py b/tests/unit/modules/test_win_service.py index 79ac4d04a0d..31486b52198 100644 --- a/tests/unit/modules/test_win_service.py +++ b/tests/unit/modules/test_win_service.py @@ -143,14 +143,14 @@ class WinServiceTestCase(TestCase, LoaderModuleMockMixin): {'Status': 'Stop Pending'}, {'Status': 'Stopped'}]) - with patch.object(win_service, 'status', mock_false): + with patch.dict(win_service.__salt__, {'cmd.run': MagicMock(return_value="service was stopped")}): self.assertTrue(win_service.stop('spongebob')) - with patch.object(win_service, 'status', mock_true): - with patch.object(win32serviceutil, 'StopService', mock_true): - with patch.object(win_service, 'info', mock_info): - with patch.object(win_service, 'status', mock_false): - self.assertTrue(win_service.stop('spongebob')) + with patch.dict(win_service.__salt__, {'cmd.run': MagicMock(return_value="service was stopped")}), \ + patch.object(win32serviceutil, 'StopService', mock_true), \ + patch.object(win_service, 'info', mock_info), \ + patch.object(win_service, 'status', mock_false): + self.assertTrue(win_service.stop('spongebob')) def test_restart(self): ''' diff --git a/tests/unit/modules/test_znc.py b/tests/unit/modules/test_znc.py index d1e30179d53..8e781ece2a5 100644 --- a/tests/unit/modules/test_znc.py +++ b/tests/unit/modules/test_znc.py @@ -54,7 +54,8 @@ class ZncTestCase(TestCase, LoaderModuleMockMixin): Tests write the active configuration state to config file ''' mock = MagicMock(return_value='SALT') - with patch.dict(znc.__salt__, {'ps.pkill': mock}): + with patch.dict(znc.__salt__, {'ps.pkill': mock}), \ + patch.object(znc, 'signal', MagicMock()): self.assertEqual(znc.dumpconf(), 'SALT') # 'rehashconf' function tests: 1 @@ -64,7 +65,8 @@ class ZncTestCase(TestCase, LoaderModuleMockMixin): Tests rehash the active configuration state from config file ''' mock = MagicMock(return_value='SALT') - with patch.dict(znc.__salt__, {'ps.pkill': mock}): + with patch.dict(znc.__salt__, {'ps.pkill': mock}), \ + patch.object(znc, 'signal', MagicMock()): self.assertEqual(znc.rehashconf(), 'SALT') # 'version' function tests: 1 diff --git a/tests/unit/modules/test_zypper.py b/tests/unit/modules/test_zypper.py index a6a0c887945..37852e155e0 100644 --- a/tests/unit/modules/test_zypper.py +++ b/tests/unit/modules/test_zypper.py @@ -190,7 +190,7 @@ class ZypperTestCase(TestCase, LoaderModuleMockMixin): } with patch.dict('salt.modules.zypper.__salt__', {'cmd.run_all': MagicMock(return_value=ref_out)}): with self.assertRaisesRegex(CommandExecutionError, - "^Zypper command failure: Some handled zypper internal error\nAnother zypper internal error$"): + "^Zypper command failure: Some handled zypper internal error{0}Another zypper internal error$".format(os.linesep)): zypper.list_upgrades(refresh=False) # Test unhandled error diff --git a/tests/unit/states/test_mac_package.py b/tests/unit/states/test_mac_package.py index 3b2ebb58206..beaf3db5158 100644 --- a/tests/unit/states/test_mac_package.py +++ b/tests/unit/states/test_mac_package.py @@ -2,19 +2,21 @@ # Import Python libs from __future__ import absolute_import +import sys # Import Salt Libs import salt.states.mac_package as macpackage # Import Salt Testing Libs from tests.support.mixins import LoaderModuleMockMixin -from tests.support.unit import TestCase +from tests.support.unit import TestCase, skipIf from tests.support.mock import ( MagicMock, patch ) +@skipIf(sys.platform.startswith('win'), "Not a Windows test") class MacPackageTestCase(TestCase, LoaderModuleMockMixin): def setup_loader_modules(self): return {macpackage: {}}