===========================
Salt 2018.3.3 Release Notes
===========================

Version 2018.3.3 is a security and bugfix release for :ref:`2018.3.0 <release-2018-3-0>`.

Statistics
==========

- Total Merges: **548**
- Total Issue References: **69**
- Total PR References: **341**

- Contributors: **55** (`Ch3LL`_, `FedericoCeratto`_, `KaiSforza`_, `L4rS6`_, `Lutseslav`_, `The-Loeki`_, `Vaelatern`_, `admd`_, `aesposito91`_, `asenci`_, `astorath`_, `azelezni`_, `babs`_, `bbczeuz`_, `bbinet`_, `brejoc`_, `cro`_, `daa`_, `dmurphy18`_, `dubb-b`_, `dwoz`_, `eliasp`_, `ezh`_, `garethgreenaway`_, `gtmanfred`_, `isbm`_, `jeduardo`_, `kt97679`_, `kuetrzi`_, `linoplt`_, `lomeroe`_, `lusche`_, `mateiw`_, `max-arnold`_, `maxim-sermin`_, `meaksh`_, `mmulqueen`_, `morganwillcock`_, `mtorromeo`_, `nullify005`_, `paulcollinsiii`_, `pritambaral`_, `rallytime`_, `rares-pop`_, `rmarchei`_, `rosscdh`_, `sizgiyaev`_, `sjorge`_, `t0fik`_, `terminalmage`_, `travispaul`_, `twangboy`_, `vinian`_, `weswhet`_, `zerthimon`_)


.. warning::
    If you are using Jinja to dump lists or dictionaries in your SLS files,
    this will now cause errors in Python 2 since Jinja does not produce
    YAML-compatible output when strings in the data structures contain unicode
    types. The dictionary must be passed through a Jinja filter to produce
    YAML-compatible strings.

    The below is an example of invalid SLS:

    .. code-block:: yaml

      /etc/foo.conf:
        file.mangaged:
          - source: salt://foo.conf
          - template: jinja
          - defaults: {{ mydict }}

    To make it valid, use either one of Salt's own ``json`` or ``yaml``
    filters. Another option would be to use Jinja's :ref:`tojson
    <release-2018-3-3-tojson-filter>` filter.

    .. code-block:: yaml

      /etc/foo.conf:
        file.mangaged:
          - source: salt://foo.conf
          - template: jinja
          - defaults: {{ mydict | tojson }}

Security Fix
============

CVE-2018-15751 Remote command execution and incorrect access control when using salt-api.

CVE-2018-15750 Directory traversal vulnerability when using salt-api. Allows an attacker to determine what files exist on a server when querying /run or /events.

Credit and thanks for discovery and responsible disclosure: nullbr4in, xcuter, koredge, loupos, blackcon, Naver Business Platform

Changes to win_timezone
=======================

Improves timezone detection by using the pytz module.

``timezone.get_offset`` and ``timezone.get_zonecode`` now work properly.

Adds ``timezone.list`` to list supported timezones in either Windows or Unix
format.

.. _release-2018-3-3-tojson-filter:

New Jinja Filter
================

The :jinja_ref:`tojson` filter (from Jinja 2.9 and later) has been ported to
Salt, and will be used when this filter is not available. This allows older LTS
releases such as CentOS 7 and Ubuntu 14.04 to use this filter.

You can use this filter any time you wish to dump a list or dictionary into an
SLS file, to ensure that the result is able to be loaded by the YAML renderer.
For example:

.. code-block:: jinja

    foo:
      bar.baz:
        - some_arg: {{ mydict | tojson }}

MacOSX escape characters with runas
===================================

You are now required to escape quotes when using the runas argument with the
cmd module on macosx.

Example:

.. code-block:: bash

    cmd.run 'echo '\''h=\"baz\"'\''' runas=macuser

Changelog for v2018.3.2..v2018.3.3
==================================

*Generated at: 2018-09-21 17:45:27 UTC*

* **PR** `#49662`_: (`dwoz`_) Fix another bad filename reference in whitelist
  @ *2018-09-14 22:20:49 UTC*

  * 9d8cc0b3f4 Merge pull request `#49662`_ from dwoz/2018.3.3

  * e109023013 Fix another bad filename reference in whitelist

* **PR** `#49655`_: (`dwoz`_) Fix windows test whitelist errors
  @ *2018-09-14 20:34:56 UTC*

  * 6391560d57 Merge pull request `#49655`_ from dwoz/2018.3.3

  * 8a4946478e Fix windows test whitelist errors

* **PR** `#49641`_: (`rallytime`_) Back-port `#49632`_ to 2018.3.3
  @ *2018-09-13 16:46:02 UTC*

  * **PR** `#49632`_: (`garethgreenaway`_) [2018.3] Fixing integration.states.test_file.FileTest.test_directory_max_depth (refs: `#49641`_)

  * 3fb3ffdb37 Merge pull request `#49641`_ from rallytime/bp-49632

  * d11a400825 Fixing failing test under python 3.7 causaed by changes to how os.makedirs sets initial permissions.

* **PR** `#49633`_: (`garethgreenaway`_) [2018.3.3] Moving test_build_whitespace_split_regex to TestBuildWhitespaceRegex
  @ *2018-09-13 06:57:01 UTC*

  * 0096cf10b5 Merge pull request `#49633`_ from garethgreenaway/moving_test_into_correct_class

  * 370de07617 Lint: Add extra blank line

  * 27b93fcc68 Moving the test_build_whitespace_split_regex test into the TestBuildWhitespaceRegex class.

* **PR** `#49594`_: (`rallytime`_) Back-port `#49580`_ to 2018.3.3
  @ *2018-09-10 19:59:41 UTC*

  * **PR** `#49580`_: (`garethgreenaway`_) [2018.3] Fixing tests for Python 3.7 (refs: `#49594`_)

  * e3a14e3535 Merge pull request `#49594`_ from rallytime/bp-49580

  * 41a2586fc0 Add file coding line at top of file

  * 7df3bebf53 Fixing lint.

  * 5fee38d1db Fixes various tests that were failing under python 3.7.

* **PR** `#49589`_: (`rallytime`_) Update old utils paths to use new utils paths
  @ *2018-09-10 16:51:31 UTC*

  * 39f9c9c952 Merge pull request `#49589`_ from rallytime/utils-paths

  * 5de2245c11 Update old utils paths to use new utils paths

* **PR** `#49550`_: (`rallytime`_) Back-port `#49548`_ to 2018.3.3
  @ *2018-09-07 00:36:05 UTC*

  * **PR** `#49548`_: (`garethgreenaway`_) [2018.3] Disabling State boto tests for Python 3.7+ (refs: `#49550`_)

  * 202da7a94f Merge pull request `#49550`_ from rallytime/bp-49548

  * 180692ccee Disable various boto tests when run under python 3.7 because of //github.com/spulec/moto/issues/1706. which was causing the test suite to hang on unit tests.  This PR is disabling the tests in the test_boto_vpc state tests.

* **PR** `#49542`_: (`twangboy`_) Update openssl
  @ *2018-09-06 16:11:34 UTC*

  * cae2d61568 Merge pull request `#49542`_ from twangboy/fix_osx_build_3

  * fe02b2276f Add 1.0.2p shasum file

  * 5f06dc2762 Fix issues with osx build scripts on 2018.3.3

* **PR** `#49536`_: (`rallytime`_) Back-port `#49524`_ to 2018.3.3
  @ *2018-09-06 16:00:00 UTC*

  * **PR** `#49524`_: (`garethgreenaway`_) [2018.3] Disable boto tests under 3.7 (refs: `#49536`_)

  * d9f09da5d9 Merge pull request `#49536`_ from rallytime/bp-49524

  * 9e7203e08a Disable various boto tests when run under python 3.7 because of //github.com/spulec/moto/issues/1706. which was causing the test suite to hang on unit tests.

* **PR** `#49535`_: (`Ch3LL`_) Skip test_virt and pip_state requirements tests on macosx
  @ *2018-09-06 15:59:38 UTC*

  * cb934bf0b6 Merge pull request `#49535`_ from Ch3LL/skip_pip_mac

  * 50237e9daf Skip test_virt and pip_state requirements tests on macosx

* **PR** `#49499`_: (`rallytime`_) Pin CherryPy version to < 18.0.0 in requirements files for PY2
  @ *2018-09-04 18:52:44 UTC*

  * 87d3dfe085 Merge pull request `#49499`_ from rallytime/pin-cherrypy-2018.3.3

  * 9e274335a3 Pin CherryPy version to < 18.0.0 in requirements files for PY2

* **ISSUE** `saltstack/salt-jenkins#1075`_: (`Ch3LL`_) [2018.3.3] arch python3 tests do not finish (refs: `#49303`_, `#49451`_)

* **PR** `#49467`_: (`rallytime`_) Back-port `#49451`_ to 2018.3.3
  @ *2018-08-31 17:38:09 UTC*

  * **PR** `#49451`_: (`gtmanfred`_) Handle thread shutdown on system exit (refs: `#49467`_)

  * 39fdacc434 Merge pull request `#49467`_ from rallytime/bp-49451

  * b891a0a8d3 add lock for proxy minion process too

  * 72519878c0 start thread in try block

  * b878f01662 use finally instead of catching baseexception

  * de98be6093 use rlock so blocking can be passed in py2

  * d346b42332 import Callable from collections.abc for python3.7

  * d7a410070a Handle thread shutdown on system exit

* **PR** `#49468`_: (`rallytime`_) Back-port `#49291`_ and `#49331`_ to 2018.3.3
  @ *2018-08-31 17:37:30 UTC*

  * **PR** `#49331`_: (`dwoz`_) Use salt.utils to ensure string type (refs: `#49468`_)

  * **PR** `#49291`_: (`dwoz`_) Add dedent that sets line endings (refs: `#49468`_)

  * 37d1455d69 Merge pull request `#49468`_ from rallytime/bp-49291-and-49331

  * 944f8e96c8 Use salt.utils to ensure string type

  * 6c92ed2021 Fix review nits

  * 0e18b157e3 Re-factor dedent to fix warts

  * b5034067f8 Use salt.utils.to_* functions

  * 6399d035a4 Add dedent that sets line endings

* **PR** `#49449`_: (`rallytime`_) Mark status test as flaky
  @ *2018-08-30 18:10:44 UTC*

  * 0cda22e7a9 Merge pull request `#49449`_ from rallytime/flaky-test

  * 0f322bb39f Mark status test as flaky

* **PR** `#49444`_: (`rallytime`_) Back-port `#49299`_ to 2018.3.3
  @ *2018-08-30 18:10:21 UTC*

  * **PR** `#49299`_: (`dwoz`_) Work around cmd.run unicode issues in test for now (refs: `#49444`_)

  * bcc5f1a7c1 Merge pull request `#49444`_ from rallytime/bp-49299

  * b8c5a5bb91 Fix string formatting wart in file state tests

  * 19756022be Fix wart in file state test

  * ba68388342 Work around cmd.run unicode issues in test for now

* **PR** `#49448`_: (`rallytime`_) Back-port `#49400`_ to 2018.3.3
  @ *2018-08-30 18:04:29 UTC*

  * **PR** `#49400`_: (`rallytime`_) Mark pillar refresh test as flaky (refs: `#49448`_)

  * 38713e2db9 Merge pull request `#49448`_ from rallytime/bp-49400

  * b953fe0079 Mark pillar refresh test as flaky

* **PR** `#49446`_: (`rallytime`_) Back-port `#49356`_ to 2018.3.3
  @ *2018-08-30 18:04:01 UTC*

  * **PR** `#49356`_: (`dwoz`_) Fix tests that use timed_subprocess for py3 (refs: `#49446`_)

  * d6ddcab351 Merge pull request `#49446`_ from rallytime/bp-49356

  * 8022b0c3d6 Fix tests that use timed_subprocess for py3

* **PR** `#49445`_: (`rallytime`_) Back-port `#49192`_ to 2018.3.3
  @ *2018-08-30 18:03:44 UTC*

  * **PR** `#49192`_: (`dwoz`_) Test fixes flaky test and unicode environment key/value (refs: `#49445`_)

  * 1a67956c0f Merge pull request `#49445`_ from rallytime/bp-49192

  * 20148d4438 Test fixes

* **PR** `#49443`_: (`rallytime`_) Back-port `#49197`_ to 2018.3.3
  @ *2018-08-30 18:03:10 UTC*

  * **PR** `#49197`_: (`dwoz`_) File state line ending fixes (refs: `#49443`_)

  * 33f59d44de Merge pull request `#49443`_ from rallytime/bp-49197

  * 5fe821978e File state line ending fixes

* **PR** `#49442`_: (`rallytime`_) Back-port `#49180`_ and related fixes to 2018.3.3
  @ *2018-08-30 18:02:54 UTC*

  * **PR** `#49186`_: (`dwoz`_) Fix typo in `#49180`_ (refs: `#49442`_)

  * **PR** `#49180`_: (`dwoz`_) Cherry-pick test fixes (refs: `#49442`_, `#49186`_)

  * **PR** `#49167`_: (`dwoz`_) Fix remaining file state integration tests (py3) (refs: `#49173`_, `#49442`_)

  * 60758059c3 Merge pull request `#49442`_ from rallytime/bp-49180

  * e155568957 Fix typo

  * 608a1ae7ba Account for file renames

  * e8e6a46a2b Fix directory unit test

  * 2f865c398e Fix is_windows checks

  * 6460f7f217 Account for normalized dirs in unit tests

  * f4b7101a35 Simplify dict keys lookup

  * 942b68bfc8 Fix remaining file state integration tests (py3)

* **PR** `#49441`_: (`rallytime`_) Back-port `#49240`_ to 2018.3.3
  @ *2018-08-30 18:02:40 UTC*

  * **PR** `#49240`_: (`dwoz`_) file state test fixes (refs: `#49362`_, `#49441`_)

  * 1f4906346a Merge pull request `#49441`_ from rallytime/bp-49240

  * 22ed452479 Work around listdir encoding issues on py2 windows

  * f5be275835 file state test fixes

* **PR** `#49440`_: (`rallytime`_) Back-port `#49258`_ to 2018.3.3
  @ *2018-08-30 18:02:25 UTC*

  * **PR** `#49258`_: (`gtmanfred`_) flaky tests are flaky (refs: `#49440`_)

  * cc27b67a37 Merge pull request `#49440`_ from rallytime/bp-49258

  * 0191af1423 flaky tests are flaky yo

  * 720b671dda mark orchestration state tests as flaky

* **ISSUE** `#48880`_: (`damntoken`_) Can't run cmd.run with UTF-8 chars as arguments / parameters. With custom module. (refs: `#49322`_)

* **PR** `#49368`_: (`rallytime`_) Back-port `#49322`_ to 2018.3.3
  @ *2018-08-28 17:15:15 UTC*

  * **PR** `#49322`_: (`dwoz`_) Encode shell commands explicitly. (refs: `#49368`_)

  * af80e64569 Merge pull request `#49368`_ from rallytime/bp-49322

  * 238853b9ec Encode shell commands explicitly.

* **PR** `#49363`_: (`rallytime`_) Back-port `#49245`_ to 2018.3.3
  @ *2018-08-28 17:14:18 UTC*

  * **PR** `#49245`_: (`dwoz`_) Skip grep unit tests on windows (refs: `#49363`_)

  * 0fee3e8786 Merge pull request `#49363`_ from rallytime/bp-49245

  * cc606509d0 Fix is_windows call - use the right path

  * 5488fbea38 Skip grep unit tests on windows

* **PR** `#49361`_: (`rallytime`_) Back-port  `#49244`_ to 2018.3.3
  @ *2018-08-28 17:12:58 UTC*

  * **PR** `#49244`_: (`dwoz`_) Test fixes: unit.fileserver.test_gitfs (refs: `#49361`_)

  * dbcd2fc726 Merge pull request `#49361`_ from rallytime/bp-49244

  * e0909d3a25 Simplify by using to_unicode helper

  * 4723c69092 Older GitPython version do not have a close method

  * d5fecba716 Fix up fileserver.test_gitfs tests on windows

  * 4b688f6347 Remove unicode filenames on windows python 2

* **PR** `#49362`_: (`rallytime`_) Back-port `#49240`_ to 2018.3.3
  @ *2018-08-28 17:00:25 UTC*

  * **PR** `#49240`_: (`dwoz`_) file state test fixes (refs: `#49362`_, `#49441`_)

  * b4a1e1d365 Merge pull request `#49362`_ from rallytime/bp-49240

  * 16ca5b9694 Work around listdir encoding issues on py2 windows

  * 7650208dbc file state test fixes

* **PR** `#49365`_: (`rallytime`_) Back-port `#49270`_ to 2018.3.3
  @ *2018-08-28 16:56:23 UTC*

  * **PR** `#49270`_: (`dwoz`_) Add async helper to test_sock_path_len (refs: `#49365`_)

  * 9ca9a775ff Merge pull request `#49365`_ from rallytime/bp-49270

  * 1b3f37a8b8 Add async helper to test_sock_path_len

* **PR** `#49364`_: (`rallytime`_) Back-port `#49243`_ to 2018.3.3
  @ *2018-08-28 16:55:55 UTC*

  * **PR** `#49243`_: (`dwoz`_) Revert newline translation change (refs: `#49364`_)

  * bbff57da16 Merge pull request `#49364`_ from rallytime/bp-49243

  * 5db77c6229 Revert newline translation change

* **PR** `#49347`_: (`Ch3LL`_) [2018.3.3] Backport `#49345`_
  @ *2018-08-28 01:54:00 UTC*

  * **PR** `#49345`_: (`gtmanfred`_) upgrade including linux kernels (refs: `#49347`_)

  * 74b78835b3 Merge pull request `#49347`_ from Ch3LL/bp_49345_2018.3.3

  * 7bf5ba83c8 upgrade including linux kernels

* **PR** `#49323`_: (`Ch3LL`_) Skip nonexistent branch test for git versions <1.7.10
  @ *2018-08-25 19:52:48 UTC*

  * be6691d91b Merge pull request `#49323`_ from Ch3LL/skip_git

  * ee3d32f74e Skip nonexistent branch for git versions <1.7.10

* **ISSUE** `#32737`_: (`Lothiraldan`_) No support for compound matcher in external auth configuration (refs: `#49236`_)

* **PR** `#49313`_: (`rallytime`_) Back-port `#49236`_ to 2018.3.3
  @ *2018-08-24 20:59:16 UTC*

  * **PR** `#49236`_: (`terminalmage`_) Allow compound matching in eauth config expressions (refs: `#49313`_)

  * 64d7b0e4c6 Merge pull request `#49313`_ from rallytime/bp-49236

  * 1a5ef996e3 Add 'minion_data_cache: True' to mocked opts for minions unit tests

  * 549f5d5a86 Allow compound matching in eauth config expressions

* **ISSUE** `saltstack/salt-jenkins#1075`_: (`Ch3LL`_) [2018.3.3] arch python3 tests do not finish (refs: `#49303`_, `#49451`_)

* **PR** `#49311`_: (`rallytime`_) Back-port `#49303`_ to 2018.3.3
  @ *2018-08-24 17:48:23 UTC*

  * **PR** `#49303`_: (`gtmanfred`_) use os._exit instead of sys.exit when daemonizing (refs: `#49311`_)

  * 7a89a4c8aa Merge pull request `#49311`_ from rallytime/bp-49303

  * 3fe1387751 use os._exit instead of sys.exit when daemonizing

* **PR** `#49294`_: (`Ch3LL`_) Move run_function call from __init__ to setup
  @ *2018-08-24 12:41:35 UTC*

  * 7bb356f11e Merge pull request `#49294`_ from Ch3LL/fed_28_tests

  * 0a5d44a3db Move run_function call from __init__ to setup

* **PR** `#49302`_: (`twangboy`_) Fix installer 2018.3.3
  @ *2018-08-24 12:41:14 UTC*

  * a607f9332f Merge pull request `#49302`_ from twangboy/fix_installer_2018.3.3

  * 68fd37575e Fix erroneous NSSM reference

  * 103f2c289e Remove delete vcredist line

  * 007a16638e Bring installer updates from 2017.7.8 to 2018.3.3

* **PR** `#49241`_: (`terminalmage`_) Don't silently catch SystemExit
  @ *2018-08-22 12:57:58 UTC*

  * bc0b4ac513 Merge pull request `#49241`_ from terminalmage/salt-jenkins-1078

  * 08d144f2c7 Don't silently catch SystemExit

  * c0fdb818f7 Don't use a bare except!

* **PR** `#49239`_: (`Ch3LL`_) Use yaml's safe_dump in windows ec2 tests
  @ *2018-08-22 08:48:13 UTC*

  * 0fb9ccf60a Merge pull request `#49239`_ from Ch3LL/win_yaml_test

  * f5b42dbb24 import salt.utils.yaml

  * 67290eaff7 Use yaml's safe_dump in windows ec2 tests

* **PR** `#49182`_: (`terminalmage`_) Fix hanging syndic test
  @ *2018-08-18 12:10:32 UTC*

  * 134f125b96 Merge pull request `#49182`_ from terminalmage/salt-jenkins-1078

  * a2d2cd317b Fix hanging syndic test

* **PR** `#49172`_: (`Ch3LL`_) [2018.3.3] cherry pick `#49118`_
  @ *2018-08-17 20:54:05 UTC*

  * **PR** `#49118`_: (`dwoz`_) Multiple fixes for integration.states.test_file (refs: `#49172`_)

  * **PR** `#49088`_: (`dwoz`_) Multiple file state test fixes (refs: `#49118`_)

  * **PR** `#49087`_: (`dwoz`_) Filter out scheme's that are not valid (refs: `#49118`_)

  * b3a247bfbb Merge pull request `#49172`_ from Ch3LL/bp-49118

  * ce5e17bdbd update is_windows salt.utils to correct path

  * 3fef112409 Multiple fixes for integration.states.test_file

* **PR** `#49173`_: (`Ch3LL`_) [2018.3.3] cherry pick `#49167`_
  @ *2018-08-17 20:30:27 UTC*

  * **PR** `#49167`_: (`dwoz`_) Fix remaining file state integration tests (py3) (refs: `#49173`_, `#49442`_)

  * 85ffc8db87 Merge pull request `#49173`_ from Ch3LL/bp-49167

  * a1a298a13c Simplify dict keys lookup

  * 3d26affa10 Fix remaining file state integration tests (py3)

* **PR** `#49171`_: (`Ch3LL`_) [2018.3.3] cherry pick `#49103`_
  @ *2018-08-17 20:23:32 UTC*

  * **PR** `#49103`_: (`dwoz`_) Install the launcher so we can execute py files (refs: `#49171`_)

  * ee54ea5f73 Merge pull request `#49171`_ from Ch3LL/bp-49103

  * 05a2b91fb2 Install the launcher so we can execute py files

* **PR** `#49132`_: (`Ch3LL`_) [2018.3.3] backport PR `#49062`_
  @ *2018-08-17 14:51:50 UTC*

  * **PR** `#49062`_: (`weswhet`_) fix memoize on available macOS services (refs: `#49132`_)

  * 58034c9dc3 Merge pull request `#49132`_ from Ch3LL/bp-49062

  * 990fdb6a52 decorator link fix, updating context names, as well as updating macutils tests for latest changes

  * 3ab5d282be fixing an issue with memoize on macOS services, switching to useing __context__ instead

* **PR** `#49142`_: (`Ch3LL`_) Remove -Z script_arg for cloud tests
  @ *2018-08-16 16:12:59 UTC*

  * 01f8f83cf0 Merge pull request `#49142`_ from Ch3LL/rm_z_arg

  * a1ef6a88a6 Remove -Z script_arg for cloud tests

* **PR** `#49137`_: (`Ch3LL`_) [2018.3.3] Update bootstrap script to latest release (2018.08.15)
  @ *2018-08-15 19:49:22 UTC*

  * a03828884b Merge pull request `#49137`_ from Ch3LL/bootstrap_2018.3.3

  * eb9a612096 [2018.3.3] Update bootstrap script to latest release (2018.08.15)

* **PR** `#49110`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-08-14 17:11:25 UTC*

  * b412bff534 Merge pull request `#49110`_ from rallytime/merge-2018.3

  * 4649f60209 Update old utils paths with new paths

  * 49c2a784bb Merge branch '2017.7' into '2018.3'

    * d46e23f4c2 Merge pull request `#49109`_ from rallytime/merge-2017.7

      * 3c5527f300 Merge branch '2017.7.8' into '2017.7'

      * 01cf2c71ff Merge pull request `#49051`_ from rallytime/bp-49046

        * fc0817cb35 The osfullname grain differs when using Python2 vs Python3, swapping this out for the "OS" grain which is consistent.

    * 8954dd269f Merge pull request `#49090`_ from dwoz/file_line_fix

      * 0dca634e3c Search for (but do not include) CRLF line ending

    * b99edc3dce Merge pull request `#49088`_ from dwoz/file_hash_diffs

      * 054afb8197 Multiple file state test fixes

    * 274977b6c4 Merge pull request `#49087`_ from dwoz/url_file_test_fixes

      * 632b65f975 Filter out scheme's that are not valid

    * db5fb3232a Merge pull request `#49086`_ from rallytime/new-doc-img

      * 90954203cb Update the DOCBANNER image for saltconf

    * af6ec1dce2 Merge pull request `#49045`_ from twangboy/fix_43164

      * 589456d08f Fix lint errors

      * e79243566d Add rallytime's suggestions

      * d1ae6b3d6d Fix docs for the registry module and state

    * a840fea1a1 Merge pull request `#49083`_ from rallytime/bootstrap-2017.7

      * 358e14cdac [2017.7] Update bootstrap script to latest release

    * 9db6cd5654 Merge pull request `#49059`_ from twangboy/fix_37984

      * 7ed45b5b00 Remove import

      * 7fb1edb469 Fix docs to clarify uptime output on Windows

    * f9db72f00c Merge pull request `#49061`_ from saltstack/revert-48982-new_logo_2017.7

      * 98a8da728b Revert "New logo 2017.7 (WIP)"

    * bbcd1869ec Merge pull request `#48982`_ from newwebash/new_logo_2017.7

      * 5c1c311f77 Update Salt Conf ad

      * 72dc63c426 Merge branch '2017.7' of https://github.com/saltstack/salt into new_logo_2017.7

      * 9f4e78a7b9 Revert "Update saltconf ad"

      * 3ab8cdb882 Update saltconf ad

* **ISSUE** `#48665`_: (`dgengtek`_) salt-api auth ldap generates a valid token when using bindpw and an invalid request (refs: `#48901`_)

* **PR** `#48901`_: (`garethgreenaway`_) [2018.3] fix to auth/ldap.py
  @ *2018-08-14 16:10:19 UTC*

  * e78fc0e0eb Merge pull request `#48901`_ from garethgreenaway/48665_auth_ldap_valid_token_failed_auth

  * d4e4f2e803 Fixing a typo in a comment.

  * 2eb167ea42 Fixing issue when a valid token is generated even when invalid user credentials are passed.  This change verifies that the binddn credentials are valid, then verifies that the username & password (if not None) are also valid.

* **ISSUE** `#49081`_: (`frogunder`_) Fluorine - I see error/traceback when running minion in debug mode  (refs: `#49085`_)

* **PR** `#49099`_: (`rallytime`_) Back-port `#49085`_ to 2018.3
  @ *2018-08-14 12:42:51 UTC*

  * **PR** `#49085`_: (`gtmanfred`_) fix async call to process manager (refs: `#49099`_)

  * 484c1e0123 Merge pull request `#49099`_ from rallytime/bp-49085

  * 024d9cb843 fix async call to process manager

* **ISSUE** `#49018`_: (`Ch3LL`_) add MasterPillarUtil tests (refs: `#49034`_)

* **PR** `#49071`_: (`rallytime`_) Back-port `#49034`_ to 2018.3
  @ *2018-08-13 20:15:31 UTC*

  * **PR** `#49034`_: (`garethgreenaway`_) [fluorine] Adding tests for MasterPillarUtil (refs: `#49071`_)

  * bc033da677 Merge pull request `#49071`_ from rallytime/bp-49034

  * 8108a4d31a Adding some tests for the grains, pillar and mine functions in the cache runner.  These will also ensure that the relevant functions in salt.utils.master.MasterPillarUtil are functioning properly.

* **PR** `#49077`_: (`rallytime`_) Back-port `#49075`_ to 2018.3
  @ *2018-08-13 20:00:00 UTC*

  * **PR** `#49075`_: (`gtmanfred`_) fix last async issue (refs: `#49077`_)

  * 90c2f026b3 Merge pull request `#49077`_ from rallytime/bp-49075

  * 5e07b8306b fix last async issue

* **PR** `#49096`_: (`rallytime`_) Update the DOCBANNER image for saltconf
  @ *2018-08-13 19:59:39 UTC*

  * 6942ef1102 Merge pull request `#49096`_ from rallytime/new-doc-img-2018.3

  * 75080705ce Update the DOCBANNER image for saltconf

* **PR** `#49055`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-08-13 19:20:11 UTC*

  * 0e1ed7b923 Merge pull request `#49055`_ from rallytime/merge-2018.3

  * 83a15cb623 Add optimization_order config to mocked opts

  * ea6883ee55 Update old utils paths to new utils paths

  * 201031fa8a Merge branch '2017.7' into '2018.3'

    * 0d2a495378 Merge pull request `#49050`_ from rallytime/merge-2017.7

      * ed6fb8b739 Merge branch '2017.7.8' into '2017.7'

      * 189e28691f Merge pull request `#49044`_ from Ch3LL/vultr_test

        * 0dedfae4d1 increase timeout on vultr cloud integration test

      * c606a32cf2 Merge pull request `#49042`_ from rallytime/flaky-jinja-test

        * a43d9b4ba6 Mark a jinja template test as flaky

      * 6415b6f73b Merge pull request `#49041`_ from Ch3LL/ec2_fix

        * cf7f2459b8 [2017.7.8] backport PR `#48212`_

      * 1db036406b Merge pull request `#49030`_ from rallytime/update-client-tests

        * f08ee6c6ae Update netapi client tests

    * 70be9ac9b1 Merge pull request `#49046`_ from garethgreenaway/1022_fixing_test_failing_py3_Debian_test

      * fa2339bb91 The osfullname grain differs when using Python2 vs Python3, swapping this out for the "OS" grain which is consistent.

    * 69c9b0afb1 Merge pull request `#49036`_ from cspeidel/doc-fix-netyang

      * f7ac085eb5 minor doc fix in netyang.py

    * c5f3fd6b2b Merge pull request `#48997`_ from AVeenstra/patch-1

      * 0e535f2c8c Unpacking dict with the six iterator

      * 5e82685b89 Python 3 related fix in highstate_return.py

    * c06a3cf531 Merge pull request `#49021`_ from rallytime/merge-2017.7

      * ca82b3d57a Merge branch '2017.7.8' into merge-2017.7

        * f73ba21bc7 Merge pull request `#49024`_ from rallytime/fix-deb-test

          * a9c16d9137 Fix test error in test_compiler jinja check

      * c6f8429e41 Merge branch '2017.7.8' into '2017.7'

      * 6b6d68c615 Merge pull request `#49020`_ from rallytime/fix-grains-test

        * f72a3ac6be Make grains integration test more robust

      * 92d6c25c7f Merge pull request `#49002`_ from rallytime/skip-jinja-deep-error-test

        * 23b66ef8bb Skip test_jinja_deep_error on Debian 8

      * 41d9f11eb3 Merge pull request `#48999`_ from rallytime/fix-boto-test

        * d0136b1be5 Update expected return value in boto test

    * 2ddba6391a Merge pull request `#49010`_ from Ch3LL/univention

      * c09bce9afe Add univention OS to debian os_family mapping

    * 41bd36842e Merge pull request `#48636`_ from terminalmage/loader-fixes

      * 0441cd56ef Add optimization_order to mocking

      * 2256fad320 Process pycache files after .py files

      * a78663a301 Lint

      * 0728b5f8b6 Add note about Python 3.5+ only support for optimization_order

      * 764969ce08 Add a test to confirm that .py files are still loaded correctly

      * 0f60beb6b6 Fix bad copypasta

      * fbcd142ea2 Add configuration docs for optimization_order config option

      * 8af2d580f3 Only compile the suffix_order/map once per LazyLoader instance

      * 4b95e5f313 Don't put __pycache__ dir in the file list

      * e7c10196da Quiet the byte compiling for PY2

      * 9338370477 Add unit tests for loader optimization levels

      * c3622933c1 PY3: Support different optimization levels

      * 6fc8da5bab Add optimization_order config option with default value

      * dfe423a1e0 Remove commented-out log message

* **PR** `#49084`_: (`rallytime`_) [2018.3] Update bootstrap script to latest release
  @ *2018-08-13 18:14:42 UTC*

  * db7ec46875 Merge pull request `#49084`_ from rallytime/bootstrap-2018.3

  * 28dc8ce954 [2017.7] Update bootstrap script to latest release

* **PR** `#49052`_: (`isbm`_) Python 3.7 support (backport 2018.3)
  @ *2018-08-13 13:06:51 UTC*

  * b0d5acbe0d Merge pull request `#49052`_ from isbm/isbm-python37-support-2018.3

  * 4386a9ca1f Merge branch '2018.3' into isbm-python37-support-2018.3

  * bc85a5fa98 Fix configuration setting

  * 47078a300f Remove async keyword, moving it into the kwargs.

  * 31dccc4fdf fix unicode literals

  * 990936992c Keep runner API unchanged

  * 46bafcafef Fix nag-message

  * 5c887ac2ae Support original API

  * 2c22e794d4 Use kwargs instead of directly named parameters

  * 7d095491d9 Update docstring

  * 9807e8dbb7 Add 'async' backward compatibility

  * e8608aa9be Revert api call: it is about "functionname_async" suffix.

  * 0543578336 Deprecate 'async' parameter in Mandrill API

  * 1107de0dec Lintfix: PEP8 requires two empty lines

  * 2a18e335af Fix function signatures in Cassandra module

  * 603f94e2a3 Cleanup docstrings at module level

  * b9718d3a09 Fix log error/info/warning and exception messages

  * 6e77aff69a Fix local opts from CLI

  * 493e48ddb5 Remove internal variables/properties with the reserved words

  * be07f64bc4 Change internal function signatures to avoid reserved word

  * 7d095e0b26 Rename async function to asynchronous

  * 35eaebb8a4 Fix docstrings

  * 7a597f19b5 Fix comments

  * 69920366ae Fix CLI config

  * 173f3d7aa8 Fix docstring typo

  * b7da571624 Fix imports

  * 7ec3954bef Rename module to full wording

* **ISSUE** `#48557`_: (`whytewolf`_) file.line in python3 on windows 2012 r2 is adding extra CR line endings.  (refs: `#49026`_)

* **PR** `#49026`_: (`dwoz`_) Fix file.line line endings
  @ *2018-08-13 13:05:43 UTC*

  * 338ecb70ef Merge pull request `#49026`_ from dwoz/issue_48557

  * a4d22fda2f Merge remote-tracking branch 'origin/issue_48557' into issue_48557

    * 702e76cfc9 Merge branch '2018.3' into issue_48557

  * 6cf93e8fc4 Skip newline in binary mode

  * 2cf80c1595 Fix linter errors

  * baf291b4c8 Fix file.line line endings

* **PR** `#49038`_: (`gtmanfred`_) disable enable_ssh_minions to see if it is slowing down 2018.3 tests
  @ *2018-08-10 18:07:59 UTC*

  * 602fed7806 Merge pull request `#49038`_ from gtmanfred/slowtest

  * 6bc44c91c4 remove localhost from tests

  * 7b168a5aac disable enable_ssh_minions to see if it is slowing down 2018.3 tests

* **ISSUE** `#48996`_: (`jils2013`_) file.get_diff not work on version:2018.3.2  (refs: `#49033`_)

* **PR** `#49033`_: (`terminalmage`_) Fix file.get_diff for remote files
  @ *2018-08-09 21:06:53 UTC*

  * 4eeb75f028 Merge pull request `#49033`_ from terminalmage/issue48996

  * 163aea71c8 Lint

  * d6e5038022 Fix file.get_diff for remote files

* **ISSUE** `#48856`_: (`travispaul`_) Salt fails to start on NetBSD 8 (refs: `#48926`_)

* **PR** `#48926`_: (`travispaul`_) Handle ifconfig output differently for NetBSD >= 8.0
  @ *2018-08-09 20:07:44 UTC*

  * b24c96a292 Merge pull request `#48926`_ from travispaul/fix-netbsd-8-new-ifconfig

  * d59b6d8269 Add unit test for NetBSD 8 ifconfig changes

  * 80f8a667d1 Handle ifconfig output differently for NetBSD >= 8.0

* **PR** `#48803`_: (`dmurphy18`_) Support for execution modules and states mount on AIX
  @ *2018-08-09 17:51:55 UTC*

  * 7d6b9ed0a5 Merge pull request `#48803`_ from dmurphy18/aix_filesystems

  * 92818f816b Fixes for testing

  * 77dd7a1743 Adjust unit tests

  * eaed033cde Updated for review comments and adjusted locking when writing files

  * 5bf9e6085b Update due to review comments

  * 9fb5641dc7 Mount unit tests for modules and states for AIX

  * b28f427432 Save off work after laptop issue

  * e5c2741fe7 module and states mount support for AIX

  * b701e16ad0 Further updates to support for mount on AIX

  * 210076276f Initial support for handling /etc/filesystems on AIX

* **ISSUE** `#48496`_: (`icy`_) Salt-key unable to delete the certificate Test=True (refs: `#48929`_)

* **PR** `#48929`_: (`terminalmage`_) 2 salt-key fixes
  @ *2018-08-09 17:50:07 UTC*

  * 2a38905a8a Merge pull request `#48929`_ from terminalmage/issue48496

  * 7ac10f9eac 2 salt-key fixes

* **ISSUE** `#47481`_: (`whytewolf`_) Oxygen: task.add_trigger with start_date stating strptime needs a string not int. (refs: `#49022`_)

* **PR** `#49022`_: (`dwoz`_) Document time format idiosyncrasies
  @ *2018-08-09 17:47:12 UTC*

  * bb9d23bfa1 Merge pull request `#49022`_ from dwoz/47481_docs

  * 313a3d93d6 Document time format idiosyncrasies

* **PR** `#48932`_: (`twangboy`_) Fix pkg.install when pkg already installed
  @ *2018-08-09 17:45:51 UTC*

  * 9b6a9ff4f1 Merge pull request `#48932`_ from twangboy/fix_win_repo

  * 075ea29d29 remove .lower(), fix debug messages

  * d7c2f476ac Remove current: version for latest as well

  * 522ac26459 Fix typo in code comment

  * 47b2898a85 return empty dict on no changes

  * 6532706d2f Make the tests run on Linux

  * cfe55a391a Add tests for pkg.install output

  * 8ec058f498 Clarify code comment

  * 8af2cfd54a Fix issues where current is not returned

* **PR** `#49011`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-08-09 17:34:18 UTC*

  * d7b7a92ef6 Merge pull request `#49011`_ from rallytime/merge-2018.3

  * 02670969d0 Apply fix to ssh init file that was there before merge

  * 7e1f7915e4 Revert "Allow for not being prompted to supply a password to deploy keys to a minion with salt-ssh"

  * 00416d54d1 Revert "add key-deploy test"

  * c26fa0d6c4 Mark orchestration test as expensive

  * fceb6d8d6f Update old utils paths to use new paths

  * 3e6445a9d6 Merge branch '2017.7' into '2018.3'

    * b49eeca6e9 Merge pull request `#49003`_ from rallytime/boto-test-2017.7

      * 1a23bb233f Update expected return value in boto test

    * 51eed1fdfb Merge pull request `#48988`_ from rallytime/merge-2017.7

      * df8699e2e7 Merge branch '2017.7.8' into '2017.7'

      * a1e54634dc Merge pull request `#48976`_ from rallytime/tornado

        * 0bd838ab6c Skip unreliable tornado tests

      * 22713be9c1 Merge pull request `#48979`_ from rallytime/bp-48959

      * 03aa0e49b0 Merge pull request `#48970`_ from Ch3LL/back_48962

        * 3ce1b8a3c9 Update the elif block to only be true for versions below Debian 9.

      * e6cea5e3c7 Merge pull request `#48968`_ from rallytime/man-pages

        * 64fe3be41a Update man pages for 2017.7.8 release

    * 10fd4661ff Merge pull request `#48978`_ from gtmanfred/2017.7

      * 6108363f82 clean up gemfile

    * 5b2423e527 Merge pull request `#48959`_ from rallytime/flaky-tests

      * aaf986d728 Mark one grains test as flaky & convert to pytest notation

      * e7e5abcf48 Mark 2 matcher tests as flaky

    * 79994ecab4 Merge pull request `#48962`_ from garethgreenaway/1022_test_service_disable_debian_part_deux

      * 9e71551b36 Update the elif block to only be true for versions below Debian 9.

    * 1a1bda00cb Merge pull request `#48960`_ from dwoz/block_replace_tests

      * 94ac2b4fc7 Multiple block replace test fixes

    * 93b862f350 Merge pull request `#48957`_ from whytewolf/beacons_log_doc_change

      * a77fd16869 Update salt.beacons.log to reflect that re module is used for matching.

    * 0245cffb07 Merge pull request `#48955`_ from terminalmage/service-systemd

      * 23f87bd536 Don't load service.py if minion is running a non-sysvinit init system

    * 848d583438 Merge pull request `#48950`_ from KaiSforza/kitchenfix-2017.7

      * 5242cb143a Added a quote to kitchen Jenkinsfiles

    * 928d688d65 Merge pull request `#48943`_ from rallytime/flaky-tests

      * 668da57ab9 Mark some shell and runner integration tests as flaky

    * cd42510d3a Merge pull request `#48940`_ from rallytime/bp-48852

      * fa4ef92e79 Record all the artifacts from the build

    * 43649a68be Merge pull request `#48935`_ from garethgreenaway/1045_test_pkg_015_installed_held_centos

      * 0bb10107b6 Merge branch '2017.7' into 1045_test_pkg_015_installed_held_centos

      * 24d5e6a22f Fixing the test_pkg_015_installed_held test to be able to successfully run on CentOS

    * 2421e2a570 Merge pull request `#47100`_ from gtmanfred/ssh

      * 5b443af7ae add key-deploy test

      * a131c9beeb Allow for not being prompted to supply a password to deploy keys to a minion with salt-ssh

    * d541bd6446 Merge pull request `#48891`_ from damon-atkins/2017.7_win_pkg.list_pkgs_not_found

      * a4af1dbfb1 Fix win_pkg issues introduced Jan 2018. If DisplayVersion does not exist it should return version as "Not Found"

    * 5f6a56f5dc Merge pull request `#48896`_ from rallytime/bp-48730

      * 57aa204c9d Merge branch '2017.7' into bp-48730

      * 4995922584 Forgot variable in signature

      * 0503bc18b6 Fix batch install using pkgng

    * 0c64bba865 Merge pull request `#48933`_ from garethgreenaway/1022_debian_8_failing_service-test

      * 280d1d2ad2 Fixing failing test, integration.modules.test_service.ServiceModuleTest.test_service_disable_doesnot_exist, on Debian 8 and higher.

    * 0c3d2c6a09 Merge pull request `#48922`_ from rallytime/cache-doc-error

      * 8ca89df7e8 Update backticks on job_cache docs

    * 8d1fc4f8e5 Merge pull request `#48866`_ from Ch3LL/cmd_win_tests

      * 905da13653 Merge branch '2017.7' into cmd_win_tests

    * 57d58e7541 Merge pull request `#48920`_ from rallytime/bp-48904-2017.7

      * a55f92954a No rehashing in parallel

      * 3be11e06fe Add docs for new escape kwarg

      * 391bb8a411 use a specific path for just the cmd._run call

      * 62c66ba489 make sure we lower the check on shell

      * 9312a993a5 Add cmd module integration tests for windows and fix space in path issue

* **ISSUE** `#48123`_: (`c-wicklein`_) file.directory with recurse fails when it encounters a broken symbolic link (refs: `#48985`_)

* **PR** `#48985`_: (`garethgreenaway`_)  [2018.3] Fix to salt/modules/file.py
  @ *2018-08-09 15:03:09 UTC*

  * 3325b7d4c0 Merge pull request `#48985`_ from garethgreenaway/48123_file_directory_recurse_fails_broken_symlink

  * 10c4eca206 Merge branch '2018.3' into 48123_file_directory_recurse_fails_broken_symlink

  * a404cc030f Fixing the issue when using the file.directory state with recurse if the directory contains a broken symbolic link. This fix adds an additional conditional, is_link, before running lsattr since lsattr does not work on symlinks and causes issues when that symlink is broken.

* **ISSUE** `#47695`_: (`AmbicaY`_) Continuous error in the proxy minion logs (refs: `#49019`_)

* **PR** `#49019`_: (`garethgreenaway`_) [2018.3] Fix to scheduler when global enabled key is present
  @ *2018-08-09 13:06:26 UTC*

  * d353c02a8c Merge pull request `#49019`_ from garethgreenaway/47695_fixing_scheduler_bug_when_enabled_is_present

  * aff1b8f6d4 Lint.

  * 8935c08141 Fixing a bug that occurs if the "enabled" key is present in the scheduler items dictionary.  Adding a test to ensure scheduler runs as expected when that key is present.

* **PR** `#49023`_: (`The-Loeki`_) Salt SSH appends IdentityFile=agent-forwarding
  @ *2018-08-09 12:55:59 UTC*

  * a56bc7ffb9 Merge pull request `#49023`_ from The-Loeki/patch-1

  * 8b53571c70 Salt SSH appends IdentityFile=agent-forwarding

* **PR** `#48981`_: (`Ch3LL`_) Add warning to mac runas docs about escaping characters
  @ *2018-08-08 19:43:43 UTC*

  * 4590494b50 Merge pull request `#48981`_ from Ch3LL/mac_runas_quote

  * 8269b55b84 remove unnecessary spaces in cmdmod.py docs

  * 757daf7d7e add runas macosx warning in 2018.3.3 release notes

  * 4e9e985b14 Add warning to mac runas docs about escaping characters

* **PR** `#49004`_: (`rallytime`_) Port `#48999`_ to 2018.3
  @ *2018-08-08 15:32:46 UTC*

  * **PR** `#48999`_: (`rallytime`_) Update expected return value in boto test (refs: `#49004`_, `#49003`_)

  * b87bf905c2 Merge pull request `#49004`_ from rallytime/boto-test-2018.3

  * 9f0b9a1073 Update expected return value in boto test

* **PR** `#48987`_: (`twangboy`_) Fix issue with win_iis.create_cert_binding
  @ *2018-08-08 13:29:06 UTC*

  * 630f61e625 Merge pull request `#48987`_ from twangboy/fix_48786

  * 86d0836f90 Fix issue with iterating over None

* **ISSUE** `#48777`_: (`jonasgit`_) file.recurse fails on file contents encoding not utf-8 (refs: `#48934`_)

* **PR** `#48934`_: (`terminalmage`_) Properly handle latin-1 encoding in file diffs
  @ *2018-08-07 21:02:24 UTC*

  * ab1a713bc3 Merge pull request `#48934`_ from terminalmage/issue48777

  * 52c64e4d51 Fix to_unicode test

  * e2d19f40b6 Only try latin-1 from get_diff instead of by default

  * d39fa889f3 Add stringutils.get_diff to mocks

  * 5b191c9120 Fix incorrect use of __salt__ when __utils__ is needed

  * 53ba10ad5f Skip pylint false-positives

  * f14f4dae22 Add unit test for latin-1 fallback, multi-encoding

  * 906644a80f PY3 scoping fix

  * 726dd4331f Add integration test for latin-1 file diffs

  * 2dd1f31d23 Use BASE_FILES instead of redundant STATE_DIR

  * 612ffb5fe8 Use new get_diff helper in file module

  * c632265802 Make to_unicode/to_str/to_bytes helpers attempt latin-1

  * 2a0cb49b01 Add get_diff to salt.utils.stringutils

* **ISSUE** `#47766`_: (`zerthimon`_) salt-cloud: openstack driver: crash on instance creation (refs: `#48956`_)

* **PR** `#48956`_: (`gtmanfred`_) if booted from volume, use string from image
  @ *2018-08-07 16:39:45 UTC*

  * bad995462c Merge pull request `#48956`_ from gtmanfred/openstack

  * 4cb1636c4b if booted from volume, use string from image

* **ISSUE** `#48306`_: (`davidscholberg`_) Documentation update for custom returners used for master job cache (refs: `#48319`_)

* **PR** `#48319`_: (`gtmanfred`_) don't break older returners right now
  @ *2018-08-06 13:19:43 UTC*

  * 71f587edd7 Merge pull request `#48319`_ from gtmanfred/jid

  * 084e7f0ef4 Merge branch '2018.3' into jid

  * 60661b4cd0 document minions required on save_load

  * a8c243071d document passing in minions

  * d49381c0b6 don't break save_load backwards compat

  * cfcacf953a don't break older returners right now

* **PR** `#48941`_: (`rallytime`_) Back-port `#48912`_ to 2018.3
  @ *2018-08-06 13:09:38 UTC*

  * **PR** `#48912`_: (`maxim-sermin`_) make jboss7.py compatible with 2018.3.0 and later (refs: `#48941`_)

  * 1623e53ef4 Merge pull request `#48941`_ from rallytime/bp-48912

  * 3f55b2f89e make jboss7.py compatible with 2018.3.0 and later

* **PR** `#48897`_: (`rallytime`_) Back-port `#48863`_ to 2018.3
  @ *2018-08-05 19:15:51 UTC*

  * **PR** `#48863`_: (`admd`_) Decode file contents for python2 as well (refs: `#48897`_)

  * 070af9d925 Merge pull request `#48897`_ from rallytime/bp-48863

  * 0ee1940232 Merge branch '2018.3' into bp-48863

  * f40b966d99 decode file contents for python2 as well

* **PR** `#48928`_: (`Ch3LL`_) fix test_runas integration test for macosx
  @ *2018-08-05 14:24:13 UTC*

  * abd7f1312d Merge pull request `#48928`_ from Ch3LL/mac_runas

  * 3d6455dbcd remove unecessary comment in setup

  * 8e30db0217 move destructivetest to testname

  * 708dec8740 add destructivetest to setup and teardown for runas test

  * c0730ff968 fix test_runas integration test for macosx

* **PR** `#48899`_: (`Ch3LL`_) remove base_top_file file in teardown and add sleep
  @ *2018-08-05 14:23:42 UTC*

  * dbd300ff70 Merge pull request `#48899`_ from Ch3LL/unit_state

  * 0272cadff8 Merge branch '2018.3' into unit_state

  * 5896c7fc36 remove base_top_file file in teardown and add sleep

* **PR** `#48898`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-08-05 14:23:19 UTC*

  * ffa1fcc682 Merge pull request `#48898`_ from rallytime/merge-2018.3

  * 1f093cef4a Merge branch '2018.3' into merge-2018.3

  * b3a5aa49d7 Merge branch '2017.7' into '2018.3'

    * e79ccb35b1 Merge pull request `#48876`_ from Vaelatern/make-network-learning-optional

      * a4905b0e5d Make IP_LEARNING optional

    * f8bfab4f9f Merge pull request `#48890`_ from Ch3LL/cmd_test

      * acda4ed9ab add sleep in test_cmd integration test

    * 52722f6ded Merge pull request `#48885`_ from rallytime/flaky-tests-shadow

      * da871a2d57 Mark shadow module integration test as flaky

    * bf0895656e Merge pull request `#48884`_ from rallytime/flaky-tests-matchers

      * 38d9eae537 Merge branch '2017.7' into flaky-tests-matchers

    * a567666938 Merge pull request `#48868`_ from terminalmage/fix-loader-race

      * 5f1169b9a2 Fix race when SIGTERM/SIGINT received while lazyloading a module

    * 0ca0b6f2f2 Merge pull request `#48883`_ from terminalmage/salt-jenkins-1023

      * c61f75cb50 Fix failing git worktree tests

          * 3660dff13c Separate compound matcher tests into individual tests

    * a84f5155a1 Merge pull request `#48869`_ from Ch3LL/mac_shell_tests

      * 3734b1ec89 Catch socket.error exception in testprogram

    * 7f56b8bf44 Merge pull request `#48867`_ from rallytime/skip-tornado-test

      * 7320aa9104 Skip unreliable tornado test.

* **PR** `#48893`_: (`Ch3LL`_) handle when ca_certs is None in utils.http
  @ *2018-08-03 20:30:48 UTC*

  * 848e26ed0b Merge pull request `#48893`_ from Ch3LL/http_tests

  * 16d251f7ff Merge branch '2018.3' into http_tests

  * 5674dddb2a handle when ca_certs is None in utils.http

* **PR** `#48903`_: (`Vaelatern`_) Wrap ElementTree.tostring to make strs, not bytes
  @ *2018-08-03 19:12:34 UTC*

  * **PR** `#48877`_: (`Vaelatern`_) Wrap ElementTree.tostring to make strs, not bytes (refs: `#48903`_)

  * f1adf56017 Merge pull request `#48903`_ from Vaelatern/improve-salt-cloud-python3-virt

  * c45447fe0b Wrap ElementTree.tostring to make strs, not bytes

* **PR** `#48900`_: (`Ch3LL`_) skip getpwnam check on mac in unit test_cmdmod
  @ *2018-08-03 16:38:51 UTC*

  * d23471262d Merge pull request `#48900`_ from Ch3LL/cmd_unit

  * b82dd708be skip getpwnam check on mac in unit test_cmdmod

* **PR** `#48921`_: (`rallytime`_) Back-port `#48904`_ to 2018.3
  @ *2018-08-03 15:17:15 UTC*

  * **PR** `#48904`_: (`KaiSforza`_) No rehashing in parallel (refs: `#48921`_, `#48920`_)

  * d622a49b58 Merge pull request `#48921`_ from rallytime/bp-48904

  * b504625f61 No rehashing in parallel

* **PR** `#48877`_: (`Vaelatern`_) Wrap ElementTree.tostring to make strs, not bytes (refs: `#48903`_)
  @ *2018-08-02 19:28:56 UTC*

  * 1e150923aa Merge pull request `#48877`_ from Vaelatern/improve-salt-cloud-libvirt-python3-libvirt

  * fb7885315c Wrap ElementTree.tostring to make strs, not bytes

* **PR** `#48824`_: (`rallytime`_) Bump deprecation in win_servermanager state to Neon
  @ *2018-08-02 18:01:34 UTC*

  * 1fb7d9431b Merge pull request `#48824`_ from rallytime/win_servermanager_deprecations

  * 6ef5412528 Bump deprecation in win_servermanager state to Neon

* **ISSUE** `#37512`_: (`ChristianBeer`_) What's the precedence if multiple master configurations are specified? (refs: `#48888`_)

* **PR** `#48888`_: (`terminalmage`_) Explictly document the configuration override priority
  @ *2018-08-02 16:57:18 UTC*

  * ec8e07e8ce Merge pull request `#48888`_ from terminalmage/issue37512

  * 7dce7cde14 Explictly document the configuration override priority

* **PR** `#48871`_: (`dwoz`_) Remove unicode key pairs from environ after test
  @ *2018-08-01 22:33:41 UTC*

  * d4bb3a0963 Merge pull request `#48871`_ from dwoz/test_cleanup

  * f2e15e7f1d Do not re-define tearDown

  * 4f8a191a69 Remove unicode key pairs from environ after test

* **PR** `#48843`_: (`isbm`_) Prevent u'something' to appear in help info.
  @ *2018-08-01 20:38:58 UTC*

  * bec79e83a3 Merge pull request `#48843`_ from isbm/isbm-log-level-names-fix-2

  * a63686180d Merge branch '2018.3' into isbm-log-level-names-fix-2

  * 783c96ac72 Prevent u'something' to appear in help info.

* **PR** `#48855`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-08-01 17:44:59 UTC*

  * a8376b537a Merge pull request `#48855`_ from rallytime/merge-2018.3

  * 44998c208e Lint: Fix undefined logger variable

  * 92c9317a25 Update old utils paths to use new paths

  * 15bfba7143 Merge branch '2017.7' into '2018.3'

    * 05f2d65de3 Merge pull request `#48853`_ from rallytime/bp-48850

      * 3c33ee554a Skip tests in integration.shell.test_master

    * 8a1285239a Merge pull request `#48426`_ from garethgreenaway/46689_fixing_pkg_held_when_package_is_installed

      * 9b0f5dd212 Fixing identation, removing some unnecessary conditionals.

      * 727964ab55 One last cleanup.

      * 11cb86e6eb General cleanup in pkg state, reducing duplicate code.  Fixing the requires_salt_modules decorator, sys.doc was returning too much information for the event to handle.  This change specifically calls sys.doc with the module name.

      * 16fb6ae635 Make sure pkg.hold and pkg.unhold are available before running the test.

      * 998651102d Fixing a situation when a package is already installed via salt or manually and a state attempts to set that package to be held.  Previously the holding/unholding logic was only being run against packages that were being installed.  This change moves the holding logic outside and runs it against all desired packages.  Adding a new test to test holding logic.

    * c8e69431ff Merge pull request `#47734`_ from OrlandoArcapix/Issue47689-pip-state-performance

      * 662bd1f780 Merge branch '2017.7' into Issue47689-pip-state-performance

      * 66936b4f41 Changed string comparison in pip test to match new confirmation string - ref PR `#47734`_.

      * bb5939d6ef Merge branch '2017.7' into Issue47689-pip-state-performance

      * d6a49ae41c Merge branch '2017.7' into Issue47689-pip-state-performance

      * d4083fc9d1 Merge branch 'Issue47689-pip-state-performance' of github.com:OrlandoArcapix/salt into Issue47689-pip-state-performance

        * 779b5fa785 Merge branch '2017.7' into Issue47689-pip-state-performance

      * f3653349ab Removed whitespaces at end of added comments lines

      * db11f2ff4b Merge branch '2017.7' into Issue47689-pip-state-performance

      * eac0178de2 Ref: `#47689`_ - document additional kwarg passed to pip._check_if_installed function

      * 0d19803106 Merge branch '2017.7' into Issue47689-pip-state-performance

      * d3678bf2f3 `#47689`_ fix lint errors

      * 4fec8f6bcc `#47698`_ improve run-speed of pip package state checks by only loading the current package list once when checking multiple packages

    * 83a5b3cc47 Merge pull request `#48844`_ from AVeenstra/fix-python3-incompatibility

      * f238779a62 Merge branch '2017.7' into fix-python3-incompatibility

      * 6b1805afc6 Fixed Python 3 incompatibility in methods in nilrt_ip and debian_ip.

    * 136ff6735a Merge pull request `#48662`_ from slaws/fix-retention-schedule-48637

      * 3c8f5f5b3d pylint fix

      * 5539eff39e Excluding relative dirs in state.file.retention_schedule

    * 1fc04f281b Merge pull request `#48840`_ from gtmanfred/docs

      * 8d2d268c4a fix links in pkg doc.

    * 0a19f845ea Merge pull request `#48834`_ from gtmanfred/slsutil

      * f9441d2bef read output of stringio if it is readable

    * 2e00939a6e Merge pull request `#48788`_ from Ch3LL/timezone_windows

      * de95a6a215 add unused import to timezone test file

      * 22e424859e add unused import to import

      * 0840fc3117 disable pylint import error

      * f09d1a2c7e Add timzeon windows integration tests and fix get_zone

* **ISSUE** `#48659`_: (`dstoliker`_) file.grep with glob (*) in path produces file not found error (refs: `#48830`_)

* **PR** `#48830`_: (`garethgreenaway`_) [2018.3] Fixes to file.grep
  @ *2018-07-31 21:30:04 UTC*

  * e23ba01cd2 Merge pull request `#48830`_ from garethgreenaway/48659_file_grep_glob_fix

  * 0791b0a03c FileGrepTestCase tests back to 2018.3

  * 2e01c55e7e Fixing a bug that prevents specifying wildcards for filenames.

* **PR** `#48814`_: (`isbm`_) dmidecode race conditions check
  @ *2018-07-31 20:48:29 UTC*

  * 9fda70b3d0 Merge pull request `#48814`_ from isbm/isbm-2018.3-smbios-bugfix

  * 5f1141dc05 Merge branch '2018.3' into isbm-2018.3-smbios-bugfix

  * b00ee5feef Update clean clause

  * b1b2e9c222 Remove multiple returns and combine logic to just one clause

  * fd77f760ee Rephrase explanatory comment

  * 1031e06443 Remove unnecessary code

  * c379b7e4ed Get rid of global variable

* **PR** `#48804`_: (`Ch3LL`_) Use brew path from which cmd in mac_brew module
  @ *2018-07-31 20:24:33 UTC*

  * 3d16a63ff2 Merge pull request `#48804`_ from Ch3LL/mac_brew

  * e818c752b3 Merge branch '2018.3' into mac_brew

  * 41e3d17f29 Use brew path from which cmd in mac_brew module

* **PR** `#48836`_: (`dwoz`_) Fix unicode directory listing on py2
  @ *2018-07-31 20:22:53 UTC*

  * 950c1014aa Merge pull request `#48836`_ from dwoz/unicode_names_py2

  * 47e158b9f0 Optomize if statement

  * 9b462394b2 Fix unicode directory listing on py2

* **PR** `#48847`_: (`terminalmage`_) Update file.blockreplace docs to reflect changed functionality
  @ *2018-07-31 18:11:30 UTC*

  * baf8c5784a Merge pull request `#48847`_ from terminalmage/issue48695

  * e2bdf7fb92 Update file.blockreplace docs to reflect changed functionality

* **PR** `#48587`_: (`twangboy`_) Fix lgpo issue on Py3
  @ *2018-07-31 18:05:58 UTC*

  * 644a1f4ff8 Merge pull request `#48587`_ from twangboy/fix_lgpo

  * a42621c817 Write file in normal mode

  * bfcbdeca3b Fix lgpo issue on Py3

* **PR** `#48796`_: (`Ch3LL`_) Remove fake su used in integration tests
  @ *2018-07-31 17:08:54 UTC*

  * 2bacc23481 Merge pull request `#48796`_ from Ch3LL/remove_su

  * d3b7f2cb18 Remove fake su used in integration tests

* **ISSUE** `#38310`_: (`ghost`_) Unable to checkout external pillar git repo using its git tag (refs: `#48689`_)

* **PR** `#48689`_: (`linoplt`_) Fix ext_pillar remote checkout using tag (pygit2)
  @ *2018-07-31 16:15:58 UTC*

  * 00d06bda76 Merge pull request `#48689`_ from linoplt/fix_38310_pygit2_checkout_ext_pillar_remote_using_tag

  * eb4361dcc2 Merge branch '2018.3' into fix_38310_pygit2_checkout_ext_pillar_remote_using_tag

  * c20977e3bc Merge branch '2018.3' into fix_38310_pygit2_checkout_ext_pillar_remote_using_tag

  * b0157c215b Fix ext_pillar remote checkout using tag (pygit2)

* **PR** `#48838`_: (`sizgiyaev`_) Fixed: added additional return code 200 for succeeded vault api request
  @ *2018-07-31 16:14:22 UTC*

  * 5e14e36195 Merge pull request `#48838`_ from sizgiyaev/fix-vault-policy-state

  * 02d09c6281 Fixed: added additional return code 200 for succeeded api request

* **PR** `#48714`_: (`dwoz`_) Always transfer bytes from fileserver roots
  @ *2018-07-30 22:37:13 UTC*

  * 69f81214d1 Merge pull request `#48714`_ from dwoz/state_echo_fix

  * ce3ed43dab Always use unix line endings

  * d5e60090bc Merge pull request `#2`_ from terminalmage/state_echo_fix

    * 52fc1c955d Simplify file contents in roots fileserver test

    * b6f73e8e57 Remove trailing whitespace on what should be a blank line

  * 95329acb1e Fileserver transfers bytes

  * aa34a80997 Always trasfer bytes from fileserver roots

* **PR** `#48822`_: (`Ch3LL`_) Fix salt-ssh state.sls_id TypeError key must be a string
  @ *2018-07-30 20:29:29 UTC*

  * 16ca4ec2eb Merge pull request `#48822`_ from Ch3LL/ssh_2018_id

  * 01f6a15da0 Fix salt-ssh state.sls_id TypeError key must be a string

* **ISSUE** `#47999`_: (`arthurlogilab`_) Carbon returner failing when run through scheduler on log.trace (refs: `#48757`_)

* **PR** `#48791`_: (`rallytime`_) Back-port `#48757`_ to 2018.3
  @ *2018-07-27 21:30:44 UTC*

  * **PR** `#48757`_: (`kuetrzi`_) Update carbon_return.py (refs: `#48791`_)

  * 488f6716d4 Merge pull request `#48791`_ from rallytime/bp-48757

  * f440ebe91f Update carbon_return.py

* **PR** `#48799`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-27 21:30:13 UTC*

  * fae29f4257 Merge pull request `#48799`_ from rallytime/merge-2018.3

  * 487458ad4b Update old utils paths to use new utils paths

  * 436510796f Merge branch '2017.7' into '2018.3'

    * 8e61f3dce0 Merge pull request `#48742`_ from frogunder/45014

      * f08058b043 Merge branch '45014' of https://github.com/frogunder/salt into 45014

        * 757fde70c6 Merge branch '2017.7' into 45014

      * 33c20c1ec0 fix tests

      * a7a914060d add windows integration tests for states.file

    * d74f47b340 Merge pull request `#48795`_ from rallytime/fix-48417

      * 5123b17ffd Update linting docs to contain .testing.pylintrc use

    * bbea9ae936 Merge pull request `#48789`_ from rallytime/bp-48783

      * 682a05bebe Threshold was wrong

      * d4ca0e3a97 test: except for OSError only

      * 4547231909 Only run lint checks against changed files

    * 41464d4b39 Merge pull request `#48731`_ from zer0def/virt-runner-init-args

      * a1fa081ad0 Documentation to missing parameters in virt.init runner.

      * 365ebdf539 Fixed `enable_vnc` runner arg being passed into `seed_cmd` module arg in `virt.init`.

    * 169afea16a Merge pull request `#48749`_ from Ch3LL/logo_docs

      * 73b1fc29f0 Update Saltstack Logo banner on docs.saltstack.com

* **ISSUE** `#48020`_: (`calvinhp`_) mine.get not returning data in a state.orchestrate sls  (refs: `#48765`_)

* **PR** `#48765`_: (`FedericoCeratto`_) [2018.3] Fix mine.get not returning data
  @ *2018-07-27 18:01:06 UTC*

  * bd67d2a805 Merge pull request `#48765`_ from FedericoCeratto/fix_mine.get_not_returning_data

  * 7183a6e0e8 Workaround for `#48020`_

* **PR** `#48747`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-26 18:14:34 UTC*

  * 6978ce5d1d Merge pull request `#48747`_ from rallytime/merge-2018.3

  * 4122da40b5 Merge branch '2017.7' into '2018.3'

    * 781c6a6c36 Merge pull request `#48743`_ from rallytime/saltconf-ad-2017.7

      * 6df8fd8652 Update DOCBANNER with new SaltConf18 image

    * ce4e22224e Merge pull request `#48720`_ from Ch3LL/mac_file_path

      * 01d25fae19 Fix test_managed_source_hash_indifferent_case on macosx to correct tmp path

    * 4b9f037d43 Merge pull request `#48719`_ from Ch3LL/service_mac_state

      * f44a2fc349 Enable service if disabled before running state service tests

    * b2431eab10 Merge pull request `#48715`_ from rallytime/flaky-tests

      * 7332cce567 [2017.7] Mark some tornado tests as flaky

    * 801eae3b8d Merge pull request `#48672`_ from frogunder/45012

      * 0747f2e58a add service enabled test

* **ISSUE** `#48676`_: (`djneades`_) salt-ssh should not target wrong minion from roster file as a result of reverse-DNS lookups (refs: `#48771`_)

* **PR** `#48771`_: (`gtmanfred`_) only do reverse dns lookup on ips for salt-ssh
  @ *2018-07-26 15:41:40 UTC*

  * 5ea43817ab Merge pull request `#48771`_ from gtmanfred/2018.3

  * 535fb8f8e7 only do reverse dns lookup on ips for salt-ssh

* **PR** `#48752`_: (`garethgreenaway`_) [2018.3] Fix when state file is integers
  @ *2018-07-25 15:03:02 UTC*

  * f2ef2d3ef6 Merge pull request `#48752`_ from garethgreenaway/fix_state_file_all_integers

  * 790801c67e Fixing a case where the state module would fail if the state file being passed was all integers.  Added a new tests for this edge case.

* **ISSUE** `#46896`_: (`Poil`_) Proxy + file.managed => Comment: Failed to cache xxx invalid arguments to setopt (refs: `#48754`_)

* **PR** `#48754`_: (`lomeroe`_) send proxy/ca_cert parameters as strings (not unicode) to tornado httpclient
  @ *2018-07-25 14:55:42 UTC*

  * 030c921914 Merge pull request `#48754`_ from lomeroe/fix-tornado-proxy

  * d33056704b pass proxy_user, proxy_password, proxy_host, and ca_certs through salt.utils.stringutils.to_str()

* **PR** `#48769`_: (`Ch3LL`_) Update Saltstack Logo banner on docs.saltstack.com
  @ *2018-07-25 14:47:19 UTC*

  * 1eee4b136b Merge pull request `#48769`_ from Ch3LL/update_doc_2018.3

  * 0cb4bac798 Update Saltstack Logo banner on docs.saltstack.com

* **PR** `#48760`_: (`dwoz`_) Multiple windows test fixes
  @ *2018-07-25 11:55:27 UTC*

  * 19afa3b023 Merge pull request `#48760`_ from dwoz/test_file_fixes

  * a89019e956 Multiple windows test fixes

* **PR** `#48753`_: (`dwoz`_) Finally fix prepend for real
  @ *2018-07-25 00:07:15 UTC*

  * e6dace3959 Merge pull request `#48753`_ from dwoz/fix_prepend

  * 0d1e8ab3f8 Merge branch '2018.3' into fix_prepend

* **PR** `#48756`_: (`dwoz`_) os.uname is not available on py2 windows
  @ *2018-07-24 23:38:32 UTC*

  * 8aef6d9960 Merge pull request `#48756`_ from dwoz/core_grains_fix

  * b7a37ecf11 os.uname is not available on py2 windows

* **ISSUE** `#48536`_: (`whytewolf`_) diskusage beacon does not recognize tmpfs disks in linux.  (refs: `#48718`_)

* **PR** `#48718`_: (`garethgreenaway`_) [2018.3] beacon diskusage fixes
  @ *2018-07-24 17:45:26 UTC*

  * 062fe7cccf Merge pull request `#48718`_ from garethgreenaway/48536_beacon_diskusage_fixes

  * 38a65e8fb3 Fixing test_diskusage_nomatch and test_diskusage_match_regex

  * 6ecca166ff Updating psutil.disk_partitions to pull in all mounts not just the physical ones.  Check to see if the mount point from the configuration ends with a $ (regular expression end of line) if not we add one in to ensure that a simple / does not end up matching all mount points.  Updating tests accordingly.

* **PR** `#48711`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-24 17:38:58 UTC*

  * e873621009 Merge pull request `#48711`_ from rallytime/merge-2018.3

  * ea5c063237 Update old utils paths to use new paths

  * e740d3b208 Merge branch '2017.7' into '2018.3'

    * 689c231d2b Merge pull request `#48691`_ from Ch3LL/win_repo_pkg_test

      * 4b7d6d80c5 Remove unnecessary jinja in curl.sls file

      * 2bedadfadb Add windows pkg module integration tests

    * 83e4bba916 Merge pull request `#48635`_ from nbraud/acme

      * 3673bae9de modules/acme: explicitely ignore the `perms` return value

      * 1800a231e8 Fixup some schema expectations

      * 8c718cb417 acme: Make the private key mode configurable

      * 917dea6761 modules/acme: Use file.check_perms ret-morphing powers

      * d2241ceb2d module/acme: Do not exit early when the certificate already exists

      * 98af0db826 modules/acme: Set the private key filemode to 0640

    * 85991680c8 Merge pull request `#48345`_ from twangboy/fix_48169

      * ead19725b6 Merge branch '2017.7' into fix_48169

      * 653fbcb383 Fix some docs errata

      * 8898e5ff11 Add warn_until Fluorine

      * 707906ac15 Fix unit.state.test_powercfg

      * 32c5014eb6 Fix unit tests

      * 0d9c56e540 Add some more logging

      * b20453de9f Use minutes to set

      * 7dc7eb11c2 Fix documentation to denote seconds when setting

    * 96447ce541 Merge pull request `#48656`_ from Ch3LL/windows_ip_mod

      * 90c3f568b1 Add windows ip module integration tests

    * 0c5fff3dc8 Merge pull request `#48638`_ from twangboy/fix_vcredist

      * e30d17099d Use goto instead of if statement

      * e1042fa084 Remove vcredist for Py3

    * 1ebd96d909 Merge pull request `#48664`_ from Ch3LL/srv_disable_mac

      * f1fbfad387 move the disable call up in try block

      * f60d21bda4 reverse assertion order for service disable test

      * 3727d1b3b9 switch try/except to match 2018.3

      * fb953c2369 [2017.7] Fix service.disabled test for macosx

    * 3da3cf2f3f Merge pull request `#48625`_ from Ch3LL/ssh_state

      * f590eb2b02 Update state.py

      * 9790ee3d0d Follow up to PR `#48555`_

    * 33812f78f1 Merge pull request `#48673`_ from Ch3LL/mac_port

      * 87dd85a220 Use different pub and ret ports for testprogram integration tests

    * 5f6a7c4d89 Merge pull request `#48675`_ from Ch3LL/mac_disable

      * c78efab828 Fix mac service.disable tests

    * 93d2f51d2b Merge pull request `#48658`_ from wyardley/wyardley-npm-json-output-2017

      * 7ff3c9c5ff Improve handling of npm json output (`#43138`_)

    * 3e293b0513 Merge pull request `#48678`_ from OrlandoArcapix/fix-npm-dryrun-test

      * 851a404f6b Fix for issue `#48677`_ - return True when no changes are to be made with npm.bootstrap with test=true

    * 07a1f6520f Merge pull request `#48580`_ from rallytime/fix-46884

      * 736b382e91 Don't error on retcode 0 in libcrypto.OPENSSL_init_crypto call

    * 9874429741 Merge pull request `#48628`_ from terminalmage/testinfra

      * 5ace9f01ec Fix NameError in testinfra module

    * 0d4c80205f Merge pull request `#48651`_ from gtmanfred/pylint-2017.7

      * b6ee52f859 handle pyzmq for python3.4

    * 160ae29cf2 Merge pull request `#48647`_ from gtmanfred/pylint-2017.7

      * ff818c4ca2 disable checks on pylint

    * 47b1032efa Merge pull request `#48593`_ from pritambaral/fix/2017.7-importlib-pyc-loading-order

      * add7894dee loader: Fix suffix order when importlib is used

    * 9da7b2ec8d Merge pull request `#48630`_ from dubb-b/pipeline-updates

      * 8594a8dd05 Adding PY_COLORS=1 as PY_COLORS = 1 instead

      * 314b0e3599 Adding PY_COLORS=1 for python programs to use ANSI Colors

      * b705e8f7a5 Adding correct spacing to options section

      * 9d8a7e07db Adding options to Jenkins pipline builds

    * a8ae2adf64 Merge pull request `#48633`_ from saltstack/revert-48610-2017.7

      * bab4a769d4 Revert "only run pylint on files that change"

    * 6e32bb7f74 Merge pull request `#48614`_ from rallytime/bp-48562

      * cb654bbf2c Add timeouts to all s3 queries

    * 1b6e6388f8 Merge pull request `#48588`_ from garethgreenaway/48415_event_send_multi_master

      * fab25af1a9 Adding some quick documention about why we are setting ret=True following the channel.send.

      * bf78f4b188 If the channel send is sucessful and does not raise an exception, we set ret to True, in case a previous exception from a previous channel send to another master has sent it to False.

      * 8d1551c5fb When using Salt multi-master, if we encouter a salt master that has not accepted the minion key yet we should not exit right away, rather continue on and try the next salt master available in the list.

    * 24ffda49ba Merge pull request `#48610`_ from gtmanfred/2017.7

      * 779d1a3dcb only run pylint on files that change

    * 5391dd0a8d Merge pull request `#48584`_ from Ch3LL/mac_user_grp

      * 585ee9db90 Fix grp import for mac in test_user integration test

    * 61572b6780 Merge pull request `#48555`_ from Ch3LL/ssh_id

      * f69932f506 fix pylint

      * 70e36764ee Add more tests for salt-ssh state.sls_id

      * dab80e805c Fix state.sls_id to run on ssh minion and not master

    * aa6dcf39e8 Merge pull request `#48583`_ from Ch3LL/mac_flaky_tests

      * 4ba2299a87 import flaky decorator on mac tests

      * 811220b41e Add flaky decorator to mac_system and mac_timezone tests

    * 6973152057 Merge pull request `#48534`_ from xetix/fix-zypper-latest_version

      * 9985f0b4c1 Lint: remove extra blank line

      * 5fbead8a36 Merge branch '2017.7' into fix-zypper-latest_version

      * 56ac449271 Merge branch 'fix-zypper-latest_version' of https://github.com/xetix/salt into fix-zypper-latest_version

        * 44e87f5a0f Adding testcase for this fix.

        * b354c6863c Fix behaviour of function latest_version in zypper module when multiple packages are passed to function. Function now properly return dict with empty string as version if latest packages is already installed, and multiple packages are passed to function

      * db35d0c1e1 Adding testcase for this fix.

      * d2513757ed Fix behaviour of function latest_version in zypper module when multiple packages are passed to function. Function now properly return dict with empty string as version if latest packages is already installed, and multiple packages are passed to function

    * 10124034cb Merge pull request `#48582`_ from dwoz/test_prepend_fix

      * f37571e0bd Merge branch '2017.7' into test_prepend_fix

    * 13f67335f3 Merge pull request `#48564`_ from dwoz/test_prepend_fix

        * 136ddf5f54 Finally fix prepend for real

      * 66b25e65bf Fix failing prepend test

    * b8ce27729f Merge pull request `#48558`_ from dwoz/test_file_fix

      * c858bf477f Remove which mock to get the test passing

    * a15c65202d Merge pull request `#48552`_ from KaiSforza/jenkins-junit-2017

      * 72b1830974 Set up junit in jenkins

    * f73108026e Merge pull request `#48550`_ from gtmanfred/2017.7

      * d5c603d9b6 add posargs to tox pylint

    * 113b0426f8 Merge pull request `#48535`_ from asnell/asnell-patch-2

      * d328f6e43d Update manage_file helptext

* **PR** `#48744`_: (`rallytime`_) [2018.3] Update DOCBANNER with new SaltConf18 image
  @ *2018-07-24 17:15:40 UTC*

  * 6c7f1c549d Merge pull request `#48744`_ from rallytime/saltconf-ad-2018.3

  * dbc1f8b772 Update DOCBANNER with new SaltConf18 image

* **PR** `#48726`_: (`dwoz`_) Skip test when syslog not available
  @ *2018-07-24 16:12:44 UTC*

  * 04ab17a4d6 Merge pull request `#48726`_ from dwoz/syslogtest

  * 00f04cfd59 Skip test when syslog not available

* **PR** `#48727`_: (`dwoz`_) Windows compatible cp test
  @ *2018-07-24 14:41:34 UTC*

  * af837424aa Merge pull request `#48727`_ from dwoz/file_cp_test_fix

  * 6e7824266b Windows compatible cp test

* **ISSUE** `#40004`_: (`te-af-github`_) svn changes report (refs: `#47510`_)

* **ISSUE** `#21025`_: (`RobertFach`_) svn.export reports invalid change data (2014.7.x) (refs: `#47510`_)

* **PR** `#48710`_: (`rallytime`_) Back-port `#47510`_ to 2018.3
  @ *2018-07-23 21:11:18 UTC*

  * **PR** `#47510`_: (`daa`_) Fix svn export invalid changes data (refs: `#48710`_)

  * 04125b077d Merge pull request `#48710`_ from rallytime/bp-47510

  * ebcd3b1c6b fixed test for svn.export

  * e79f4aa5cc put name under "new" key in changes dictionary to be in line with svn.latest

  * 163f99089c made svn.export changes data dictionary, fixes `#21025`_, `#40004`_

          * 3a941055c1 Use `salt.utils.platform.is_windows`

          * 33e48f7ad7 Finally fix prepend for real

* **PR** `#48699`_: (`terminalmage`_) Add missing release notes mention of file.blockreplace changes
  @ *2018-07-23 13:34:32 UTC*

  * e1dd10be70 Merge pull request `#48699`_ from terminalmage/issue48695

  * 7ad832c901 Add missing release notes mention of file.blockreplace changes

* **PR** `#48700`_: (`dwoz`_) Call sync_modules to fix Windows test case
  @ *2018-07-22 22:23:48 UTC*

  * ab44a05fe4 Merge pull request `#48700`_ from dwoz/ext_mod_test

  * d731e6bf8e Call sync_all to fix Windows test case

* **PR** `#48653`_: (`terminalmage`_) docker_container.running: Fix regression in test mode
  @ *2018-07-20 19:15:47 UTC*

  * 6a494205f2 Merge pull request `#48653`_ from terminalmage/docker-unboundlocal

  * b0440871a0 Merge branch '2018.3' into docker-unboundlocal

  * 9515dd17ff docker_container.running: Fix regression in test mode

* **ISSUE** `#47059`_: (`OrlandoArcapix`_) Some states incorrectly return None instead of an empty dict when there are no changes (refs: `#48685`_)

* **ISSUE** `#46985`_: (`OrlandoArcapix`_) grafana4_user.present and grafana4_org.present states not working in 2018.3.0 (refs: `#48685`_)

* **PR** `#48685`_: (`bbinet`_) Use empty dict for 'changes' instead of None
  @ *2018-07-20 17:12:43 UTC*

  * **PR** `#48671`_: (`bbinet`_) Few fixes to the grafana module and states (refs: `#48685`_)

  * 266c6f250e Merge pull request `#48685`_ from bbinet/none-changes

  * 842eb3da24 Use empty dict for 'changes' instead of None

* **PR** `#48670`_: (`bbinet`_) Add the "traverse" jinja filter
  @ *2018-07-20 16:36:21 UTC*

  * 5a6f7a085c Merge pull request `#48670`_ from bbinet/traverse

  * 32b6d22cf2 Fix RST syntax issue in doc

  * 37a41226d5 Add the "traverse" jinja filter

* **PR** `#48594`_: (`pritambaral`_) Backport 48418
  @ *2018-07-20 14:57:19 UTC*

  * **PR** `#48418`_: (`pritambaral`_) Fix multi-sls `salt.state` orchestration in masterless systems (refs: `#48594`_)

  * ff11763fd3 Merge pull request `#48594`_ from pritambaral/bp-48418

  * adcee28b84 Fix multi-sls `salt.state` orchestration in masterless systems

* **ISSUE** `#48184`_: (`mmulqueen`_) Invalid DMI prevents salt-minion from running (refs: `#48440`_)

* **PR** `#48440`_: (`mmulqueen`_) Make core.py tolerant of invalid chars in DMI data
  @ *2018-07-20 14:48:07 UTC*

  * **PR** `#48216`_: (`Ch3LL`_) Fix UnicodeDecodeError when reading file to determine virtual grain (refs: `#48440`_)

  * 111908f519 Merge pull request `#48440`_ from mmulqueen/patch-1

  * 5bbbdc74cd Make core.py tolerant of invalid chars in DMI data

* **PR** `#48663`_: (`Ch3LL`_) [2018.3] Fix service.disabled test for macosx
  @ *2018-07-20 14:32:22 UTC*

  * 4e77b242f2 Merge pull request `#48663`_ from Ch3LL/srv_disable_mac_2018

  * bddfbd75d2 reverse assertion order for service disable test

  * 2bfaf7fe89 Fix service.disabled test for macosx

* **PR** `#48304`_: (`Ch3LL`_) Fix macosx grains when swapusage returns comma
  @ *2018-07-20 14:30:59 UTC*

  * dfc1582475 Merge pull request `#48304`_ from Ch3LL/swap_mac

  * 5d6135e1e2 Fix macosx grains when swapusage returns comma

* **PR** `#48671`_: (`bbinet`_) Few fixes to the grafana module and states (refs: `#48685`_)
  @ *2018-07-20 13:58:02 UTC*

  * 9d7eabd24e Merge pull request `#48671`_ from bbinet/grafana-fixes

  * 3c5083f550 Add support for dry run (test=True) of grafana states

  * 7e7ae8ace7 influxdb: fix conflicts in function arg names with client_args

  * 73a24b774a Ignore readOnly option when diffing

  * 81f0cf8a3f Add missing profile argument to grafana4.get_user_data

* **PR** `#48650`_: (`gtmanfred`_) [2018.3] handle pyzmq for python3.4
  @ *2018-07-18 17:34:37 UTC*

  * e828167114 Merge pull request `#48650`_ from gtmanfred/pylint-2018.3

  * 3c1882077e handle pyzmq for python3.4

* **PR** `#48648`_: (`gtmanfred`_) [2018.3] disable checks on pylint
  @ *2018-07-18 16:21:37 UTC*

  * a6f8acf4dc Merge pull request `#48648`_ from gtmanfred/pylint-2018.3

  * 7c34c2965e disable checks on pylint

* **PR** `#48634`_: (`dwoz`_) Sync modules for state tests
  @ *2018-07-17 20:33:06 UTC*

  * 01c9c59a97 Merge pull request `#48634`_ from dwoz/state-module-test-fix

  * 9dfd2ae392 Sync modules for state tests

* **PR** `#48585`_: (`astorath`_) replaced meta tag
  @ *2018-07-16 14:11:02 UTC*

  * fb7bfc757c Merge pull request `#48585`_ from astorath/fix-vault-meta

  * 42fd3d5f67 replaced meta tag

* **PR** `#48579`_: (`Ch3LL`_) Fix python2 syslog returner expecting string bytes not unicode
  @ *2018-07-13 19:50:16 UTC*

  * 4b16537a29 Merge pull request `#48579`_ from Ch3LL/fix_syslog

  * d8288a0ffc add unicode type for syslog test for tag

  * 17e69382d5 Fix python2 syslog returner expecting string bytes not unicode

* **ISSUE** `#48542`_: (`calvinhp`_) Missing state git.cloned is listed in the docs as new for 2018.3.2 (refs: `#48547`_)

* **PR** `#48547`_: (`gtmanfred`_) fix git.cloned doc versionadded
  @ *2018-07-13 18:46:25 UTC*

  * 3549ce408d Merge pull request `#48547`_ from gtmanfred/git.cloned

  * b596a945ea Merge branch '2018.3' into git.cloned

  * e41f4922a0 fix git.cloned doc versionadded

* **ISSUE** `#48110`_: (`whytewolf`_) file.line on windows not treating unix line endings correctly. (refs: `#48503`_)

* **PR** `#48503`_: (`rallytime`_) Back-port `#46291`_ to 2018.3
  @ *2018-07-13 17:14:47 UTC*

  * **PR** `#48380`_: (`twangboy`_) Detect and preserve line endings (refs: `#48503`_)

  * **PR** `#46291`_: (`t0fik`_) Line mixed line ends (refs: `#48503`_)

  * **PR** `#45498`_: (`t0fik`_) Added support for mixed line ending in file (refs: `#46291`_)

  * ee257a1f91 Merge pull request `#48503`_ from rallytime/bp-46291

  * 8bc71688ea Remove /sr.* pattern from test

  * 5e2e2a63fa Update file unit tests to handle "writelines" change

  * 5d38aa8b33 Update file.line to use `writelines` instead of joining

  * d0b6e82ecb Add 'name' as the passed in filepath for test_line_insert_ensure_before_first_line test

  * d8920cb61f Update `test_line_insert_ensure_before_first_line` to use new mock_open methodologies

  * 475f075d8e Handle list of lines instead of strings in file.line func

  * b9ddd53b04 Added comments

  * f3517a1852 List comprehension replaced

  * adfa3aed0d Empty match on delete or replace not causing IndexError exception

  * 5169b1f7fd Comprehensions converting to unicode replaced by salt.utils.data.decode_list

  * d3e8679e05 Removed regex compilation

  * f29815b49b Fixed file permissions

  * d2af81e9c7 Make integration green. Added test for mode ensure insert before first line

  * 9b7df671a5 file.line function refactored

  * 3af551ebe1 /sr.* pattern should raise exception

  * 935a9b9d56 test_line_insert_end fixed

  * 7d6e3ad2e2 Make tests green

  * 75a7e368a6 Setting end of line

  * 489e381100 Added _set_line_eol and _get_eol functions

  * aacbb8c0e2 line function refactored to work on list

  * de668166f9 _regex_to_static refactored to work on lists

  * 464eef6fe1 _get_line_indent renamed to _set_line_indent

* **ISSUE** `#48507`_: (`emersonveenstra`_) mysql_grants.present escape option incorrectly reports failure (refs: `#48561`_)

* **PR** `#48561`_: (`garethgreenaway`_) [2018.3] fixes to grants in mysql module
  @ *2018-07-13 14:24:58 UTC*

  * 2d923f2943 Merge pull request `#48561`_ from garethgreenaway/48507_mysql_grants_incorrect_failure

  * 14c59da72c Following a successful grant application in the MySQL module, the new grant and the desired grant are mismatched because the new grant from Mysql included hashmarks.  This change adds the replace which is included for other items such as database name and username.

* **PR** `#48529`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-12 17:59:35 UTC*

  * 5b5a930449 Merge pull request `#48529`_ from rallytime/merge-2018.3

  * f9b8c4b257 Use () when using with_tempfile decorator in tests

  * d3190ca0c0 Update old utils paths to new utils paths

  * 29b05ffdd1 Merge branch '2017.7' into '2018.3'

    * 0c0c05c2bc Merge pull request `#48527`_ from saltstack/revert-48525-2017.7

      * 18d06c1a93 Revert "add kazoo for testing zookeeper."

    * 05bad3e71c Merge pull request `#48526`_ from twangboy/rollback_certifi-win32

      * 361b3cdc2f Rollback python-certifi-win32

    * db066effe4 Merge pull request `#48521`_ from Martin819/2017.7

      * d5d01f6698 Fix for GlusterFS 4.0 and above

    * ed0bd2bbec Merge pull request `#48525`_ from gtmanfred/2017.7

      * d7a6bff2b2 add kazoo for testing zookeeper.

    * ad5a959ab9 Merge pull request `#48388`_ from garethgreenaway/48277_2017_7_file_roots_wrong

      * 6f11da35a7 Fixing a few things in the new test.

      * cf747b14ec Fixing lint issue

      * 16d36c79c8 When pillar items are compiled a new render is instantiated but the file_roots is the pillar_roots.  This change forces the __opts__['file_roots'] to be set to what is set in actual_file_roots for all renderers once compile_pillar has finished.  Adding a test when this situation is run via a orchestration runner.

    * 38df812257 Merge pull request `#48512`_ from gtmanfred/npm

      * 9ba0f6b3a0 pin pm and grunt packages for npm tests

    * 04ba31147f Merge pull request `#48513`_ from rallytime/merge-2017.7

      * a466a4880f Merge branch '2017.7.7' into '2017.7'

        * cfd21ed22c Merge pull request `#48172`_ from rallytime/2017.7.7-release-notes

          * a0ad794132 Update release notes for 2017.7.7

        * 8af4452134 Merge pull request `#48157`_ from gtmanfred/2017.7.7

          * d8209e8a40 always listen when gathering job info

        * b98c52ee51 Merge pull request `#48140`_ from rallytime/man-pages-2017.7.7

          * 8893bf0d4c Update man pages for 2017.7.7

        * baa0363336 Merge pull request `#48136`_ from gtmanfred/2017.7.7

          * fce1c31146 bootstrap kitchen branch tests with 2017.7.6

        * b0ba08f4d9 Merge pull request `#48134`_ from rallytime/release-notes-2017.7.7

          * 217005b8f1 Add missing `v` for tag reference

          * d53569d1e3 Add release notes file for 2017.7.7

        * 084de927fe Merge pull request `#48098`_ from rallytime/bp-48075-2017.7.7

          * e4e62e8b3a Ensure that the shared list of jids is passed when creating the Minion.  Fixes an issue when minions are pointed at multiple syndics.

    * f0352ea95a Merge pull request `#48514`_ from gtmanfred/2017.7

      * 739bf92599 upgrade dependencies for pytest tests

    * 5372b60137 Merge pull request `#48491`_ from grokrecursion/group-fix-v2

      * 1556b37221 fixed pylint errors

      * f6d9177dab fixed indentation for pep8

      * b9556bf923 v2 try of gid converted to integer

    * 16d3daab3c Merge pull request `#48375`_ from Ch3LL/file_copy

      * d16a790775 Add mode to _makedirs call in file.copy

      * 2cbcb4fd26 Add user and group to makedirs cmd in file.copy

    * d38951b1b3 Merge pull request `#48490`_ from KaiSforza/cifixes

      * 9fe7199af5 Mark failed if anything is found

      * 6749a6bf19 Stop archiving the docs

* **PR** `#48553`_: (`KaiSforza`_) Set up junit in jenkins
  @ *2018-07-12 16:24:01 UTC*

  * a95b8efd8a Merge pull request `#48553`_ from KaiSforza/jenkins-junit-2018

  * 412ffcc956 Set up junit in jenkins

* **PR** `#48551`_: (`gtmanfred`_) add posargs to tox pylint
  @ *2018-07-12 14:35:25 UTC*

  * c4aed02740 Merge pull request `#48551`_ from gtmanfred/2018.3

  * a6a286af28 add posargs to tox pylint

* **PR** `#48533`_: (`terminalmage`_) Fix UnicodeDecodeError in sh beacon
  @ *2018-07-12 13:38:43 UTC*

  * 260da0d545 Merge pull request `#48533`_ from terminalmage/sh-beacon

  * 7ac5ac06c9 Fix UnicodeDecodeError in sh beacon

* **ISSUE** `#48519`_: (`Lutseslav`_) Mysql module alter_db quotation missing (refs: `#48520`_)

* **PR** `#48520`_: (`Lutseslav`_) Add quotes to schema name in ALTER DATABASE.
  @ *2018-07-11 19:15:08 UTC*

  * 8761ac2589 Merge pull request `#48520`_ from Lutseslav/fix-alter-databases-with-special-symbols

  * d088b00ff2 Merge branch '2018.3' into fix-alter-databases-with-special-symbols

  * 59629e9757 Merge branch '2018.3' into fix-alter-databases-with-special-symbols

  * da8336712e Add quotes to schema name in ALTER DATABASE.

* **PR** `#48528`_: (`gtmanfred`_) add 2018.3 requirements for tox/pytest tests
  @ *2018-07-11 18:13:40 UTC*

  * ad4f7efafd Merge pull request `#48528`_ from gtmanfred/2018.3

  * 221559358a add 2018.3 requirements for tox/pytest tests

* **ISSUE** `#48336`_: (`JuanManuelVizcainoAbad`_) file.directory (refs: `#48399`_, `#48398`_)

* **PR** `#48508`_: (`rallytime`_) [2018.3] Fix 2 bugs found in the file.check_perms function
  @ *2018-07-11 15:03:32 UTC*

  * **PR** `#48399`_: (`garethgreenaway`_) [2017.7] fixes to module/file.py (refs: `#48508`_)

  * **PR** `#48398`_: (`garethgreenaway`_) [2018.3] fixes to module/file.py (refs: `#48508`_)

  * 70e5fcb8a5 Merge pull request `#48508`_ from rallytime/fix-file-bug

  * 0747eb5476 Move comment string join and test/changes check to bottom of file.check_perms

  * aefa1dbe21 Fix up bad merge - remove extra section of "mode" changes

* **ISSUE** `#48277`_: (`dvenckus`_) init.sls with included states fails with more than one, 'Template was specified incorrectly: False' (refs: `#48388`_, `#48389`_)

* **ISSUE** `#46986`_: (`github-abcde`_) opts file_roots gets overwritten with pillar_roots in orchestration run (refs: `#48388`_, `#48389`_)

* **PR** `#48389`_: (`garethgreenaway`_) [2018.3] reset file_roots for renderers after compile_pillar
  @ *2018-07-11 13:13:33 UTC*

  * 5a0b274bf1 Merge pull request `#48389`_ from garethgreenaway/48277_2018_3_file_roots_wrong

  * 4b492fa633 Removing unused start_time variable from test_orchestration_with_pillar_dot_items test.

  * 30c5855d20 Fixing a few things in the new test.

  * 36b7253418 Fixing lint issue

  * ab6abfad31 When pillar items are compiled a new render is instantiated but the file_roots is the pillar_roots.  This change forces the __opts__['file_roots'] to be set to what is set in actual_file_roots for all renderers once compile_pillar has finished.  Adding a test when this situation is run via a orchestration runner.

* **ISSUE** `#48342`_: (`jeffclay`_) UnicodeDecodeError when using cache mysql (refs: `#48495`_)

* **PR** `#48495`_: (`garethgreenaway`_) [2018.3] Fix to mysql cache module
  @ *2018-07-10 12:54:10 UTC*

  * f9fd1a889a Merge pull request `#48495`_ from garethgreenaway/48342_mysql_cache_unicode

  * 0029f19033 Ensure the query_string is a bytestring, otherwise an attempt will be made to convert the msgpack data to unicode which will result in a UnicodeDecodeError error.

* **PR** `#48487`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-09 18:38:00 UTC*

  * fc3eeef6b3 Merge pull request `#48487`_ from rallytime/merge-2018.3

  * 54341d1a8d Update old utils paths to use new utils paths

  * 68aabff0cf Merge branch '2017.7' into '2018.3'

  * 22cd4206c4 Merge pull request `#48472`_ from gtmanfred/2017.7

    * c7a3a7d8bd update jenkins tests to use tox for lint

    * 44aaac1d33 use tox to run pylint

  * 27ea8f35ea Merge pull request `#48476`_ from twangboy/fix_dependencies

    * b0087d425c Add license info

    * 935f9b560c Fix dependencies

  * acf42864aa Merge pull request `#48399`_ from garethgreenaway/48336_2017_7_ensure_chmod_setuid_with_chown

    * 8efd33320f Normalize the mode before we compare it.

    * f894f0ecb8 Setting the mode with setuid or setgid bits in addition to setting the owner and group will force the setuid & setgid bits to reset.  This change ensures that we set the mode after setting the owner & group.

  * 6166ff6b78 Merge pull request `#48471`_ from gtmanfred/2017.7

    * 392ab4e51f Add some configurations to tox

  * 6234d9b15d Merge pull request `#48433`_ from discogestalt/fix-redis.hmset

    * 65817ac74d Use clean_kwargs method instead

    * f7fa7f57c6 Found another issue with redismod.hmset

    * 5624865f86 Fix issue with redismod.hmset method

  * aacee0fe2c Merge pull request `#48428`_ from terminalmage/fix-jobs.lookup_jid

    * 6509aa9089 Fix outputter detection in jobs.lookup_jid runner

  * a7e52f0de2 Merge pull request `#48429`_ from rallytime/bp-46824

    * 8b4486248d Added ignore_retcode to mock unit tests

    * f8beab71dd Regression to ignore retcodes on crontab calls

  * 4576ef20bc Merge pull request `#48432`_ from dwoz/file-prepend-again

    * 349a2b279e Prepend test needs file.touch method

* **PR** `#48481`_: (`terminalmage`_) Improve the slack engine docs
  @ *2018-07-09 13:41:15 UTC*

  * 4d4d2eacce Merge pull request `#48481`_ from terminalmage/slack-engine

  * 56e8a1eb93 Improve the slack engine docs

  * dde9c0640d Add information on creating bot users

  * 513c6af975 Fix inaccurate docs

* **PR** `#48348`_: (`dwoz`_) Fix multiple git module tests
  @ *2018-07-06 20:35:58 UTC*

  * 491b5b077c Merge pull request `#48348`_ from dwoz/test_git

  * 5ca5e060b3 Merge branch '2018.3' into test_git

* **PR** `#48454`_: (`terminalmage`_) Improve error message when ext_pillar is incorrectly formatted
  @ *2018-07-06 18:03:44 UTC*

  * dd6a6a97c5 Merge pull request `#48454`_ from terminalmage/issue48107

  * 269dbab7f6 Improve error message when ext_pillar is incorrectly formatted

* **ISSUE** `#48336`_: (`JuanManuelVizcainoAbad`_) file.directory (refs: `#48399`_, `#48398`_)

* **PR** `#48398`_: (`garethgreenaway`_) [2018.3] fixes to module/file.py (refs: `#48508`_)
  @ *2018-07-06 18:02:43 UTC*

  * a9dc758e73 Merge pull request `#48398`_ from garethgreenaway/48336_ensure_chmodd_setuid_with_chown

  * 2454652914 Normalize the mode before we compare it.

  * 08ad5665de Fixing test to ensure it works under py3

  * 2b25d8c95b Setting the mode with setuid or setgid bits in addition to setting the owner and group will force the setuid & setgid bits to reset.  This change ensures that we set the mode after setting the owner & group.

* **PR** `#48431`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-05 17:23:00 UTC*

  * 2baa7f189f Merge pull request `#48431`_ from rallytime/merge-2018.3

  * 3e59dda0b1 Merge branch '2017.7' into '2018.3'

    * 422441505d Merge pull request `#48422`_ from rallytime/fix-48230

      * a6abf85621 Allow file.managed to work with uppercase source_hash in test=true mode

      * 4c691ac57a Add regression test for Issue `#48230`_

    * 83e387c951 Merge pull request `#48410`_ from dwoz/service_dead_test_fix

      * 5c0923448d Fix service dead test on windows

    * d3ba345da5 Merge pull request `#48413`_ from twangboy/fix_47811

      * c5aad04140 handle unc paths

    * 827ef2aac4 Merge pull request `#48416`_ from dwoz/service_integration_fix

      * c43f150dcd Fix service integration test (py3)

    * 10fe7d2b9b Merge pull request `#48385`_ from Ch3LL/1update_version_doc_2017.7

      * 3cf335b0b9 Update release versions for the 2017.7 branch

    * f8a9a037e6 Merge pull request `#48405`_ from Ch3LL/rm_inprog_2017.7

      * 03ed5167fa [2017.7] Remove In Progress Warning on 2017.7.7

    * 8ac867c168 Merge pull request `#48409`_ from dwoz/test_prepend_fix

      * 9c7085b70f Fix file state prepend test

    * 10e93bff7f Merge pull request `#48396`_ from dwoz/symlink_test_fix

      * d3456d31e6 Fix file.symlink state test for windows

* **PR** `#48310`_: (`mtorromeo`_) Backport ini_manage fixes to 2018.3
  @ *2018-07-05 16:27:19 UTC*

  * 432cbbb5ee Merge pull request `#48310`_ from mtorromeo/ini-manage-backports

  * 88f80fdf77 Fixed pylint useless-super-delegation warning.

  * e20f4cacd4 Uniformed reports between ini.options_absent and ini.options_present

  * 2c3ae0b6c9 pylint cosmetics.

  * 0c0d10d18f Fixes dry run false positive when option value is a number.

  * 70144bccbb Fixes dry run in ini_manage + Fixes related bug - when working with options which are not in section. + Fixes related tests + Fixes pylint warnings

* **ISSUE** `#48402`_: (`elsmorian`_) Running SaltStack master with no init system repeatedly logs "could not determine init system " (refs: `#48441`_)

* **PR** `#48441`_: (`terminalmage`_) Switch init system log message to debug
  @ *2018-07-05 14:43:25 UTC*

  * 84fd3d2784 Merge pull request `#48441`_ from terminalmage/issue48402

  * d758995763 Switch init system log message to debug

* **PR** `#48386`_: (`Ch3LL`_) Update release versions for the 2018.3 branch
  @ *2018-07-03 13:37:32 UTC*

  * 871c9e3b98 Merge pull request `#48386`_ from Ch3LL/1update_version_doc_2018.3

  * 84a1994110 Update release versions for the 2018.3 branch

* **PR** `#48404`_: (`Ch3LL`_) [2018.3] Remove In Progress Warning on 2017.7.7
  @ *2018-07-03 13:33:18 UTC*

  * ddb83ad4ce Merge pull request `#48404`_ from Ch3LL/rm_inprog_2018.3

  * ef288f2a74 [2018.3] Remove In Progress Warning on 2017.7.7

* **PR** `#48339`_: (`terminalmage`_) Backport tojson filter from `#48309`_ to 2018.3
  @ *2018-07-02 17:52:53 UTC*

  * **PR** `#48309`_: (`terminalmage`_) Drop support for Python 2 unicode string literals in YAML renderer (refs: `#48339`_)

  * 5b38019ca0 Merge pull request `#48339`_ from terminalmage/backport-tojson-filter

  * 4433bec891 Add release notes for tojson jinja filter

  * ac36998801 Tweak docs to reflect backported filter

  * c636b18cf0 Add unit test for tojson filter

  * e34e39f0e2 Document filter deprecation

  * b9a4f288b2 Deprecate json_encode_dict and json_encode_list jinja filters

  * 3896e3468c Use upstream tojson filter, if present

  * 1499c6abcf Implement tojson jinja filter for those using Jinja < 2.9

* **ISSUE** `#48274`_: (`ipmb`_) s3.get signature failure with + in the object name (refs: `#48328`_)

* **PR** `#48328`_: (`garethgreenaway`_) [2018.3] Fixes to utils/s3.py
  @ *2018-07-02 13:22:31 UTC*

  * 222c1d65db Merge pull request `#48328`_ from garethgreenaway/48274_s3_get_signature_fail

  * 22cafc8334 fixing lint issue

  * 131486203e Need to pass the URL path through quote to ensure any special characters are being quoted properly. if we include local_file for a PUT, read the file into data before passing it along to requests.requests.

* **PR** `#48358`_: (`Ch3LL`_) Fix corrupt public key with m2crypto python3
  @ *2018-07-02 13:10:32 UTC*

  * d3c658bdcf Merge pull request `#48358`_ from Ch3LL/m2crypto_fix

  * 8fdd34d430 m2crypto open file in rb mode for pub key

  * a964db4663 Fix corrupt public key with m2crypto python3

* **ISSUE** `#48367`_: (`asenci`_) salt.proxy.fx2: dictionary changed size during iteration (refs: `#48368`_)

* **ISSUE** `#46765`_: (`roskens`_) pkg.mod_repo fails with a python error when removing a dictionary key (refs: `#46776`_)

* **PR** `#48384`_: (`rallytime`_) Back-port `#48368`_ to 2018.3
  @ *2018-07-01 04:19:10 UTC*

  * **PR** `#48368`_: (`asenci`_) Fix issue `#48367`_ using the same approach as PR `#46776`_ (refs: `#48384`_)

  * **PR** `#46776`_: (`gtmanfred`_) fix shrinking list in for loop bug (refs: `#48368`_)

  * 2fd63d66dc Merge pull request `#48384`_ from rallytime/bp-48368

  * 430c462f34 Fix issue `#48367`_ using the same approach as PR `#46776`_

* **PR** `#48394`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-07-01 04:13:03 UTC*

  * 3b53e2d206 Merge pull request `#48394`_ from rallytime/merge-2018.3

  * 047f5b5f39 Update old utils paths to new utils paths

  * c4fd2a0930 Merge branch '2017.7' into '2018.3'

  * 7e25f26837 Merge pull request `#48362`_ from twangboy/fix_48276

    * 77629f640a Fix module unit tests

    * b5ca560b73 Fix lint error

    * 210e280ecf Use explicit parameter names

    * 776db98a5c Handle missing registry entries

  * 80222b6b7c Merge pull request `#48383`_ from rallytime/bp-48379

    * 9fc7815594 Clean up the workspaces at the end for every job

  * aa68aa774a Merge pull request `#48382`_ from rallytime/bp-48346

    * 6a70ba222e Use the right ssh key to destroy kitchen

  * 9519f640e7 Merge pull request `#48381`_ from rallytime/bp-48330

    * 6857bedcc2 Add warnings plugin to replace violations

  * 14db0aa35d Merge pull request `#48363`_ from dubb-b/2017.7

    * c0b962e28d Changing debug to info for logging

  * 5b29cd326f Merge pull request `#48352`_ from Ch3LL/wheel_doc

    * 89ada68165 Add missing key to accept_dict function in wheel docs

  * 02cf19ee3b Merge pull request `#48329`_ from rallytime/codeowners-roster-files

    * 5e56615e00 Trigger review requests for team-ssh for roster files

  * 53cf1794be Merge pull request `#48349`_ from ralex/fix-manjaro-service-behaviour

    * 6cafce547e Disable the `service` module on Manjaro since it is using systemd

  * 89dfcf3a4e Merge pull request `#48324`_ from Ch3LL/update_version_doc_2017.7

    * 47845ba810 Update release versions for the 2017.7 branch

  * ece4c30aac Merge pull request `#48331`_ from rallytime/bp-48215

    * 9d6ba3e247 Set jobs to pending when they come in

    * 727d2b4ffe Use proper creds with githubNotify

    * d355861c5c Test using different credentials

  * ab05e00d8c Merge pull request `#48332`_ from rallytime/bp-48321

    * d72af6ab4e Jenkins needs the / to get the directory

  * 21ed5b97ce Merge pull request `#48295`_ from rallytime/bp-48193

    * 352fe33fd6 Separate set_result() to a new line apart from Future() call

    * c0180ff33d Properly configure syndic in test case

    * d0a98534a9 Properly wait on returns in saltnado

  * 9aa4687ab9 Merge pull request `#48117`_ from twangboy/fix_48026

    * dd37f8fbc2 Disable services that are set to manual

  * caf630487c Merge pull request `#48207`_ from rallytime/bp-48189

    * e9d09e0375 Use old is_windows utils path on 2017.7

    * b965d6c9b3 If pip binary is passed to bin_env, use that pip binary

  * 06a927b2aa Merge pull request `#48293`_ from rallytime/bp-47453

    * e96ab6778e dont reset system locale when running rabbitmqctl commands

* **ISSUE** `#45939`_: (`andygabby`_) user.present with hash_password: True detects change on every state.apply/highstate (refs: `#47147`_)

* **PR** `#47147`_: (`eliasp`_) states.user.present: Make usage of `hash_password` idempotent
  @ *2018-06-30 13:29:27 UTC*

  * 9b364e25cf Merge pull request `#47147`_ from eliasp/2018.3-issue-45939-shadow-hash-salt

  * dd3be1d76e Add warning log message when using MD5 for hashing shadow passwords

  * 5451ab6b7a states.user.present: Make usage of `hash_password` idempotent

* **PR** `#48297`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-06-30 12:57:35 UTC*

  * 89857ea8b9 Merge pull request `#48297`_ from rallytime/merge-2018.3

  * 9498618418 Use `saltenv` opts instead of `environment`

  * 1c8bd35f28 Update old utils paths to use new utils paths

  * c7bb8a50b0 Merge branch '2017.7' into '2018.3'

    * 95ef006e00 Merge pull request `#48219`_ from zer0def/lxc-bootstrap-fixes

      * c77058560b Merge branch '2017.7' into lxc-bootstrap-fixes

      * d63cf3f072 Fixes another case of legacy configuration key usage warning getting in the way of changing container's state.

    * 3327181507 Merge pull request `#48234`_ from dwoz/thin_dir

      * 70c603451b Fix py2 thin dir issues

    * 83d7d286c4 Merge pull request `#48080`_ from lusche/2017.7

      * 917dc985fc `#47984`_ remove the line completly

      * ba12ee947b Merge branch '2017.7' of https://github.com/saltstack/salt into 2017.7

      * dfb13d5051 Bugfix `#47984`_ messed up cert serial

    * bccb4dcd46 Merge pull request `#48232`_ from gtmanfred/cloud

      * d108112e1a do not expand kwargs for cloud.action

    * 056f43f663 Merge pull request `#48238`_ from mirceaulinic/fix-sdb-cache

      * 51e5fbfa1d SDB cache module: AttributeError: 'Cache' object has no attribute 'set'

    * 731ec0a11a Merge pull request `#48037`_ from terminalmage/fix-custom-types-sync-docs

      * 052ae83c4b Update versionchanged

      * 8b1bd0eda2 Update test to reflect changed argument name

      * 5e75936198 Change 2018.3.2 to 2018.3.3

      * c53ad603fc Rename sync -> sync_mods per review suggestion

      * e4d67c5fd8 Update docs to include references to new "sync" argument

      * cb8e6f9fb8 Remove redundant mocking

      * bc3ad795e9 Add test for sync argument to state.sls

      * f81ccd1fdd Add sync option to state.apply/state.sls

      * 8289b07e24 Fix documentation on when custom types are synced

    * 0bae927048 Merge pull request `#48249`_ from rallytime/2017.7.7-release-notes-update

      * 36032c8ee7 Update release notes for 2017.7.7

    * 8e06471817 Merge pull request `#48242`_ from asnell/asnell-patch-1

      * f66bf60073 Add sample list data via command line pillar

* **PR** `#48364`_: (`dubb-b`_) Changing debug to info for logging
  @ *2018-06-28 20:48:24 UTC*

  * c5746deb5f Merge pull request `#48364`_ from dubb-b/2018.3

  * d8260b6628 Changing debug to info for logging

* **PR** `#48354`_: (`rallytime`_) [2018.3] Merge forward from 2018.3.2 to 2018.3
  @ *2018-06-28 20:26:31 UTC*

  * 0202493b60 Merge pull request `#48354`_ from rallytime/merge-2018.3.2-to-2018.3

  * fface7cc74 Merge branch '2018.3.2' into '2018.3'

* **PR** `#48347`_: (`dwoz`_) Fixes fileserver maintenance process on Windows
  @ *2018-06-28 13:17:42 UTC*

  * bbabbbf76b Merge pull request `#48347`_ from dwoz/sigfix

  * ccdff5029f Remove unneeded attribute

                    * e8362adf71 fopen does not support encoding

                    * 487161ba8f Fix file encoding on windows

                    * fc760685ee Fix multiple git module tests

* **PR** `#47975`_: (`terminalmage`_) Add a new git.cloned state
  @ *2018-06-27 20:53:42 UTC*

  * 67303d7901 Merge pull request `#47975`_ from terminalmage/issue47937

  * 34b24bb7fa Merge branch '2018.3' into issue47937

* **PR** `#48323`_: (`Ch3LL`_) Update release versions for the 2018.3 branch
  @ *2018-06-27 13:44:58 UTC*

  * 5b8d55428e Merge pull request `#48323`_ from Ch3LL/update_version_doc_2018.3

  * b4548aca56 Update release versions for the 2018.3 branch

* **PR** `#48326`_: (`Ch3LL`_) Remove In Progress Warning for 2018.3.2 Release
  @ *2018-06-27 13:43:16 UTC*

  * 7cf403e313 Merge pull request `#48326`_ from Ch3LL/rn_remove_in_prog

  * dfce1ad5ed Remove In Progress Warning for 2018.3.2 Release

* **PR** `#48301`_: (`terminalmage`_) Fix typos in new mock_open docs
  @ *2018-06-25 19:08:14 UTC*

  * 60ffad5126 Merge pull request `#48301`_ from terminalmage/docs

  * 6c33345f05 Fix typos in new mock_open docs

* **PR** `#48292`_: (`rallytime`_) Back-port `#48288`_ to 2018.3
  @ *2018-06-25 19:07:11 UTC*

  * **PR** `#48288`_: (`rmarchei`_) fix lsattr.get in file.check_perms (refs: `#48292`_)

  * 4760f87153 Merge pull request `#48292`_ from rallytime/bp-48288

  * d6620573bb fix lsattr.get in file.check_perms

* **PR** `#48296`_: (`rallytime`_) Back-port `#48258`_ to 2018.3
  @ *2018-06-25 19:04:41 UTC*

  * **PR** `#48258`_: (`nullify005`_) preserve tuples for ldap modification operations (refs: `#48296`_)

  * 27207fc510 Merge pull request `#48296`_ from rallytime/bp-48258

  * 8b7f36f264 preserve tuples for ldap modification operations

* **ISSUE** `#48204`_: (`zerthimon`_) State mysql_user.present Exception with mysql 8.0.11 (refs: `#48275`_, `#48228`_)

* **PR** `#48275`_: (`garethgreenaway`_) [2018.3] Follow up fix to MySQL user for password management
  @ *2018-06-25 13:23:35 UTC*

  * d5265da945 Merge pull request `#48275`_ from garethgreenaway/mysql_fix_followup

  * bb024b9115 Removing unnecessary code.

  * 8b542e1745 With MySQL versions 8.0.11 and beyond, since the PASSWORD function has been removed we need to hash the password string before comparing when checking if the user exists.

* **PR** `#48286`_: (`terminalmage`_) Don't load the grains again when printing them via salt-call -g
  @ *2018-06-25 13:19:18 UTC*

  * 1f306525a7 Merge pull request `#48286`_ from terminalmage/caller-print_grains

  * caa62c051f Don't load the grains again when printing them via salt-call -g

* **PR** `#48279`_: (`terminalmage`_) Add documentation/further enhancements to rewritten mock_open
  @ *2018-06-25 13:12:30 UTC*

  * 27a0e95174 Merge pull request `#48279`_ from terminalmage/mock_open-docs

  * 65c575ae9c Fix spelling error

  * 830a624ce8 Ignore IOError when tearing down filehandles not opened for reading

  * 3b6356f4b0 Raise TypeError when trying to read from filehandles not opened for reading

  * 09aae0c82b Add more examples and information on strict string types

  * 8c069d105d Add some mock_open docs

  * a13d1fe1a0 Update mock_open usage to reflect read_data type enforcement

  * 374a8ce31f Add more mock_open tests

  * 0f06adb008 Improve code-reuse in mock_open tests

  * 0e8c83bac6 2 MockFH enhancements:

* **ISSUE** `#48141`_: (`zerthimon`_) salt-api request causes exception (refs: `#48236`_)

* **PR** `#48236`_: (`garethgreenaway`_) [2018.3] Fix to cmd_batch
  @ *2018-06-25 12:58:49 UTC*

  * 6ee856631b Merge pull request `#48236`_ from garethgreenaway/48141_salt_api_local_batch

  * aea4f7ae14 Fixing test_local_batch

  * ce3e1eaf2c Removing sort.

  * 83accf3b20 Fixing test_local_batch

  * ff14b99752 Fixing a typo in the comment.

  * 85cef126e0 Adding note about why salt.utils.versions is being re-imported.  Adding a test for local_batch.

  * 808805fd3d Fixing cmd_batch to work correctly when called via salt-api.

* **ISSUE** `#48204`_: (`zerthimon`_) State mysql_user.present Exception with mysql 8.0.11 (refs: `#48275`_, `#48228`_)

* **PR** `#48228`_: (`garethgreenaway`_) [2018.3] Fixes to mysql module
  @ *2018-06-22 15:44:00 UTC*

  * 09b036c26e Merge pull request `#48228`_ from garethgreenaway/48204_mysql_user_password_exception

  * 1b2ffcef1d Updating the mysql module to not use the PASSWORD when MySQL is version 8.0.11 or higher, where the PASSWORD function has been removed.

* **PR** `#48252`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-06-22 15:13:42 UTC*

  * 67cb5563ef Merge pull request `#48252`_ from rallytime/merge-2018.3

  * 84ec655c24 Merge branch '2017.7' into '2018.3'

    * a172f9de84 Merge pull request `#48226`_ from terminalmage/fix-alias-docstring

      * fb237272f5 Don't display "None" in SaltInvocationError when Salt installed using -OO

      * 90c90f5d5c Fix docstring construction in alias_function when Salt installed using -OO

    * c6a0207cae Merge pull request `#48227`_ from Ch3LL/fix_win_tests

      * 236773e3e9 Skip new sha256 files on repo.saltstack.com/windows

    * 6929423528 Merge pull request `#48131`_ from bowmanjd-lms/fix-apk-python3

      * f5d2835299 Merge branch '2017.7' into fix-apk-python3

      * 022f9cba50 Fix py3-incompatible dict.keys()[x] call in apk.py

    * 868c17377f Merge pull request `#48185`_ from DSRCorporation/bugs/47901_future_done_exception

      * 5f63316311 Merge branch '2017.7' into bugs/47901_future_done_exception

      * 9f2dbf94cb Don't call .exception() on future unless it's done.

    * 80a3e37c2e Merge pull request `#48192`_ from twangboy/fix_pip_version_2017.7

      * 59ae2cc5fc Use --disable-pip-version-check for build_env_#.ps1

    * 12e2b8882a Merge pull request `#48201`_ from zer0def/lxc-bootstrap-fixes

      * 6f6d3d40d4 Take lxcpath into account when bootstrapping new containers. Version comparison fixes.

    * e079fce38d Merge pull request `#48190`_ from terminalmage/fix-vfstab-test

      * 8d70d14362 Fix mount.vfstab unit test

    * c8b9cec986 Merge pull request `#48115`_ from KaiSforza/pr-lint-2017

      * 494727ab39 Add docs, kitchen tests

      * 317023bb20 Move .jenkins to .ci for future

      * dedc313cee Make it parallel so we don't fail right away

      * cd13426726 Add a .jenkins file to run pylint

    * fc1752b721 Merge pull request `#48174`_ from terminalmage/docker-update-mine

      * 9af09e0127 Mock config.get due to changes in _refresh_mine_cache

      * c5802ad465 Fix the version number in versionadded

      * d403ae58d7 Add unit test for docker.update_mine

      * 44c275698a Actually it's more than just add/remove that updates the mine

      * 0cb6996b07 Add release notes mention of docker.update_mine config option

      * de05097b20 Add docs for new config option

      * 04c55a9178 Add note in mine.get_docker docstring about new config item

      * 4e456255c0 Allow mine update to be disabled using new config option

* **ISSUE** `#48029`_: (`vinian`_) syndic failed to auth when restart salt-master on syndic master (refs: `#48034`_)

* **PR** `#48034`_: (`vinian`_) restart salt-syndic when salt-master restart
  @ *2018-06-21 20:12:37 UTC*

  * 9f0bd90c5b Merge pull request `#48034`_ from vinian/restart-salt-syndic-when-salt-master-retart

  * f7652d8c8b restart salt-syndic when salt-master restart

* **PR** `#48250`_: (`rallytime`_) Update release notes for 2018.3.2
  @ *2018-06-21 18:30:21 UTC*

  * ab2ba942ad Merge pull request `#48250`_ from rallytime/2018.3.2-release-notes-update

  * 19c104b6cd Update release notes for 2018.3.2

* **PR** `#48166`_: (`terminalmage`_) Add trace logging and optimize file handling in grains.core.os_data
  @ *2018-06-21 18:02:33 UTC*

  * 51928ff050 Merge pull request `#48166`_ from terminalmage/salt-jenkins-1000

  * b73df0ab00 Change call_args to call.args to reflect changes to MockFH

  * 0c2cc07704 remove unused import

  * b8c0a55cf3 Add test for tell()

  * 1cbe89feee Implement tell() for filehandle iteration

  * efb8f49d42 Add tests for read_data being a list, and containing unicode or bytestrings

  * 38df912fa6 Operate on a copy of the read_data

  * 71eeae1240 Update mount module unit tests to reflect changes in mock_open

  * 16c414e120 Update nfs3 module tests to reflect changes in mock_open

  * b7eab25d6c Update grub_legacy module tests to reflect changes in mock_open

  * cc002b8fd7 Update new network unit test to reflect changes in mock_open

  * a8f11594f1 Update new core grains tests to reflect changes in mock_open

  * 84ce18d956 Update crypt unit tests to reflect changes in mock_open

  * 67c036dc2d Add MockCall to tests.support.mock to track calls

  * 2556a1e13d Remove unused import

  * fd9d700157 Add additional docs to MockOpen class

  * 6acb4c83ec Update newly added test to reflect renaming of handles attribute

  * 77e5288d42 Update fibre_channel grains tests to reflect changes in mock_open

  * ed40371a06 Update timezone module tests to reflect changes in mock_open

  * fc0aa9934f Track call_count in MockOpen

  * 2598d2453a Update snapper module tests to reflect changes in mock_open

  * 51b3faa7b4 Add support for passing multiple strings for a given match in read_data

  * 55487c175c Fix mock_open call to use new multifile syntax

  * 7f516ef73a Update puppet module tests to reflect changes in mock_open

  * 33a97c4ecc Update btmp beacon tests to reflect changes in mock_open

  * bc027cfa94 Update wtmp beacon tests to reflect changes in mock_open

  * f5823252bb Track call args/kwargs in MockFH

  * 335591ca90 Mock the seek function in MockFH

  * 7eb4b1ae1c Update cp.push test to reflect changes to mock_open

  * 2be19cfa89 Report correct location when reading using explicit size and EOF reached

  * 5ec95ba5ca On second thought, actually implement tell()

  * 19022eb9e5 Add tell mock to MockFH

  * 4b5a393445 Update junos tests to reflect changes to mock_open

  * 278a222b09 Update dnsutil tests to reflect changes to mock_open

  * 4e67955572 Replace the rest of mock_open with a class

  * 75307a47c5 Update linux_sysctl tests to reflect changes to mock_open

  * 05c68fd5d9 Use explicit config file and fix remaining mac_sysctl tests

  * 836fde9a30 Allow Python 2 to accept an exception as read_data

  * 543385fd02 Add writelines_calls property

  * 42fa842456 Make read funcs mocks so their calls can be tracked

  * 675f03c58f Update mac_sysctl tests to reflect new mock_open behavior

  * 3d2c41d395 Update file module tests to reflect new mock_open behavior

  * b9200dbc3e add a dict containing the handles to the mock_open return object

  * 852ba4b982 Add mocked close() function to MockFH

  * f6b46bc608 Remove unused import

  * 20f60a769b Add blank lines to appease linter

  * 48d7cfa6d3 Add multifile tests for mock_open

  * 1861e9b944 mock_open: rewrite multi-file support

  * 5e6b539770 Use function for empty string

  * cb2620ad2b Update core grains tests to reflect EAFP changes

  * 5d09b178d7 Separate mocked file contents per filename, not glob

  * 875102f538 Modify mock_open to support multiple file paths

  * 096ace74df Move lsb_release parsing into its own function

  * 6a0828beed Add unit tests for mock_open

  * 8ba6cadac7 More mock_open bugfixes

  * 329dea218e Add a bunch of logging for linux os_data core grains

  * 2c64b270df Add timestamp to the minion's log_fmt_console

* **PR** `#48216`_: (`Ch3LL`_) Fix UnicodeDecodeError when reading file to determine virtual grain (refs: `#48440`_)
  @ *2018-06-20 16:53:41 UTC*

  * 6072d1ef9c Merge pull request `#48216`_ from Ch3LL/grains_unicode

  * c4334f3f14 Fix UnicodeDecodeError when reading file to determine virtual grain

* **PR** `#48212`_: (`Ch3LL`_) Fix python3 ec2 salt-cloud TypeError when installing salt (refs: `#49041`_)
  @ *2018-06-20 16:00:21 UTC*

  * 77a75ebdcf Merge pull request `#48212`_ from Ch3LL/py3_ec2

  * b0d75f459a Fix python3 ec2 salt-cloud TypeError when installing salt

* **ISSUE** `#47984`_: (`jeduardo`_) x509 module/state writing wrong certificate serial number to CRL  (refs: `#47986`_, `#48080`_)

* **PR** `#48209`_: (`rallytime`_) Back-port `#47986`_ to 2018.3
  @ *2018-06-20 13:44:17 UTC*

  * **PR** `#48080`_: (`lusche`_) Bugfix `#47984`_ messed up cert serial (refs: `#48209`_)

  * **PR** `#47986`_: (`jeduardo`_) Fix serial number writing into CRL files with the x509 module (refs: `#48209`_)

  * de614d31f5 Merge pull request `#48209`_ from rallytime/bp-47986

  * f4b3bd5d2c Changed salt.utils.fopen to salt.utils.files.fopen

  * 8686872909 Fixed typos, removed repeated unit tests, and applied code fixes suggested by linter.

  * 382df48a72 Removed useless new line

  * 5aa99d14c4 Added unit tests for CRL creation and certificate revocation with CRL

  * cc12844922 Fixed a problem where the OpenSSL bindings refuse to consume unicode strings.

  * 399cf08860 Stopped converting the certificate hexadecimal serial number to an integer in order to avoid breaking CRLs.

* **PR** `#48210`_: (`rallytime`_) [2018.3] Merge forward from 2018.3.1 to 2018.3
  @ *2018-06-20 13:43:19 UTC*

  * 1f88df6e89 Merge pull request `#48210`_ from rallytime/merge-2018.3

  * dae65da256 Merge branch '2018.3.1' into '2018.3'

* **PR** `#48186`_: (`rallytime`_) Add autodoc module for saltcheck.py
  @ *2018-06-19 19:03:55 UTC*

  * 5b4897f050 Merge pull request `#48186`_ from rallytime/saltcheck-docs

  * 314fc2d889 Clean up some doc references

  * da7603d879 Add autodoc module for saltcheck.py

* **PR** `#48191`_: (`twangboy`_) Use the --disable-pip-version-check option
  @ *2018-06-19 18:13:44 UTC*

  * 7274a33c80 Merge pull request `#48191`_ from twangboy/fix_pip_check

  * 5c00fce6bf Use the --disable-pip-version-check option

* **ISSUE** `#48122`_: (`pasmon`_) Salt minion 2017.7.6 disregards "bin_env" in pip state (refs: `#48189`_)

* **PR** `#48189`_: (`gtmanfred`_) If pip binary is passed to bin_env, use that pip binary (refs: `#48207`_)
  @ *2018-06-19 18:08:13 UTC*

  * 96f79b0674 Merge pull request `#48189`_ from gtmanfred/pip

  * 96c59f3d93 If pip binary is passed to bin_env, use that pip binary

* **PR** `#48165`_: (`terminalmage`_) Fix regression with top_file_merging_strategy=same
  @ *2018-06-19 18:03:07 UTC*

  * 71e385501b Merge pull request `#48165`_ from terminalmage/issue48144

  * 92ac2a2d6a Remove unused imports

  * 15a44d5dd4 Remove redundant top file merging tests

  * 12100d9bd3 Add more top file merging tests

  * 0ed686cb3f Add unit test for show_top with "same" merging strategy

  * 35e5492fb7 Revert 7058f10 / 3df6fa7

* **ISSUE** `#46806`_: (`ezh`_) Lack of debug messages on authentication fail. (refs: `#46807`_, `#48179`_)

* **PR** `#48179`_: (`ezh`_) 2018.3 auth
  @ *2018-06-19 14:16:40 UTC*

  * **PR** `#46807`_: (`ezh`_) Reduce initial authentication setup complexity (refs: `#48179`_)

  * 2a8e1c6539 Merge pull request `#48179`_ from ezh/2018.3-auth

  * 9ed2d2ec55 Fix integration.shell.test_key and integration.shell.test_runner

  * 26a6f79730 Fix integration tests test_list_acc_wrong_eauth, test_salt_run_with_wrong_eauth

  * b84c4321c4 Add more verbose debug messages for auth subsystem

* **PR** `#48188`_: (`gtmanfred`_) allow virtual aliases to be used for the driver name
  @ *2018-06-18 21:49:16 UTC*

  * 0231008cf8 Merge pull request `#48188`_ from gtmanfred/2018.3

  * 45249d3e10 allow virtual aliases to be used for the driver name

* **PR** `#48116`_: (`KaiSforza`_) Add jenkinsfiles to define tests in 2018
  @ *2018-06-18 21:27:10 UTC*

  * 0f95238dca Merge pull request `#48116`_ from KaiSforza/pr-lint-2018

  * f158bed5bd Add docs, kitchen tests

  * 904a70c187 Move .jenkins to .ci for future

  * 365fa0e51f Make it parallel so we don't fail right away

  * e594979745 Add a .jenkins file to run pylint

* **ISSUE** `#48146`_: (`rmarchei`_) mysql_query.run: exception on 2018.3 (refs: `#48164`_)

* **PR** `#48164`_: (`garethgreenaway`_) [2018.3] Fixes to mysql state
  @ *2018-06-18 13:10:20 UTC*

  * 60c9490bdc Merge pull request `#48164`_ from garethgreenaway/48146_mysql_output_to_file

  * a040643a82 Accounting for certain situations when the query result is not a string, but actually a dictionary.

* **ISSUE** `#48113`_: (`gaetanquentin`_) state file.line has error and  erase file content completly, while with mode  test=true it is ok (refs: `#48156`_)

* **PR** `#48156`_: (`garethgreenaway`_) [2018.3] Unicode fixes for file.line
  @ *2018-06-17 19:34:08 UTC*

  * 85ebcbd3f2 Merge pull request `#48156`_ from garethgreenaway/48113_ensure_writing_strings_with_file_dot_line

  * 5a9ef0d1ae Unless we're using py2 and Windows, ensure we're writing out a string when using file.line.

* **PR** `#48161`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-06-17 19:33:29 UTC*

  * 33400e72db Merge pull request `#48161`_ from rallytime/merge-2018.3

  * 0733fa1b02 Update utils path for which function to new path

  * 398cc78224 Merge branch '2017.7' into '2018.3'

  * df2a156338 Merge pull request `#48061`_ from garethgreenaway/port_47049_2017_7

    * 7c472fed51 Fixing failing test_set_hwclock_aix test.

    * ccb0acc958 Porting `#47049`_ to 2017.7.

  * 5ec3cf2dd4 Merge pull request `#48143`_ from Ch3LL/fix_long_job

    * 48b5d2e9d3 Add timeout argument to run_salt for ShellCase

  * e1e566d1f8 Merge pull request `#48135`_ from rallytime/release-notes-2017.7

    * 7a97f157b3 Add missing `v` for tag reference

    * 2f2b69ed37 Add "in progress" notation to 2017.7.7 release notes

    * 06a1151a63 Add release notes file for 2017.7.7

    * 885b2862ce Move 2017.7.7 release notes to 2017.7.8

  * ac9dabbfaa Merge pull request `#48105`_ from rallytime/merge-2017.7

    * cdb45874de Merge branch '2017.7.6' into '2017.7'

      * 16916d6bd2 Merge pull request `#47880`_ from gtmanfred/2017.7.6

        * 987ae6358b quote python_version in requirements.txt

      * 27670168ea Merge pull request `#47875`_ from rallytime/release-notes-dot-six

        * 58dee4c829 Remove sentence about the release being in progress

        * b3dcb7330e Remove "in progress" too

        * 99e1df7823 Update 2017.7.6 release notes: remove "unreleased" text

      * 1f0bada07c Merge pull request `#47873`_ from gtmanfred/2017.7.6

        * a1c1b5b5cf allow tornado 5.0 to be installed only for python2

  * 2da56a69d9 Merge pull request `#48101`_ from rallytime/update-doc-refs-2017.7

    * 7ba6f5fb36 Update 2017.7.7 reference to 2017.7.8

  * 5a0e3d46e7 Merge pull request `#48091`_ from terminalmage/fix-file_roots-monkeypatching

    * 6fe711ad76 Reverse monkeypatching after test_symlink_list finishes

  * 053b019a8f Merge pull request `#48088`_ from rallytime/update_version_doc_2017.7

    * 1b8d1c936b Remove "in progress" info for 2017.7.6 release notes

    * 9a0f4d190a Update release versions for the 2017.7 branch

  * d6d2c5ee18 Merge pull request `#48075`_ from garethgreenaway/48038_jobs_are_not_deduping_minion_side

    * c537b3275b Ensure that the shared list of jids is passed when creating the Minion.  Fixes an issue when minions are pointed at multiple syndics.

  * aa33cc0b0c Merge pull request `#48071`_ from terminalmage/gitfs-docs

    * 24545204b3 Fix inaccurate gitfs_saltenv example in GitFS Walkthrough

  * fb4ceacb88 Merge pull request `#48053`_ from rallytime/bp-48040

    * 265b22b194 states/github.py fix for incorrect positional argument

  * f37dcaac6d Merge pull request `#48024`_ from gtmanfred/2017.7

    * 56b074ab27 allow specifying a different state to run on converge

    * cc9c4b4d5a add pytest coverage and xml junits

* **ISSUE** `#48145`_: (`max-arnold`_) Failed to load ext_pillar saltclass: can only assign an iterable (refs: `#48155`_)

* **PR** `#48155`_: (`max-arnold`_) Do not fail on empty saltclass classes (fix for `#48145`_)
  @ *2018-06-15 20:21:28 UTC*

  * 9aa9a83b10 Merge pull request `#48155`_ from max-arnold/2018.3

  * 63ab02c648 Do not fail on empty saltclass classes declaration `#48145`_

  * 3d4fcbe3aa Add test for issue `#48145`_

* **PR** `#48104`_: (`twangboy`_) Fix `unit.modules.test_win_status`
  @ *2018-06-15 17:05:34 UTC*

  * 152c09cc0c Merge pull request `#48104`_ from twangboy/fix_test_win_status

  * 1ec3f436ee Fix test_error_logged_if_process_get_owner_fails

* **PR** `#48147`_: (`brejoc`_) Fix for sorting of multi-version packages
  @ *2018-06-15 17:03:18 UTC*

  * 8cf03110d4 Merge pull request `#48147`_ from brejoc/2018.3-multi-version-fix

  * 90ed25447d Swtiching to salt.utils.versions like linter suggested

  * ed09574073 Fix for sorting of multi-version packages (bsc#1097174 and bsc#1097413)

* **PR** `#47956`_: (`dmurphy18`_) Improved support for mount on AIX
  @ *2018-06-15 13:40:01 UTC*

  * 2edc5f5442 Merge pull request `#47956`_ from dmurphy18/aix_mount_support

  * f2a3e321db Improved support for mount on AIX

* **ISSUE** `#48012`_: (`Timandes`_) Found UnicodeDecodeError when trying to start Salt Master (refs: `#48081`_)

* **PR** `#48081`_: (`terminalmage`_) Fix UnicodeDecodeError when parsing hosts file with non-ascii
  @ *2018-06-15 12:41:13 UTC*

  * c05c176782 Merge pull request `#48081`_ from terminalmage/issue48012

  * 8d2fb0bf25 Fix cp.push test

  * e230a7223f Fix definition of test data for wtmp/btmp beacon tests

  * 82874a8c10 Import six like we do everywhere else

  * 54f9a2ab54 Remove unused import

  * 767cc7e87f fix tabs

  * db19636f56 Get rid of additional newline append

  * 7427e192ba Fix more crappy mocking

  * 4eaa5789ce Fix crappy mocking

  * 248467edac Add regression test for _generate_minion_id()

  * 5e62d6d45f Fix UnicodeDecodeError when parsing hosts file with non-ascii

  * e6a4744f85 Use errno instead of hard-coding error 2

  * ff63f36932 Fixes / enhancements for mock_open

* **PR** `#48133`_: (`rallytime`_) Updates the 2018.3.2 and 2018.3.3 release notes files
  @ *2018-06-14 21:21:15 UTC*

  * **PR** `#48129`_: (`rallytime`_) Add release notes for 2018.3.2 (refs: `#48133`_)

  * 5d92e2763a Merge pull request `#48133`_ from rallytime/release-notes-2018.3

  * afe1e91972 Add "in progress" notation to 2018.3.2 release notes

  * 3e4272ac09 Add release notes for 2018.3.2

  * 88c584cb0d Move 2018.3.2 release notes to 2018.3.3

* **PR** `#48103`_: (`terminalmage`_) Fix for gitfs base env being pinned to commit ID
  @ *2018-06-14 16:29:24 UTC*

  * 0e3f846836 Merge pull request `#48103`_ from terminalmage/gitfs-base-pinned-to-commit

  * 31ab2fe8de Fix for gitfs base env being pinned to commit ID

* **PR** `#48077`_: (`twangboy`_) Fix issue with `salt.utils.parsers` on Windows
  @ *2018-06-14 16:22:57 UTC*

  * 4b6f1c7f75 Merge pull request `#48077`_ from twangboy/fix_parsers

  * 0f7d7691a2 Call logger in each case

  * 0e99dd741c Fix logic for non-root

  * 2d2534a688 Fix parsers for Windows, fix tests

* **PR** `#48096`_: (`twangboy`_) Fix `unit.utils.test_which` on Windows
  @ *2018-06-14 13:15:14 UTC*

  * 80332b32a7 Merge pull request `#48096`_ from twangboy/fix_test_which

  * d26fc56f13 Use os.sep for paths

* **PR** `#48102`_: (`rallytime`_) [2018.3] Update 2018.3.2 references to 2018.3.3
  @ *2018-06-14 13:14:26 UTC*

  * 66b2200913 Merge pull request `#48102`_ from rallytime/update-doc-refs-2018.3

  * 1c9bcce3d8 Update 2018.3.2 references to 2018.3.3

* **PR** `#48109`_: (`rallytime`_) Back-port `#47851`_ to 2018.3
  @ *2018-06-14 13:09:04 UTC*

  * **PR** `#47851`_: (`rares-pop`_) Fixup! add master.py:FileserverUpdate \*\*kwargs (refs: `#48109`_)

  * 2902ee0b14 Merge pull request `#48109`_ from rallytime/bp-47851

  * e9dc30bf8e Fixup! add master.py:FileserverUpdate \*\*kwargs

* **ISSUE** `#47925`_: (`JonGriggs`_) GitFS looking for files in the master branch only (refs: `#47943`_)

* **PR** `#47943`_: (`terminalmage`_) Make sure we set the effective environment when lock_saltenv is True
  @ *2018-06-13 20:02:00 UTC*

  * 2529292568 Merge pull request `#47943`_ from terminalmage/issue47925

  * 534e1a7100 Merge branch '2018.3' into issue47925

* **PR** `#48089`_: (`rallytime`_) Update release versions for the 2018.3 branch
  @ *2018-06-13 14:03:44 UTC*

  * 9e1d0040e4 Merge pull request `#48089`_ from rallytime/update_version_doc_2018.3

  * fad6a0991e Remove "in progress" info for 2018.3.1 release notes

  * a3b3b0a0e1 Remove "in progress" info for 2017.7.6 release notes

  * f9be1b9125 Update release versions for the 2018.3 branch

* **PR** `#48054`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-06-13 12:58:46 UTC*

  * b10b7355a0 Merge pull request `#48054`_ from rallytime/merge-2018.3

  * 508d70fabf Update old utils paths to use new paths

  * 3d2ea16c3a Merge branch '2017.7' into '2018.3'

    * ffee3576ec Merge pull request `#48044`_ from twangboy/wua_add_fail_code

      * d41d0c25eb Add faile code for WinHTTP send/receive error

    * 871a910fcb Merge pull request `#48009`_ from dwoz/winswarmfix

      * 5027c7bb84 minionswarm runs on windows

    * 0dcaead36d Merge pull request `#47968`_ from gtmanfred/2017.7

      * ae1b0d28bb pass LANG and HOME into tox commands

      * 8d15b93d00 remove tox virtualenvs from doc tests

      * e1872e2036 simplify tox.ini

      * 81bd01f5af add tests.txt for running tests with tox requirements

      * 556a2067fc fix masterapi test to use testing directory for configs

      * 5a41f484ef add EXPENSIVE_TESTS

      * 055cd5a6ba set DESTRUCTIVE_TESTS environment variable for pytest

    * 42dd6b83eb Merge pull request `#47978`_ from twangboy/fix_test_pkg

      * 8bb36b3a4b Add try/finally, fix typo in 7zip def file

    * a67b21ef3d Merge pull request `#47959`_ from twangboy/fix_test_service

      * 0cd47aa81e Remove unused import

      * d4b42540e3 Fix failing test when service doesn't exist

    * b81d482067 Merge pull request `#47983`_ from garethgreenaway/backport_47843_2017_7

      * 7b7fb1f5d5 Adding missing test sls file.

      * 54e51bc627 Backporting `#47843`_ to 2017.7, updating test for 2017.7.

    * d56ddad22c Merge pull request `#47533`_ from twangboy/fix_47178

      * 24717cbc21 Change version added to 2017.7.7

      * 0592f1bac2 Fix issues with functions that user makedirs on Windows

    * 5c56b8c755 Merge pull request `#47827`_ from twangboy/fix_47791

      * fbbd91f09e Add more descriptive debug message

      * 365f81651b Fix deprecated exception handling

      * 8dd6710b93 Use local instead of network

      * 980d99d74b Fix issue when archive is on mapped drive

* **PR** `#48060`_: (`gtmanfred`_) mark test as expensive
  @ *2018-06-13 12:58:21 UTC*

  * c83818e4f9 Merge pull request `#48060`_ from gtmanfred/2018.3

  * 914935c4d4 Merge branch '2018.3' into 2018.3

* **PR** `#48057`_: (`terminalmage`_) Fix link without target in 2018.3.0 release notes
  @ *2018-06-11 18:50:17 UTC*

  * a4eb41623d Merge pull request `#48057`_ from terminalmage/docs-2018.3

  * 20f71ff6f6 Fix link without target in 2018.3.0 release notes

  * d8c035e5e5 mark test as expensive

* **PR** `#48042`_: (`terminalmage`_) Switch to trace level logging for further test failure troubleshooting
  @ *2018-06-11 14:03:48 UTC*

  * 0f9a3122df Merge pull request `#48042`_ from terminalmage/salt-jenkins-1000

  * b33a0b5eaa Switch to trace level logging for further test failure troubleshooting

* **PR** `#48041`_: (`terminalmage`_) salt.utils.hashutils: Only decode to utf-8 on Windows
  @ *2018-06-11 13:31:41 UTC*

  * 6c5389189a Merge pull request `#48041`_ from terminalmage/hashutils-fix-windows

  * 58c7cd33d7 salt.utils.hashutils: Only decode to utf-8 on Windows

* **PR** `#48014`_: (`cro`_) Find job pause
  @ *2018-06-08 13:48:45 UTC*

  * dcae209951 Merge pull request `#48014`_ from cro/find_job_pause

  * 440aa67c4f Lint: Add blank line

  * 7b0e99a511 One more case where returner doesn't respond

  * 5abeedf882 Catch two cases when a returner is not able to be contacted--these would throw a stacktrace.

* **PR** `#47915`_: (`garethgreenaway`_) [2018.3] state runner pause resume kill
  @ *2018-06-07 16:08:30 UTC*

  * ea85f882bc Merge pull request `#47915`_ from garethgreenaway/state_runner_pause_resume_kill

  * 2ecbe9c034 fixing typo in alias_function call.

  * 4377e0cc08 Some fixes to the set_pause and rm_pause function in the state runner, renaming to in line with the functions in the state module.  Including aliases to previous names for back-ward compatibility.  Including a soft_kill function to kill running orchestration states.  A new test to test soft_kill functionality.

* **PR** `#48002`_: (`rallytime`_) Back-port `#47923`_ to 2018.3
  @ *2018-06-07 15:25:39 UTC*

  * **PR** `#47923`_: (`isbm`_) Prevent crash if files in file.recurse (refs: `#48002`_)

  * 5c11fcde60 Merge pull request `#48002`_ from rallytime/bp-47923

  * 9465e5f1e9 Use to_unicode from stringutils avoid deprecation warning

  * 73d33cbfc3 Prevent crash if files in file.recurse

* **PR** `#48003`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-06-07 15:25:19 UTC*

  * 3d0a087c71 Merge pull request `#48003`_ from rallytime/merge-2018.3

  * a6533a9332 Merge branch '2017.7' into '2018.3'

    * 998a1c13d5 Merge pull request `#47966`_ from mbunkus/fix-postfix-prefix-free-key-names-assumption

      * 0ae402d1b5 Fix postfix.set_main's assumption of prefix-free key names

    * df50ce7b1b Merge pull request `#47824`_ from twangboy/fix_setup.py

      * 4538b3abb3 Remove 'len-as-condition' disablement

      * d4efcc3c8b Skip lint errors

      * 1b3977f8d4 Remove m2crypto download for Windows

    * 3e91a31134 Merge pull request `#47922`_ from damon-atkins/2017.7_win_pkg_keys_fix

      * 7129203b1b Merge branch '2017.7' into 2017.7_win_pkg_keys_fix

    * 8008fca2f6 Merge pull request `#47933`_ from terminalmage/add-pillar.get-docs

      * 4eb022b675 Clarify pillar.get docs

    * ab565bfaa3 Merge pull request `#47944`_ from terminalmage/fix-git.detached-docs

      * 1d082b4389 Replace use of deprecated argument name in git.detached docstring

      * 6253793cb6 Merge branch '2017.7' into 2017.7_win_pkg_keys_fix

      * 4ce0fe6546 win_pkg under py3 keys returns a view instead of a list, wrap keys in list()

* **PR** `#48022`_: (`morganwillcock`_) win_wua state: fix function name in examples
  @ *2018-06-07 15:03:52 UTC*

  * 0a05212f60 Merge pull request `#48022`_ from morganwillcock/patch-1

  * 443f4d6f21 win_wua state: fix function name in examples

* **ISSUE** `#47546`_: (`ender8282`_) archive.extracted fails when archive includes files with non-ascii names with 2018.3.0 (refs: `#48015`_, `#47572`_)

* **PR** `#48015`_: (`garethgreenaway`_) [2018.3] more unicode nonsense in archive module
  @ *2018-06-07 14:44:55 UTC*

  * 406efb161e Merge pull request `#48015`_ from garethgreenaway/47546_more_unicode_nonsense

  * f457f9cb84 Adding a test to ensure archive.list returns the right results when a tar file contains a file with unicode in it's name.

  * 9af49bc595 Ensure member names are decoded before adding to various lists.

* **ISSUE** `#47955`_: (`frogunder`_) 2018.3.1 Creating Windows machine in Amazon using salt-cloud fails. (refs: `#47989`_)

* **PR** `#47989`_: (`dwoz`_) Properly decode password from aws using m2crypto
  @ *2018-06-06 20:44:28 UTC*

  * 1ce7d6c38a Merge pull request `#47989`_ from dwoz/awscloud

  * 23ab2727be Fix linter errors

  * 6c8daa2b85 Properly decode password from aws using m2crypto

* **PR** `#47976`_: (`terminalmage`_) Capture and log output of processes that timed out and were killed
  @ *2018-06-06 19:17:08 UTC*

  * 76068c83f5 Merge pull request `#47976`_ from terminalmage/salt-jenkins-1000

  * 41e5a75027 Add catch_timeout to run_script

  * 551ada8e4d Capture and log output of processes that timed out and were killed

* **PR** `#47990`_: (`terminalmage`_) Docs fixes in 2018.3 release branch
  @ *2018-06-06 17:15:17 UTC*

  * f12a52736e Merge pull request `#47990`_ from terminalmage/2018.3-docs

  * f89d2ccd30 Clean up Sphinx warnings

  * f5fc936865 Add clarifying comment so that we don't break this

  * 94849780ac fix docs build error due to IndexError

* **PR** `#47982`_: (`twangboy`_) Fix `unit.modules.test_win_dns_client` tests
  @ *2018-06-06 15:02:10 UTC*

  * 9d56af3cad Merge pull request `#47982`_ from twangboy/fix_test_win_dns_client

  * 2dcdf6788c Force string to ModuleType

* **PR** `#47985`_: (`twangboy`_) Fix `unit.states.test_reg` test failure
  @ *2018-06-06 14:56:03 UTC*

  * 1b4c72345b Merge pull request `#47985`_ from twangboy/fix_test_reg

  * 4ce551811f Remove the unnecessary `to_unicode` stuff

  * 863ded39fa Mock `reg.cast_vdata`

* **ISSUE** `#47236`_: (`MorphBonehunter`_) x509.private_key_managed broken after upgrade to 2018.3.0 (refs: `#47957`_)

* **PR** `#47957`_: (`garethgreenaway`_) [2018.8] Ensure x509 passphrase is a string
  @ *2018-06-05 13:27:33 UTC*

  * 84100570f7 Merge pull request `#47957`_ from garethgreenaway/47236_ensure_passphrase_is_a_string

  * 99bad3cca6 removing unnecessary change

  * e22df8473d Ensuring that when a passphrase is passed in, it is returned as a string from the passphrase callback.

        * d0cf06a24d Make sure we set the effective environment when lock_saltenv is True

            * 8da6ce45dc Finish the docstring for git.cloned state

            * 4a8260a5e5 Add tests for git.cloned state

            * 311179da05 Add git.cloned state

* **PR** `#47926`_: (`dmurphy18`_) Backport of PR 47808 to 2018.3, improved grains support for AIX
  @ *2018-06-04 19:31:24 UTC*

  * **PR** `#47808`_: (`dmurphy18`_) Updated AIX support for grains reported (refs: `#47926`_)

  * c355da9e0d Merge pull request `#47926`_ from dmurphy18/backport_pr47808

  * ac15d2093a Backport of PR 47808 to 2018.3, improved grains support for AIX

* **PR** `#47927`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-06-04 18:55:12 UTC*

  * a46e42ab11 Merge pull request `#47927`_ from rallytime/merge-2018.3

  * 5baab66f4b Lint: Whitespace fix

  * 7e1d278d19 Update old utils paths to use new utils paths

  * 3273bbdab7 Merge branch '2017.7' into '2018.3'

    * a2b588299b Merge pull request `#47860`_ from terminalmage/state-writing-docs

      * 8cb33d3dec Quiet the linter

      * af51e16f23 Use more elegant RST syntax

      * 91cd57d1e0 Update mocking to reflect changes in service module

      * b9ace5a859 Fix crappy mocking

      * bc9e3acef3 Lint fixes

      * d37f7e4f04 Add 2017.7.6 release notes

      * 9dddeeefab Improve documentation on syncing states

      * f465fa3ca7 Add best practices docs for writing states

      * 93ee5ee2b0 Fix all Sphinx warnings

      * 64b9b4d0b8 Clarify that name would override the id declaration

    * d2f3377b5b Merge pull request `#47877`_ from dwoz/sleep_audit

      * ebc7cde9cb Revert job chunk wait time change

    * 735e92093e Merge pull request `#47917`_ from dwoz/winsuite

      * 118601ebd6 Fix windows tests suite breakage

    * 63efb76d51 Merge pull request `#47822`_ from Ch3LL/win_user_test

      * 3a691b405f add user_home path for both windows and linux

      * 788abf771e Add user state integration tests to windows

    * b9da4f1221 Merge pull request `#47876`_ from doesitblend/add-file-read-windows

      * 3f7e7ec327 Add file.read function to Windows module

    * cbe2ecfae8 Merge pull request `#47882`_ from frogunder/45013

      * 38d114a2d2 add whoami test

* **PR** `#47931`_: (`rallytime`_) Back-port `#47913`_ to 2018.3
  @ *2018-06-04 14:39:16 UTC*

  * **PR** `#47913`_: (`rares-pop`_) Fixup! beacons/avahi_announce.py finding grains (refs: `#47931`_)

  * 4db1f8c603 Merge pull request `#47931`_ from rallytime/bp-47913

  * c51e732f4d Fixup! beacons/avahi_announce.py finding grains

* **PR** `#47930`_: (`rallytime`_) Back-port `#47725`_ to 2018.3
  @ *2018-06-04 14:38:58 UTC*

  * **PR** `#47725`_: (`bbczeuz`_) network_settings beacon: Update example to follow new cfg convention (refs: `#47930`_)

  * d05a6c70d3 Merge pull request `#47930`_ from rallytime/bp-47725

  * 5c666409f3 Spelling fix

  * cfe0a5bb42 network_settings: Fix doc using new list/dict syntax

* **PR** `#47557`_: (`L4rS6`_) fix broken rabbitmq list policies in rabbitmq version 3.7
  @ *2018-06-04 13:25:07 UTC*

  * 484d83014b Merge pull request `#47557`_ from L4rS6/fix-broken-rabbitmq-list-policies

  * 6d7ef27557 Merge branch '2018.3' into fix-broken-rabbitmq-list-policies

  * e043ea2833 refactored list_policies code and added more tests

  * eea81feb7b fix broken rabbitmq list policies in rabbitmq version 3.7

* **PR** `#47949`_: (`terminalmage`_) Continued troubleshooting on salt-jenkins 1000
  @ *2018-06-04 13:17:14 UTC*

  * 866a2fbf5e Merge pull request `#47949`_ from terminalmage/salt-jenkins-1000

  * 9c369c6aa8 Remove temp logging from test

  * af02d5ba7b Add result logging to run_script, make returns DRY

* **PR** `#47941`_: (`terminalmage`_) Update test logging for salt-jenkins
  @ *2018-06-03 02:40:56 UTC*

  * 0b85d1273f Merge pull request `#47941`_ from terminalmage/salt-jenkins-1000

  * fb66368af9 Update test logging for salt-jenkins 1000

* **PR** `#47924`_: (`Ch3LL`_) Catch all exceptions in git import for salt.utils.gitfs
  @ *2018-06-01 21:06:58 UTC*

  * 58b5f2b4dd Merge pull request `#47924`_ from Ch3LL/mac_gitpy

  * 75c51ad69b Catch all exceptions in git import for salt.utils.gitfs

* **ISSUE** `#47269`_: (`isdig`_) Reopen Windows Minion That Has IAM Role Cannot Access to S3 (refs: `#47879`_)

* **PR** `#47879`_: (`dwoz`_) Fix ami role usage warts `#47269`_
  @ *2018-06-01 14:11:55 UTC*

  * b88ec5258d Merge pull request `#47879`_ from dwoz/ami_role_fix

  * 3884c2cf5f Fix ami role usage warts `#47269`_

* **PR** `#47788`_: (`twangboy`_) Use pytz to calculate timezones
  @ *2018-05-31 18:33:20 UTC*

  * b09596982b Merge pull request `#47788`_ from twangboy/fix_47559

  * 0d229c6182 Merge branch '2018.3' into fix_47559

  * 9e612ec9e7 Fix markup in release notes

  * 60499d18f0 Skip test if pytz not present

  * 72cc361c7b Move pytz to 3rd party import, add to __virtual__

  * b8a6488688 Update __virtual__ function

  * 9923176b68 Use __utils__, fix unit tests

  * 73e033f555 Return offset in the same format as Unix

  * 5656183c5e Add timezone.list, add 2018.3.2 release notes

  * 986f6c9b2a Use pytz to calculate timezones

* **PR** `#47899`_: (`terminalmage`_) salt-jenkins issue 1000
  @ *2018-05-31 18:24:49 UTC*

  * ae73cb3947 Merge pull request `#47899`_ from terminalmage/salt-jenkins-1000

  * 25afc932f7 WIP salt-jenkins issue 1000

* **PR** `#47753`_: (`Ch3LL`_) Add stderr launchctl helper class and fix service mac tests
  @ *2018-05-31 18:16:57 UTC*

  * 8f78e3aef6 Merge pull request `#47753`_ from Ch3LL/service_mac

  * 185c9e9ae2 only stop service if its running

  * e15e674955 Add stderr launchctl helper class and fix service mac tests

* **PR** `#47908`_: (`meaksh`_) Align SUSE salt-master.service 'LimitNOFILES' limit with upstream Salt
  @ *2018-05-31 18:13:27 UTC*

  * 828bf39695 Merge pull request `#47908`_ from meaksh/2018.3-align-suse-salt-master-service

  * efe308013a Align SUSE salt-master.service 'LimitNOFILES' limit with upstream Salt

* **PR** `#47868`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-05-30 21:20:38 UTC*

  * b4bac9b41b Merge pull request `#47868`_ from rallytime/merge-2018.3

  * e5d386e91c Update solaris core grains test

  * 267f09c1a0 Lint: Remove unused import

  * 120ee16b70 Replace old utils paths with new utils paths

  * dc32b67c03 Merge branch '2017.7' into '2018.3'

    * 4b28e510f1 Merge pull request `#47853`_ from dwoz/py3-cloud-test

      * c2f8aef7c5 Fix for py3 ec2 cloud tests

    * 215efa6b73 Merge pull request `#47847`_ from garethgreenaway/47833_reactor_runner_documentation

      * 03676712de Adding some addition documentation to the reactor runner indicating that the reactor system must be active prior to using it.

    * 0bf651b470 Merge pull request `#47846`_ from Ch3LL/p_refresh_test

      * 019edad8e4 Fix flaky refresh pillar integration test

    * 799fce979d Merge pull request `#47552`_ from twangboy/fix_46981

      * cffc9b7806 Merge branch '2017.7' into fix_46981

      * 81308a4a44 Add release notes for 2017.7.7

      * 008af0ac6b Fix unit tests

      * 87097eefb6 Add comments about how get is returning data

      * f1f1bfc5c1 Show GPO settings, raise error if trying to set gpo managed settings

    * ffc2ebc373 Merge pull request `#47691`_ from lomeroe/solaris_product_grains

      * 6889befc6b Merge branch '2017.7' into solaris_product_grains

      * 49053bc106 lint fix

      * 6f185c9179 another lint fix

      * dbffba6876 fix tons of errors in my tests

      * 8c9355d34c Lint fix

      * b29ec75da7 Update regexes in core grains for detecting the 'product' grain on Solaris Sparc systems.  Additionally, copy the 'product' grain to 'productname' to be consistent with other OSes.

    * 96b7c0cc76 Merge pull request `#47778`_ from Ch3LL/win_state_pkg

      * e1786de6b0 Merge branch '2017.7' into win_state_pkg

      * f8c467d3e6 Fix text editor error

      * 872e162137 Add test_pkg integration state tests to windows

    * 6f934c2259 Merge pull request `#47823`_ from Ch3LL/win_dns_test

      * 7848114d6a Add win_dns module integration tests for windows

    * e63e04602d Merge pull request `#47838`_ from rallytime/bp-47810

      * bd2b62fa66 better debug message

      * 83565c55df Address PR feedback

      * 50bce3a2f3 make decode_linode_plan_label a private function

      * 2ba4fc4cea fix raising when a 'GB' format invalid plan is supplied

      * 3afb50d5a2 slight cleanup

      * 319fbd3406 match quotation mark types properly

      * 95e0202223 more consistent use of parens in logged warning

      * f52926ca87 log a warning when the user supplied a label we could decode but was not in the proper format

      * 121303d827 reduce complexity of get_plan_id by moving decoding of the user-supplied label to its own function

      * cf534c7314 Fix Linode plan selection

    * 9ef6e60617 Merge pull request `#47805`_ from twangboy/add_sign.bat

      * 66d8b0331a Add sign.bat script for signing packages

    * 93420950d3 Merge pull request `#47500`_ from dwoz/winuser

      * 0ca5224cbf Merge branch '2017.7' into winuser

      * e5948902af Use salt utils method for this_user

      * a056a293f1 Centeralize test username lookup

      * 6a6ab69722 Get the current username on windows

    * 552526f309 Merge pull request `#47802`_ from rallytime/bp-40892

      * bb357da084 add minion function to reload beacon `#35960`_

    * c9cccf53b9 Merge pull request `#47816`_ from Ch3LL/disable_windows

      * 2509d36888 Add windows to service disable ERROR check in tests

    * 2cb6634c6b Merge pull request `#47773`_ from frogunder/45011

      * 7c9b0bda33 add win_servermanager.list_available test

    * e65dece202 Merge pull request `#47807`_ from dwoz/winrmtests

      * 1f1cc1357a Increase instance size for cloud tests

      * be8dcd21f1 Try an even bigger timeout

* **PR** `#47900`_: (`rallytime`_) [2018.3] Merge forward from 2018.3.1 to 2018.3
  @ *2018-05-30 18:09:41 UTC*

  * 21550dbd2d Merge pull request `#47900`_ from rallytime/merge-2018.3.1-to-2018.3

  * 2801eecb26 Merge branch '2018.3.1' into '2018.3'

* **ISSUE** `#30367`_: (`paulfanelli`_) salt-run orchestration via state.sls always successful; it is ignoring state return value (refs: `#47843`_)

* **PR** `#47843`_: (`garethgreenaway`_) [2018.3] orchestration results False when function is False (refs: `#47983`_)
  @ *2018-05-30 17:21:54 UTC*

  * a0bf565741 Merge pull request `#47843`_ from garethgreenaway/30367_orch_return_false_when_function_fails

  * 09242697b8 Merge branch '2018.3' into 30367_orch_return_false_when_function_fails

* **PR** `#47866`_: (`rallytime`_) Back-port `#47814`_ to 2018.3
  @ *2018-05-29 19:55:24 UTC*

  * **PR** `#47814`_: (`travispaul`_) Bugfixes and unit tests for pkgin module (refs: `#47866`_)

  * da6f7a5538 Merge pull request `#47866`_ from rallytime/bp-47814

  * d50c0ab96b Lint test_pkgin.py

  * 4dac0b4a31 pkgin latest_version bugfix

  * 4ae0313797 Bugfixes and unit tests for pkgin module

* **PR** `#47865`_: (`rallytime`_) Back-port `#47600`_ to 2018.3
  @ *2018-05-29 19:54:44 UTC*

  * **PR** `#47600`_: (`travispaul`_) Prevent crash on NetBSD and OpenBSD when no swap is configured. (refs: `#47865`_)

  * d9e7f2b5b1 Merge pull request `#47865`_ from rallytime/bp-47600

  * f9f464fa51 Prevent crash on NetBSD and OpenBSD when no swap is configured.

* **PR** `#47221`_: (`azelezni`_) Fix boto_ec2 unused parameter "network_interfaces"
  @ *2018-05-29 14:41:35 UTC*

  * 61561a8279 Merge pull request `#47221`_ from azelezni/fix-boto_ec2-network_interfaces

  * 03ee0023eb Fix unused network_interfaces parameter

  * 1ece61ddfa Fix unused network_interfaces parameter

  * 3e074be9c3 Fixing lint

  * 02609b6e61 Adding state files for new test.

  * 377e34c689 Updating function in saltmod to ensure that the result is a failure if the function being run returns as False.

* **PR** `#47850`_: (`rallytime`_) Fix autodoc for new swarm module
  @ *2018-05-26 01:53:16 UTC*

  * c4d828c986 Merge pull request `#47850`_ from rallytime/swarm-autodoc

  * 467c8fa45c Fix autodoc for new swarm module

* **PR** `#47800`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-05-26 01:17:40 UTC*

  * 30b31c5db5 Merge pull request `#47800`_ from rallytime/merge-2018.3

  * 9e3ce39e8c Typo: test_type --> text_type

  * 8877489386 Fix bad merge caught by test in zpool state

  * c328450be2 Update old utils paths to new paths

  * 4abfd26e86 Merge branch '2017.7' into '2018.3'

    * 46618d2ce7 Merge pull request `#47765`_ from meaksh/2017.7-fix-zypper-error-reading-repo

      * 4475ba19b8 Prevent zypper from parsing repo configuration from not .repo files

    * 0e87559ee3 Merge pull request `#47781`_ from rallytime/update-linode-sizes

      * a90c1b760e Update cloud test profile and docs to use new Linode size lables

    * 3ddc56cb9b Merge pull request `#47748`_ from rallytime/merge-2017.7

      * b75f5ae38e Merge branch '2017.7.6' into '2017.7'

        * edf94c915e Merge pull request `#47775`_ from gtmanfred/2017.7.6

          * 548f65d056 catch UnsupportedOperation with AssertionError

      * 17596f3025 Merge branch '2017.7.6' into '2017.7'

        * 8c38ecd75f Merge pull request `#47769`_ from gtmanfred/2017.7.6

          * 3fdfc0fa82 skip test that breaks test suite

      * e458f4a031 Merge branch '2017.7.6' into '2017.7'

        * 0d5b473ce2 Merge pull request `#47747`_ from Ch3LL/rn_2017.7.6

          * d4aa83b92d Add changelog to 2017.7.6 release notes

        * 8a5b34f7d9 Merge pull request `#47702`_ from damon-atkins/2017.7.6_fix_pkg.latest_state

          * adcc094e08 Merge branch '2017.7.6' into 2017.7.6_fix_pkg.latest_state

        * d610c192d9 Merge pull request `#47700`_ from yannj-fr/2017.7.6

          * 961c1ef61e fix roots modification time check

            * 2a73e905df Merge branch '2017.7.6' into 2017.7.6

        * 266749420f Merge pull request `#47632`_ from gtmanfred/2017.7.6

          * 2c50c0d2f5 fix pylint

          * 4a29057b16 Fix last test for tornado

          * 550ef2e272 allow using tornado 5.0

          * 62e468448b handle new _create_stream in tornado 5.0

        * 2643c356af Merge pull request `#47720`_ from rallytime/bp-47692-2017.7.6

          * 6e5cb36839 Default windows to m1.small for ec2-classic

            * 20d9785244 fix roots modification time check

          * aef37dd1ce fix roots modification time check

          * d51662e053 Ensure targeted_pkgs always contains value for non-windows.

          * 83b4224cf8 Adjusted based on feed back.

          * 12f983ce9f Whitespace lint issues

          * 075d3d3c49 pkg.install execution module on windows ensures the software package is installed when no version is specified, it does not upgrade the software to the latest. This is per the design. pkg.latest must provide the versions to install to pkg.install

    * 0ddc864f90 Merge pull request `#47779`_ from dwoz/winrmtests

      * d5eafe9d53 Use common timeout variable

      * 7e948eb540 Increase ec2 cloud timeouts to 1000

    * 17c4c8443c Merge pull request `#47430`_ from baniobloom/vpc_association_not_found

      * 0f1d007f91 added catch for VPCAssociationNotFound

    * 9c5dde1449 Merge pull request `#47525`_ from baniobloom/duplicate_sec_group_rule

      * dcc35df489 if we are trying to add the same rule then we are already in the desired state, return true

    * 536ce2fa42 Merge pull request `#47772`_ from gtmanfred/2017.7

      * 67756a50fd lock down dependencies for kitchen-salt

    * 12b330f049 Merge pull request `#47749`_ from terminalmage/issue47717

      * cd484bef69 Fix "dnf list upgrades" parsing

    * 5cd18b9e70 Merge pull request `#47755`_ from dwoz/winrmtests

      * 57dd89e6c3 Default to ec2 classic compatible images

      * f89668920a Be explicit about winrm setting

    * f45a96ba1d Merge pull request `#47668`_ from Ch3LL/win_pkg_test

      * a8981024de Add pkg.latest_version windows test

    * 7b12444dfa Merge pull request `#47750`_ from dwoz/cloudtest

      * 63b722ba21 Allow ssh_interface to default to public_ips

    * 27fbb42210 Merge pull request `#47737`_ from dwoz/win_timeout

      * e88833a07d Cloud test fixup

    * 1a93f060fb Merge pull request `#47729`_ from UtahDave/fix_get_info_doc

      * 443a2d72a2 fix cli example to match function name

    * 00a13761c7 Merge pull request `#47682`_ from terminalmage/issue47182

      * d0243e8f23 Suppress spurious lint failure

      * 3b449f11fc Add regression test for excludes issue

      * 28a7d2b81c Skip __exclude__ in find_sls_ids

    * 518f7bcc62 Merge pull request `#47708`_ from darkpixel/47696-do-not-enumerate-none

      * 54e9bf9ec9 Merge branch '2017.7' into 47696-do-not-enumerate-none

    * cad062eaa7 Merge pull request `#47681`_ from rallytime/merge-2017.7

      * 6c06cb3ae3 Merge branch '2017.7.6' into '2017.7'

    * fd2d45d9c2 Merge pull request `#47683`_ from Ch3LL/mac_user_test

      * 5a1b25b9c7 Remove unnecessary setUp in states.test_user test for mac

    * f323799c42 Merge pull request `#47692`_ from dwoz/win_instance_type

      * 20b6070d54 Default windows to m1.small for ec2-classic

    * 990ece5cd5 Merge pull request `#47665`_ from gtmanfred/cloud

      * fd8a02decb use dictupdate to update the providers dictionary and merge lists

    * a2ed8cbb7f Merge pull request `#47151`_ from zer0def/configparser-defaultsect

      * a8f2ad977e Merge branch '2017.7' into configparser-defaultsect

      * cca2a806c9 Made interaction with [DEFAULT] section in ConfigParser as sane as upstream permits.

    * e6fb8342ef Merge pull request `#47673`_ from terminalmage/bp-45808

      * 454291ad62 Fix errors when attempting to cache files with long names or URLs

    * b0446aab07 Merge pull request `#47670`_ from gtmanfred/2017.7

      * dfd5a8715f add a pytest.ini and update a dependency for kitchen

    * 0d06da6944 Merge pull request `#47626`_ from gtmanfred/2017.7

      * 418364a533 make dev_python27.txt have the same message as dev_python34.txt

      * d53b44d10f remove lock file

      * 493ed7f93d use the toml dict format

      * e0f7cc1447 add proxy tests decorator to pytest conftest

      * 0a621dd0ec add Pipfile for managing dependencies in salt

      * f78b81db94 simplify dev and base.txt to single files

    * a07a8906a0 Merge pull request `#47578`_ from Ch3LL/mac_service_disabled

      * 6032a01f55 change disable check for upstart service on ubuntu14

      * 33b4cfbc5b Change service assertion check for systemd platforms

      * 14896f9743 change codeauthor and class name

      * 502c5bdff5 Ensure mac_service.disabled is correctly querying services

            * 95d4488f01 Merge branch '2017.7.6' into 47696-do-not-enumerate-none

          * 16c2153385 Merge pull request `#47667`_ from Ch3LL/mac_user_enable

            * ba40d3d1a1 Update test_mac_user_enable_auto_login to test both py2 and py3

          * a4921e86c9 Merge pull request `#47645`_ from Ch3LL/py3_rm_pip

            * 225d90ad4c query the pip path for test test_issue_2087_missing_pip

          * e441733ac1 Merge pull request `#47646`_ from rallytime/bp-47601-and-47643

            * 9e1d1a5ef8 Fix typo

            * 4e94609136 Remove unwanted file

            * 0109249c78 use ignore-undefined-variable

            * 37caecb7f4 Ignore pylint WindowsError

            * c1135d90c7 Better doc string

            * e53d6b9ed9 Skip tests when we can not use runas

            * 041e4c6ddb Wrap properties loop with a check for None.  Closes GH-47696

* **PR** `#47581`_: (`twangboy`_) Add get_encoding salt util
  @ *2018-05-25 20:40:07 UTC*

  * da9eaa1825 Merge pull request `#47581`_ from twangboy/fix_47274

  * ff6600f25e Merge branch '2018.3' into fix_47274

  * 6eff2f847b Add suggested changes

  * e27e9fd1e7 Fix tests on Py3

  * f398cbbdda Use os.linesep.join instead of textwrap.dedent

  * 771392e299 Fix unit tests, add newline='' to io.open

  * c0f735dde3 Remove comment

  * 6d877bb48b Add comment

  * 9f369d3f22 Remove to_encoding, create get_encoding

  * 68be0f9ed2 Add is_encoding salt util

* **ISSUE** `#47694`_: (`thuhak`_) utils/boto and utils/boto3 load error (refs: `#47726`_)

* **PR** `#47726`_: (`gtmanfred`_) rename boto to botomod
  @ *2018-05-25 20:37:37 UTC*

  * b860d95b2c Merge pull request `#47726`_ from gtmanfred/2018.3

  * 43997a466e fix tests

  * 59180e09a8 switch all salt.utils.boto* calls to __utils__ calls

  * 7e30f459c9 rename boto to botomod

* **ISSUE** `#47701`_: (`babs`_) elasticsearch.index_template_present state with check_definition: True fails.  (refs: `#47703`_)

* **PR** `#47803`_: (`rallytime`_) Back-port `#47703`_ to 2018.3
  @ *2018-05-23 20:12:30 UTC*

  * **PR** `#47703`_: (`babs`_) Fix elasticsearch.index_template_present with check_definition (refs: `#47803`_)

  * 2a270162d0 Merge pull request `#47803`_ from rallytime/bp-47703

  * 8fce0c562d Fix elasticsearch with check_definition

* **PR** `#47804`_: (`rallytime`_) Back-port `#47761`_ to 2018.3
  @ *2018-05-23 20:11:55 UTC*

  * **PR** `#47761`_: (`zerthimon`_) Fix userdata in openstack instances (refs: `#47804`_)

  * 780043e6fd Merge pull request `#47804`_ from rallytime/bp-47761

  * b7bc306333 Fix userdata in openstack instances

* **PR** `#47776`_: (`garethgreenaway`_) [2018.3] Fixes to failing _before_connect tests
  @ *2018-05-23 15:10:35 UTC*

  * 1efe891c42 Merge pull request `#47776`_ from garethgreenaway/970_two_minion_unit_tests_failing

  * a5011b49ab Merge branch '2018.3' into 970_two_minion_unit_tests_failing

  * ef24f72169 Fixing unit.test_minion.MinionTestCase.test_beacons_before_connect and unit.test_minion.MinionTestCase.test_scheduler_before_connect.

* **PR** `#47783`_: (`rallytime`_) [2018.3] Merge forward from 2018.3.1 to 2018.3
  @ *2018-05-23 14:51:56 UTC*

  * 4a6ca67883 Merge pull request `#47783`_ from rallytime/merge-2018.3

  * 1adb8ea27f Merge branch '2018.3.1' into '2018.3'

* **PR** `#47149`_: (`meaksh`_) [2018.3] Strip trailing commas on Linux user's GECOS fields
  @ *2018-05-22 21:18:49 UTC*

  * f8a6a85d28 Merge pull request `#47149`_ from meaksh/2018.3-remove-trailing-commas-on-linux-user-gecos-fields

  * 60ec3230db Merge branch '2018.3' into 2018.3-remove-trailing-commas-on-linux-user-gecos-fields

* **ISSUE** `#46938`_: (`racooper`_) Beacons documentation update for 2018.3 (refs: `#47740`_)

* **PR** `#47740`_: (`garethgreenaway`_) [2018.3] Updating Beacon topic to include list based configuration for Beacons
  @ *2018-05-21 13:58:01 UTC*

  * 19f4137b63 Merge pull request `#47740`_ from garethgreenaway/46938_beacons_documentation

  * 5d23ef4dd8 Updating Beacon topic to include list based configuration for Beacons

* **PR** `#47710`_: (`terminalmage`_) salt.loader: add error logging when whitelist lookup fails
  @ *2018-05-18 16:56:18 UTC*

  * 22807ac756 Merge pull request `#47710`_ from terminalmage/fix-loader-whitelist

  * 6192391b7b Add additional missing modules to whitelist

  * 7192c38f66 Change key -> function to make log message more clear

  * 91f9fd38fd Fix loader whitelists in unit tests

  * d4f2662e5b Add error logging when whitelist lookup fails

* **PR** `#47680`_: (`rallytime`_) [2018.3] Merge forward from 2018.3.1 to 2018.3
  @ *2018-05-17 21:30:27 UTC*

  * b91c0f5647 Merge pull request `#47680`_ from rallytime/merge-2018.3

  * 9b1773a763 Merge branch '2018.3.1' into '2018.3'

* **PR** `#47545`_: (`dmurphy18`_) Fix non-root build and signing for rpm packages
  @ *2018-05-17 21:20:10 UTC*

  * dbf12f9be2 Merge pull request `#47545`_ from dmurphy18/fix_nonroot_build

  * 220f887fa6 Fixed review comment, changed file.chown to file.makedirs_perms

  * b15a1652b5 Changed versionadded from 2018.3.1 to 2018.3.2, to reflect when change should be accepted

  * 90eb03e375 Additional error checking and minor cleanup

  * 40d77e03d2 Correct building rpms with non-root user

* **ISSUE** `#47546`_: (`ender8282`_) archive.extracted fails when archive includes files with non-ascii names with 2018.3.0 (refs: `#48015`_, `#47572`_)

* **PR** `#47572`_: (`garethgreenaway`_) [2018.3] archive module, filenames with Unicode characters
  @ *2018-05-17 20:41:11 UTC*

  * 69056e5b67 Merge pull request `#47572`_ from garethgreenaway/47546_archive_non_ascii_filenames

  * 5e97b8b44a Updating with requested changes.

  * cc1aa75a2f only convert to bytes when using Python2

  * 0fe32f4066 Updating integration/modules/test_archive to include filenames with unicode characters.

  * 5a9cadd125 Accounting for when files in an archive contain non-ascii characters

* **PR** `#47661`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-05-16 15:53:36 UTC*

  * cb04d9c37e Merge pull request `#47661`_ from rallytime/merge-2018.3

  * dd3e6f3f0a Merge branch '2017.7' into '2018.3'

    * f63d801858 Merge pull request `#47639`_ from rallytime/merge-2017.7

      * 1503f1020f Merge branch '2017.7.6' into '2017.7'

        * 6f178ca908 Merge pull request `#47570`_ from gtmanfred/2017.7.6

          * 84aa034e03 Update dependency to msgpack

        * 98bd598701 Merge pull request `#47523`_ from rallytime/man-pages

          * 48ecb78dec [2017.7.6] Update man pages

        * e608ea9617 Merge pull request `#47517`_ from rallytime/bp-47505-2017.7.6

        * 0734578533 Raise proper invocation errors

    * db0eef3e8b Merge pull request `#47643`_ from dwoz/runas_detect

      * 8c5e54b8b3 Fix typo

      * 69bc88f1c6 Remove unwanted file

    * 6dd3ab9f06 Merge pull request `#47601`_ from dwoz/runas_detect

      * 3235ac08cb use ignore-undefined-variable

      * 58911d510a Ignore pylint WindowsError

      * 17987d3c5a Better doc string

      * a48ac26573 Skip tests when we can not use runas

    * f61ccae627 Merge pull request `#47611`_ from Ch3LL/deb_doc

      * 6d2ddd050f One more grammar fixup

      * 2d5ff01261 Grammar fix

      * 138847c9c4 Update debian install docs to reflect new latest debian releases

    * 9e2fe284e4 Merge pull request `#47598`_ from rallytime/bp-47568-2017.7

      * 09458c65cf Add exception logging on serialize/deserialize exceptions

      * c62c855f9c salt.serializers.yaml/yamlex: remove invalid multi_constructor

    * 8a7913ccc3 Merge pull request `#47548`_ from Ch3LL/syslog

      * 31f13a4197 sysloghander: check for 3.5.4 python version

      * a020352a03 Catch Sysloghandler errors when log file does not exist

    * 82fb6ba366 Merge pull request `#47508`_ from gtmanfred/2017.7

      * 1a87e7455f allow pulling the mysql_query.run_file to pull from the fileserver

    * be29b58a09 Merge pull request `#47562`_ from rallytime/bp-47513

      * 357bc084b3 fix `#46546`_

    * d3121fcfa4 Merge pull request `#47471`_ from meaksh/2017.7-fix-inconsistent-scheduled-jid-with-returners

      * f079939500 Do not override jid on returners, only sending back to master

    * 662f6086db Merge pull request `#47313`_ from Circuitsoft/2017.7

      * 237560b745 Merge branch '2017.7' into 2017.7

      * cb674fb1cb Enable opkg as pkgrepo handler on Poky

      * 7a58fd157e Enable opkg on non-NILinuxRT systems

      * 139360c55f Add Poky to OS Information Grains

      * d74057224d Un-normalize os_family in pkgrepo state

* **PR** `#47672`_: (`terminalmage`_) Backport `#47487`_ to 2018.3
  @ *2018-05-16 13:55:40 UTC*

  * **PR** `#47487`_: (`rosscdh`_) bad ref to error fix (refs: `#47672`_)

  * d17a16b648 Merge pull request `#47672`_ from terminalmage/bp-47487

  * 12abbfdcf7 bad ref to error fix

* **ISSUE** `#47501`_: (`mateiw`_) salt-ssh doesn't propagate pillar when overriding pillar in module.run + state.apply (refs: `#47504`_)

* **PR** `#47504`_: (`mateiw`_) Fix pillar propagation in salt-ssh when overriding pillar in module.run + state.apply
  @ *2018-05-16 13:55:05 UTC*

  * 9d4f5203a7 Merge pull request `#47504`_ from mateiw/2018.3-salt-ssh-pillar-propagation-issue-47501

  * 3ffa412ee5 Merge branch '2018.3' into 2018.3-salt-ssh-pillar-propagation-issue-47501

  * 2f1485e067 Option to merge current pillar with opts['pillar'] during pillar compile

* **PR** `#47212`_: (`weswhet`_) fix macOS running as user.
  @ *2018-05-16 13:54:23 UTC*

  * 4fe78bbb9b Merge pull request `#47212`_ from weswhet/fix-macos-runas

  * 8ee11d74af Merge branch '2018.3' into fix-macos-runas

  * e78fa45927 adding in requested changes

  * 33c1492099 Merge branch '2018.3' into fix-macos-runas

  * 0ecabcae78 adding in a fix for running commands as a user on macos

* **ISSUE** `#47587`_: (`FedericoOlivieri`_) --out=table broken in  2018.3.0 'str' object but received a 'unicode' (refs: `#47674`_)

* **PR** `#47674`_: (`terminalmage`_) Fix regression in table outputter due to unicode types
  @ *2018-05-16 13:41:04 UTC*

  * 0c7439a955 Merge pull request `#47674`_ from terminalmage/issue47587

  * 43e3dcd398 Fix Python 3 incompatibility in table outputter

  * d729656703 Add unit tests for table outputter

  * 907d182dea Fix regression in table outputter due to unicode strings

* **PR** `#47617`_: (`aesposito91`_) Update napalm.py
  @ *2018-05-15 15:44:35 UTC*

  * d1a1a594e9 Merge pull request `#47617`_ from aesposito91/2018.3

  * 9f5d201dd7 Update napalm.py

* **ISSUE** `#46871`_: (`guettli`_) Sentry Logging Handler (refs: `#47649`_)

* **PR** `#47649`_: (`paulcollinsiii`_) Some additional details about Sentry for the docs
  @ *2018-05-15 15:41:36 UTC*

  * 049abe2850 Merge pull request `#47649`_ from paulcollinsiii/sentry_docs

  * 2a8dfd65d7 Some additional details about Sentry for the docs

* **PR** `#47642`_: (`garethgreenaway`_) [2018.3] Updating templates used by salt-extend for unicode goodness
  @ *2018-05-15 15:38:26 UTC*

  * 8a21b864df Merge pull request `#47642`_ from garethgreenaway/unicode_update_salt_extend_templates

  * 68d73f7afc Updating the templates that the salt-extend utility uses to include unicode_literals & print_function

          * 0232a6e1ad Add 'other' as valid kwargs for 'user.add' method

          * ff861d9089 Merge branch '2018.3' into 2018.3-remove-trailing-commas-on-linux-user-gecos-fields

* **PR** `#47603`_: (`terminalmage`_) Move/merge more test modules
  @ *2018-05-14 20:48:43 UTC*

  * 99f53c0a9f Merge pull request `#47603`_ from terminalmage/more-test-renaming

  * d612bd27e4 Move/merge more test modules

* **PR** `#47640`_: (`rallytime`_) [2018.3] Merge forward from 2018.3.1 to 2018.3
  @ *2018-05-14 17:59:06 UTC*

  * cc3daa88f3 Merge pull request `#47640`_ from rallytime/merge-2018.3

  * 2827c56399 Merge branch '2018.3.1' into '2018.3'

        * f1680f1d9b Do make comparisons in a single line

        * 7dea455c12 Add unit test for new method 'user.chother'

        * 694882632c Add 'other' attribute to GECOS fields to avoid inconsistencies with chfn

        * 6c089c9de1 Fix unsupported chars checking on GECOS fields

        * d5c9ca0fbc Add unit tests for GECOS fields

        * ed940c4f58 Strip trailing commas on Linux user GECOS fields

* **PR** `#47589`_: (`Ch3LL`_) Remove duplicate file id in watch_any doc example
  @ *2018-05-10 22:06:00 UTC*

  * 4ec63dd041 Merge pull request `#47589`_ from Ch3LL/watch_any_doc

  * 8cb97a48f5 Add additional state to watch_any doc example

  * f7223a3bbf Remove duplicate file id in watch_any doc example

* **PR** `#47564`_: (`rallytime`_) [2018.3] Merge forward from 2017.7 to 2018.3
  @ *2018-05-10 19:13:36 UTC*

  * 9836a7e62b Merge pull request `#47564`_ from rallytime/merge-2018.3

  * 295e302fcf Lint: Fix syntax error from bad merge-conflict resolution

  * 25f03ae425 Merge branch '2017.7' into '2018.3'

  * 291d3d3bd8 Merge pull request `#47540`_ from terminalmage/cmdmod-home-fix

    * e4b277f82e Fix corner case where runas user's HOME env value is incorrect

  * 49af577b3e Merge pull request `#47547`_ from terminalmage/gitfs-tutorial

    * 806ffb298a Add masterless mode docs to gitfs tutorial

  * 476ba053d1 Merge pull request `#47538`_ from terminalmage/pip-docs

    * 98e8ffeba4 Fix/clarify some of the pip module documentation

  * 7cc8d9d30a Merge pull request `#47524`_ from dwoz/whitelistlines

    * 2605ff8712 Gracefully handle blank lines in whitelist.txt

  * f1a5b13072 Merge pull request `#47527`_ from dwoz/test_file_name

    * 4aea7ca571 Update doc string

    * b3289e5a1c Fix test file name

  * e9c1723175 Merge pull request `#47408`_ from Ch3LL/skip_diskusage

    * 068da8ad7d Merge branch '2017.7' into skip_diskusage

    * 1a7ffb4e0d return error if diskusage not available

    * 10bd63a976 Skip status.diskusage integration tests on macsox

  * 2f50ff7bc8 Merge pull request `#47480`_ from baniobloom/ConflictingDomainExists

    * d22ed7dffa added handling for the aws error ConflictingDomainExists

  * 7f53be6e92 Merge pull request `#47444`_ from terminalmage/render_state-spurious-error

    * a1e9fe00fd Skip trying to render a template for a nonexistant SLS file

  * 50b9c4d79d Merge pull request `#47478`_ from terminalmage/rename-pip-state-test

    * 9f7a9ebebd Rename pip state test modules to match naming convention

  * e78ac0f9b7 Merge pull request `#47505`_ from dwoz/win_dsc_fixes

    * d1fcb40d1c Raise proper invocation errors

  * 0d4d5047d8 Merge pull request `#47499`_ from dwoz/win_run_timeout_again

    * c6697b9f16 Move kill process tree and re-use it

  * 6a4d0380b1 Merge pull request `#47493`_ from dwoz/win_run_timeout

  * fec1233dc4 Add support for windows timeout to run_salt

* **PR** `#47565`_: (`rallytime`_) Back-port `#47440`_ to 2018.3
  @ *2018-05-10 18:15:50 UTC*

  * **PR** `#47440`_: (`kt97679`_) fix for the race condition, details are here: https://github.com/salt… (refs: `#47565`_)

  * b22657ff9e Merge pull request `#47565`_ from rallytime/bp-47440

  * 7c43417d46 addressed feedback

  * 1abe05207c fix for the race condition, details are here: https://github.com/saltstack/salt/issues/33223#issuecomment-386117236

* **PR** `#47590`_: (`Ch3LL`_) Fix firewalld prune_services deprecation warning
  @ *2018-05-10 17:01:48 UTC*

  * 17e0fdca6c Merge pull request `#47590`_ from Ch3LL/firewall_warn

  * d29b8e0ae2 Fix firewalld prune_services deprecation warning

* **PR** `#47568`_: (`terminalmage`_) salt.serializers.yaml/yamlex: remove invalid multi_constructor (refs: `#47598`_)
  @ *2018-05-10 16:21:09 UTC*

  * 2fcb108d71 Merge pull request `#47568`_ from terminalmage/salt-jenkins-971

* **ISSUE** `#38671`_: (`MikeSpaceG`_) zpool.get error (refs: `#47224`_)

* **PR** `#47563`_: (`rallytime`_) Back-port `#47224`_ to 2018.3
  @ *2018-05-10 16:18:07 UTC*

  * **PR** `#47224`_: (`sjorge`_) Zpool zol fixes (refs: `#47563`_)

  * e3ee7053fb Merge pull request `#47563`_ from rallytime/bp-47224

  * 1d191445a7 FIX `#38671`_ - zpool.get should support older zfs version

  * 23705b12cb zpool.scub docs should mention pause is not always available

  * d73885aa5c Make sure the docs mention that createboot is only available on illumos

* **PR** `#47569`_: (`Ch3LL`_) Update salt.utils.path mock in virtual core test
  @ *2018-05-10 15:18:31 UTC*

  * 8e26624db3 Merge pull request `#47569`_ from Ch3LL/core_virt

* **PR** `#47576`_: (`rallytime`_) [2018.3] Small Documentation Fixes
  @ *2018-05-10 14:08:11 UTC*

  * fc93715eea Merge pull request `#47576`_ from rallytime/doc-updates

  * ca927fc14b Add extra lines that are needed for proper code-block formatting

  * b330d763a4 Remove infoblox state autodoc file

.. _`#21025`: https://github.com/saltstack/salt/issues/21025
.. _`#2`: https://github.com/saltstack/salt/issues/2
.. _`#30367`: https://github.com/saltstack/salt/issues/30367
.. _`#32737`: https://github.com/saltstack/salt/issues/32737
.. _`#35960`: https://github.com/saltstack/salt/issues/35960
.. _`#37512`: https://github.com/saltstack/salt/issues/37512
.. _`#38310`: https://github.com/saltstack/salt/issues/38310
.. _`#38671`: https://github.com/saltstack/salt/issues/38671
.. _`#40004`: https://github.com/saltstack/salt/issues/40004
.. _`#43138`: https://github.com/saltstack/salt/issues/43138
.. _`#45498`: https://github.com/saltstack/salt/pull/45498
.. _`#45939`: https://github.com/saltstack/salt/issues/45939
.. _`#46291`: https://github.com/saltstack/salt/pull/46291
.. _`#46546`: https://github.com/saltstack/salt/issues/46546
.. _`#46765`: https://github.com/saltstack/salt/issues/46765
.. _`#46776`: https://github.com/saltstack/salt/pull/46776
.. _`#46806`: https://github.com/saltstack/salt/issues/46806
.. _`#46807`: https://github.com/saltstack/salt/pull/46807
.. _`#46871`: https://github.com/saltstack/salt/issues/46871
.. _`#46896`: https://github.com/saltstack/salt/issues/46896
.. _`#46938`: https://github.com/saltstack/salt/issues/46938
.. _`#46985`: https://github.com/saltstack/salt/issues/46985
.. _`#46986`: https://github.com/saltstack/salt/issues/46986
.. _`#47049`: https://github.com/saltstack/salt/pull/47049
.. _`#47059`: https://github.com/saltstack/salt/issues/47059
.. _`#47100`: https://github.com/saltstack/salt/pull/47100
.. _`#47147`: https://github.com/saltstack/salt/pull/47147
.. _`#47149`: https://github.com/saltstack/salt/pull/47149
.. _`#47151`: https://github.com/saltstack/salt/pull/47151
.. _`#47212`: https://github.com/saltstack/salt/pull/47212
.. _`#47221`: https://github.com/saltstack/salt/pull/47221
.. _`#47224`: https://github.com/saltstack/salt/pull/47224
.. _`#47236`: https://github.com/saltstack/salt/issues/47236
.. _`#47269`: https://github.com/saltstack/salt/issues/47269
.. _`#47313`: https://github.com/saltstack/salt/pull/47313
.. _`#47408`: https://github.com/saltstack/salt/pull/47408
.. _`#47430`: https://github.com/saltstack/salt/pull/47430
.. _`#47440`: https://github.com/saltstack/salt/pull/47440
.. _`#47444`: https://github.com/saltstack/salt/pull/47444
.. _`#47471`: https://github.com/saltstack/salt/pull/47471
.. _`#47478`: https://github.com/saltstack/salt/pull/47478
.. _`#47480`: https://github.com/saltstack/salt/pull/47480
.. _`#47481`: https://github.com/saltstack/salt/issues/47481
.. _`#47487`: https://github.com/saltstack/salt/pull/47487
.. _`#47493`: https://github.com/saltstack/salt/pull/47493
.. _`#47499`: https://github.com/saltstack/salt/pull/47499
.. _`#47500`: https://github.com/saltstack/salt/pull/47500
.. _`#47501`: https://github.com/saltstack/salt/issues/47501
.. _`#47504`: https://github.com/saltstack/salt/pull/47504
.. _`#47505`: https://github.com/saltstack/salt/pull/47505
.. _`#47508`: https://github.com/saltstack/salt/pull/47508
.. _`#47510`: https://github.com/saltstack/salt/pull/47510
.. _`#47517`: https://github.com/saltstack/salt/pull/47517
.. _`#47523`: https://github.com/saltstack/salt/pull/47523
.. _`#47524`: https://github.com/saltstack/salt/pull/47524
.. _`#47525`: https://github.com/saltstack/salt/pull/47525
.. _`#47527`: https://github.com/saltstack/salt/pull/47527
.. _`#47533`: https://github.com/saltstack/salt/pull/47533
.. _`#47538`: https://github.com/saltstack/salt/pull/47538
.. _`#47540`: https://github.com/saltstack/salt/pull/47540
.. _`#47545`: https://github.com/saltstack/salt/pull/47545
.. _`#47546`: https://github.com/saltstack/salt/issues/47546
.. _`#47547`: https://github.com/saltstack/salt/pull/47547
.. _`#47548`: https://github.com/saltstack/salt/pull/47548
.. _`#47552`: https://github.com/saltstack/salt/pull/47552
.. _`#47557`: https://github.com/saltstack/salt/pull/47557
.. _`#47562`: https://github.com/saltstack/salt/pull/47562
.. _`#47563`: https://github.com/saltstack/salt/pull/47563
.. _`#47564`: https://github.com/saltstack/salt/pull/47564
.. _`#47565`: https://github.com/saltstack/salt/pull/47565
.. _`#47568`: https://github.com/saltstack/salt/pull/47568
.. _`#47569`: https://github.com/saltstack/salt/pull/47569
.. _`#47570`: https://github.com/saltstack/salt/pull/47570
.. _`#47572`: https://github.com/saltstack/salt/pull/47572
.. _`#47576`: https://github.com/saltstack/salt/pull/47576
.. _`#47578`: https://github.com/saltstack/salt/pull/47578
.. _`#47581`: https://github.com/saltstack/salt/pull/47581
.. _`#47587`: https://github.com/saltstack/salt/issues/47587
.. _`#47589`: https://github.com/saltstack/salt/pull/47589
.. _`#47590`: https://github.com/saltstack/salt/pull/47590
.. _`#47598`: https://github.com/saltstack/salt/pull/47598
.. _`#47600`: https://github.com/saltstack/salt/pull/47600
.. _`#47601`: https://github.com/saltstack/salt/pull/47601
.. _`#47603`: https://github.com/saltstack/salt/pull/47603
.. _`#47611`: https://github.com/saltstack/salt/pull/47611
.. _`#47617`: https://github.com/saltstack/salt/pull/47617
.. _`#47626`: https://github.com/saltstack/salt/pull/47626
.. _`#47632`: https://github.com/saltstack/salt/pull/47632
.. _`#47639`: https://github.com/saltstack/salt/pull/47639
.. _`#47640`: https://github.com/saltstack/salt/pull/47640
.. _`#47642`: https://github.com/saltstack/salt/pull/47642
.. _`#47643`: https://github.com/saltstack/salt/pull/47643
.. _`#47645`: https://github.com/saltstack/salt/pull/47645
.. _`#47646`: https://github.com/saltstack/salt/pull/47646
.. _`#47649`: https://github.com/saltstack/salt/pull/47649
.. _`#47661`: https://github.com/saltstack/salt/pull/47661
.. _`#47665`: https://github.com/saltstack/salt/pull/47665
.. _`#47667`: https://github.com/saltstack/salt/pull/47667
.. _`#47668`: https://github.com/saltstack/salt/pull/47668
.. _`#47670`: https://github.com/saltstack/salt/pull/47670
.. _`#47672`: https://github.com/saltstack/salt/pull/47672
.. _`#47673`: https://github.com/saltstack/salt/pull/47673
.. _`#47674`: https://github.com/saltstack/salt/pull/47674
.. _`#47680`: https://github.com/saltstack/salt/pull/47680
.. _`#47681`: https://github.com/saltstack/salt/pull/47681
.. _`#47682`: https://github.com/saltstack/salt/pull/47682
.. _`#47683`: https://github.com/saltstack/salt/pull/47683
.. _`#47689`: https://github.com/saltstack/salt/issues/47689
.. _`#47691`: https://github.com/saltstack/salt/pull/47691
.. _`#47692`: https://github.com/saltstack/salt/pull/47692
.. _`#47694`: https://github.com/saltstack/salt/issues/47694
.. _`#47695`: https://github.com/saltstack/salt/issues/47695
.. _`#47698`: https://github.com/saltstack/salt/pull/47698
.. _`#47700`: https://github.com/saltstack/salt/pull/47700
.. _`#47701`: https://github.com/saltstack/salt/issues/47701
.. _`#47702`: https://github.com/saltstack/salt/pull/47702
.. _`#47703`: https://github.com/saltstack/salt/pull/47703
.. _`#47708`: https://github.com/saltstack/salt/pull/47708
.. _`#47710`: https://github.com/saltstack/salt/pull/47710
.. _`#47720`: https://github.com/saltstack/salt/pull/47720
.. _`#47725`: https://github.com/saltstack/salt/pull/47725
.. _`#47726`: https://github.com/saltstack/salt/pull/47726
.. _`#47729`: https://github.com/saltstack/salt/pull/47729
.. _`#47734`: https://github.com/saltstack/salt/pull/47734
.. _`#47737`: https://github.com/saltstack/salt/pull/47737
.. _`#47740`: https://github.com/saltstack/salt/pull/47740
.. _`#47747`: https://github.com/saltstack/salt/pull/47747
.. _`#47748`: https://github.com/saltstack/salt/pull/47748
.. _`#47749`: https://github.com/saltstack/salt/pull/47749
.. _`#47750`: https://github.com/saltstack/salt/pull/47750
.. _`#47753`: https://github.com/saltstack/salt/pull/47753
.. _`#47755`: https://github.com/saltstack/salt/pull/47755
.. _`#47761`: https://github.com/saltstack/salt/pull/47761
.. _`#47765`: https://github.com/saltstack/salt/pull/47765
.. _`#47766`: https://github.com/saltstack/salt/issues/47766
.. _`#47769`: https://github.com/saltstack/salt/pull/47769
.. _`#47772`: https://github.com/saltstack/salt/pull/47772
.. _`#47773`: https://github.com/saltstack/salt/pull/47773
.. _`#47775`: https://github.com/saltstack/salt/pull/47775
.. _`#47776`: https://github.com/saltstack/salt/pull/47776
.. _`#47778`: https://github.com/saltstack/salt/pull/47778
.. _`#47779`: https://github.com/saltstack/salt/pull/47779
.. _`#47781`: https://github.com/saltstack/salt/pull/47781
.. _`#47783`: https://github.com/saltstack/salt/pull/47783
.. _`#47788`: https://github.com/saltstack/salt/pull/47788
.. _`#47800`: https://github.com/saltstack/salt/pull/47800
.. _`#47802`: https://github.com/saltstack/salt/pull/47802
.. _`#47803`: https://github.com/saltstack/salt/pull/47803
.. _`#47804`: https://github.com/saltstack/salt/pull/47804
.. _`#47805`: https://github.com/saltstack/salt/pull/47805
.. _`#47807`: https://github.com/saltstack/salt/pull/47807
.. _`#47808`: https://github.com/saltstack/salt/pull/47808
.. _`#47814`: https://github.com/saltstack/salt/pull/47814
.. _`#47816`: https://github.com/saltstack/salt/pull/47816
.. _`#47822`: https://github.com/saltstack/salt/pull/47822
.. _`#47823`: https://github.com/saltstack/salt/pull/47823
.. _`#47824`: https://github.com/saltstack/salt/pull/47824
.. _`#47827`: https://github.com/saltstack/salt/pull/47827
.. _`#47838`: https://github.com/saltstack/salt/pull/47838
.. _`#47843`: https://github.com/saltstack/salt/pull/47843
.. _`#47846`: https://github.com/saltstack/salt/pull/47846
.. _`#47847`: https://github.com/saltstack/salt/pull/47847
.. _`#47850`: https://github.com/saltstack/salt/pull/47850
.. _`#47851`: https://github.com/saltstack/salt/pull/47851
.. _`#47853`: https://github.com/saltstack/salt/pull/47853
.. _`#47860`: https://github.com/saltstack/salt/pull/47860
.. _`#47865`: https://github.com/saltstack/salt/pull/47865
.. _`#47866`: https://github.com/saltstack/salt/pull/47866
.. _`#47868`: https://github.com/saltstack/salt/pull/47868
.. _`#47873`: https://github.com/saltstack/salt/pull/47873
.. _`#47875`: https://github.com/saltstack/salt/pull/47875
.. _`#47876`: https://github.com/saltstack/salt/pull/47876
.. _`#47877`: https://github.com/saltstack/salt/pull/47877
.. _`#47879`: https://github.com/saltstack/salt/pull/47879
.. _`#47880`: https://github.com/saltstack/salt/pull/47880
.. _`#47882`: https://github.com/saltstack/salt/pull/47882
.. _`#47899`: https://github.com/saltstack/salt/pull/47899
.. _`#47900`: https://github.com/saltstack/salt/pull/47900
.. _`#47908`: https://github.com/saltstack/salt/pull/47908
.. _`#47913`: https://github.com/saltstack/salt/pull/47913
.. _`#47915`: https://github.com/saltstack/salt/pull/47915
.. _`#47917`: https://github.com/saltstack/salt/pull/47917
.. _`#47922`: https://github.com/saltstack/salt/pull/47922
.. _`#47923`: https://github.com/saltstack/salt/pull/47923
.. _`#47924`: https://github.com/saltstack/salt/pull/47924
.. _`#47925`: https://github.com/saltstack/salt/issues/47925
.. _`#47926`: https://github.com/saltstack/salt/pull/47926
.. _`#47927`: https://github.com/saltstack/salt/pull/47927
.. _`#47930`: https://github.com/saltstack/salt/pull/47930
.. _`#47931`: https://github.com/saltstack/salt/pull/47931
.. _`#47933`: https://github.com/saltstack/salt/pull/47933
.. _`#47941`: https://github.com/saltstack/salt/pull/47941
.. _`#47943`: https://github.com/saltstack/salt/pull/47943
.. _`#47944`: https://github.com/saltstack/salt/pull/47944
.. _`#47949`: https://github.com/saltstack/salt/pull/47949
.. _`#47955`: https://github.com/saltstack/salt/issues/47955
.. _`#47956`: https://github.com/saltstack/salt/pull/47956
.. _`#47957`: https://github.com/saltstack/salt/pull/47957
.. _`#47959`: https://github.com/saltstack/salt/pull/47959
.. _`#47966`: https://github.com/saltstack/salt/pull/47966
.. _`#47968`: https://github.com/saltstack/salt/pull/47968
.. _`#47975`: https://github.com/saltstack/salt/pull/47975
.. _`#47976`: https://github.com/saltstack/salt/pull/47976
.. _`#47978`: https://github.com/saltstack/salt/pull/47978
.. _`#47982`: https://github.com/saltstack/salt/pull/47982
.. _`#47983`: https://github.com/saltstack/salt/pull/47983
.. _`#47984`: https://github.com/saltstack/salt/issues/47984
.. _`#47985`: https://github.com/saltstack/salt/pull/47985
.. _`#47986`: https://github.com/saltstack/salt/pull/47986
.. _`#47989`: https://github.com/saltstack/salt/pull/47989
.. _`#47990`: https://github.com/saltstack/salt/pull/47990
.. _`#47999`: https://github.com/saltstack/salt/issues/47999
.. _`#48002`: https://github.com/saltstack/salt/pull/48002
.. _`#48003`: https://github.com/saltstack/salt/pull/48003
.. _`#48009`: https://github.com/saltstack/salt/pull/48009
.. _`#48012`: https://github.com/saltstack/salt/issues/48012
.. _`#48014`: https://github.com/saltstack/salt/pull/48014
.. _`#48015`: https://github.com/saltstack/salt/pull/48015
.. _`#48020`: https://github.com/saltstack/salt/issues/48020
.. _`#48022`: https://github.com/saltstack/salt/pull/48022
.. _`#48024`: https://github.com/saltstack/salt/pull/48024
.. _`#48029`: https://github.com/saltstack/salt/issues/48029
.. _`#48034`: https://github.com/saltstack/salt/pull/48034
.. _`#48037`: https://github.com/saltstack/salt/pull/48037
.. _`#48041`: https://github.com/saltstack/salt/pull/48041
.. _`#48042`: https://github.com/saltstack/salt/pull/48042
.. _`#48044`: https://github.com/saltstack/salt/pull/48044
.. _`#48053`: https://github.com/saltstack/salt/pull/48053
.. _`#48054`: https://github.com/saltstack/salt/pull/48054
.. _`#48057`: https://github.com/saltstack/salt/pull/48057
.. _`#48060`: https://github.com/saltstack/salt/pull/48060
.. _`#48061`: https://github.com/saltstack/salt/pull/48061
.. _`#48071`: https://github.com/saltstack/salt/pull/48071
.. _`#48075`: https://github.com/saltstack/salt/pull/48075
.. _`#48077`: https://github.com/saltstack/salt/pull/48077
.. _`#48080`: https://github.com/saltstack/salt/pull/48080
.. _`#48081`: https://github.com/saltstack/salt/pull/48081
.. _`#48088`: https://github.com/saltstack/salt/pull/48088
.. _`#48089`: https://github.com/saltstack/salt/pull/48089
.. _`#48091`: https://github.com/saltstack/salt/pull/48091
.. _`#48096`: https://github.com/saltstack/salt/pull/48096
.. _`#48098`: https://github.com/saltstack/salt/pull/48098
.. _`#48101`: https://github.com/saltstack/salt/pull/48101
.. _`#48102`: https://github.com/saltstack/salt/pull/48102
.. _`#48103`: https://github.com/saltstack/salt/pull/48103
.. _`#48104`: https://github.com/saltstack/salt/pull/48104
.. _`#48105`: https://github.com/saltstack/salt/pull/48105
.. _`#48109`: https://github.com/saltstack/salt/pull/48109
.. _`#48110`: https://github.com/saltstack/salt/issues/48110
.. _`#48113`: https://github.com/saltstack/salt/issues/48113
.. _`#48115`: https://github.com/saltstack/salt/pull/48115
.. _`#48116`: https://github.com/saltstack/salt/pull/48116
.. _`#48117`: https://github.com/saltstack/salt/pull/48117
.. _`#48122`: https://github.com/saltstack/salt/issues/48122
.. _`#48123`: https://github.com/saltstack/salt/issues/48123
.. _`#48129`: https://github.com/saltstack/salt/pull/48129
.. _`#48131`: https://github.com/saltstack/salt/pull/48131
.. _`#48133`: https://github.com/saltstack/salt/pull/48133
.. _`#48134`: https://github.com/saltstack/salt/pull/48134
.. _`#48135`: https://github.com/saltstack/salt/pull/48135
.. _`#48136`: https://github.com/saltstack/salt/pull/48136
.. _`#48140`: https://github.com/saltstack/salt/pull/48140
.. _`#48141`: https://github.com/saltstack/salt/issues/48141
.. _`#48143`: https://github.com/saltstack/salt/pull/48143
.. _`#48145`: https://github.com/saltstack/salt/issues/48145
.. _`#48146`: https://github.com/saltstack/salt/issues/48146
.. _`#48147`: https://github.com/saltstack/salt/pull/48147
.. _`#48155`: https://github.com/saltstack/salt/pull/48155
.. _`#48156`: https://github.com/saltstack/salt/pull/48156
.. _`#48157`: https://github.com/saltstack/salt/pull/48157
.. _`#48161`: https://github.com/saltstack/salt/pull/48161
.. _`#48164`: https://github.com/saltstack/salt/pull/48164
.. _`#48165`: https://github.com/saltstack/salt/pull/48165
.. _`#48166`: https://github.com/saltstack/salt/pull/48166
.. _`#48172`: https://github.com/saltstack/salt/pull/48172
.. _`#48174`: https://github.com/saltstack/salt/pull/48174
.. _`#48179`: https://github.com/saltstack/salt/pull/48179
.. _`#48184`: https://github.com/saltstack/salt/issues/48184
.. _`#48185`: https://github.com/saltstack/salt/pull/48185
.. _`#48186`: https://github.com/saltstack/salt/pull/48186
.. _`#48188`: https://github.com/saltstack/salt/pull/48188
.. _`#48189`: https://github.com/saltstack/salt/pull/48189
.. _`#48190`: https://github.com/saltstack/salt/pull/48190
.. _`#48191`: https://github.com/saltstack/salt/pull/48191
.. _`#48192`: https://github.com/saltstack/salt/pull/48192
.. _`#48201`: https://github.com/saltstack/salt/pull/48201
.. _`#48204`: https://github.com/saltstack/salt/issues/48204
.. _`#48207`: https://github.com/saltstack/salt/pull/48207
.. _`#48209`: https://github.com/saltstack/salt/pull/48209
.. _`#48210`: https://github.com/saltstack/salt/pull/48210
.. _`#48212`: https://github.com/saltstack/salt/pull/48212
.. _`#48216`: https://github.com/saltstack/salt/pull/48216
.. _`#48219`: https://github.com/saltstack/salt/pull/48219
.. _`#48226`: https://github.com/saltstack/salt/pull/48226
.. _`#48227`: https://github.com/saltstack/salt/pull/48227
.. _`#48228`: https://github.com/saltstack/salt/pull/48228
.. _`#48230`: https://github.com/saltstack/salt/issues/48230
.. _`#48232`: https://github.com/saltstack/salt/pull/48232
.. _`#48234`: https://github.com/saltstack/salt/pull/48234
.. _`#48236`: https://github.com/saltstack/salt/pull/48236
.. _`#48238`: https://github.com/saltstack/salt/pull/48238
.. _`#48242`: https://github.com/saltstack/salt/pull/48242
.. _`#48249`: https://github.com/saltstack/salt/pull/48249
.. _`#48250`: https://github.com/saltstack/salt/pull/48250
.. _`#48252`: https://github.com/saltstack/salt/pull/48252
.. _`#48258`: https://github.com/saltstack/salt/pull/48258
.. _`#48274`: https://github.com/saltstack/salt/issues/48274
.. _`#48275`: https://github.com/saltstack/salt/pull/48275
.. _`#48277`: https://github.com/saltstack/salt/issues/48277
.. _`#48279`: https://github.com/saltstack/salt/pull/48279
.. _`#48286`: https://github.com/saltstack/salt/pull/48286
.. _`#48288`: https://github.com/saltstack/salt/pull/48288
.. _`#48292`: https://github.com/saltstack/salt/pull/48292
.. _`#48293`: https://github.com/saltstack/salt/pull/48293
.. _`#48295`: https://github.com/saltstack/salt/pull/48295
.. _`#48296`: https://github.com/saltstack/salt/pull/48296
.. _`#48297`: https://github.com/saltstack/salt/pull/48297
.. _`#48301`: https://github.com/saltstack/salt/pull/48301
.. _`#48304`: https://github.com/saltstack/salt/pull/48304
.. _`#48306`: https://github.com/saltstack/salt/issues/48306
.. _`#48309`: https://github.com/saltstack/salt/pull/48309
.. _`#48310`: https://github.com/saltstack/salt/pull/48310
.. _`#48319`: https://github.com/saltstack/salt/pull/48319
.. _`#48323`: https://github.com/saltstack/salt/pull/48323
.. _`#48324`: https://github.com/saltstack/salt/pull/48324
.. _`#48326`: https://github.com/saltstack/salt/pull/48326
.. _`#48328`: https://github.com/saltstack/salt/pull/48328
.. _`#48329`: https://github.com/saltstack/salt/pull/48329
.. _`#48331`: https://github.com/saltstack/salt/pull/48331
.. _`#48332`: https://github.com/saltstack/salt/pull/48332
.. _`#48336`: https://github.com/saltstack/salt/issues/48336
.. _`#48339`: https://github.com/saltstack/salt/pull/48339
.. _`#48342`: https://github.com/saltstack/salt/issues/48342
.. _`#48345`: https://github.com/saltstack/salt/pull/48345
.. _`#48347`: https://github.com/saltstack/salt/pull/48347
.. _`#48348`: https://github.com/saltstack/salt/pull/48348
.. _`#48349`: https://github.com/saltstack/salt/pull/48349
.. _`#48352`: https://github.com/saltstack/salt/pull/48352
.. _`#48354`: https://github.com/saltstack/salt/pull/48354
.. _`#48358`: https://github.com/saltstack/salt/pull/48358
.. _`#48362`: https://github.com/saltstack/salt/pull/48362
.. _`#48363`: https://github.com/saltstack/salt/pull/48363
.. _`#48364`: https://github.com/saltstack/salt/pull/48364
.. _`#48367`: https://github.com/saltstack/salt/issues/48367
.. _`#48368`: https://github.com/saltstack/salt/pull/48368
.. _`#48375`: https://github.com/saltstack/salt/pull/48375
.. _`#48380`: https://github.com/saltstack/salt/pull/48380
.. _`#48381`: https://github.com/saltstack/salt/pull/48381
.. _`#48382`: https://github.com/saltstack/salt/pull/48382
.. _`#48383`: https://github.com/saltstack/salt/pull/48383
.. _`#48384`: https://github.com/saltstack/salt/pull/48384
.. _`#48385`: https://github.com/saltstack/salt/pull/48385
.. _`#48386`: https://github.com/saltstack/salt/pull/48386
.. _`#48388`: https://github.com/saltstack/salt/pull/48388
.. _`#48389`: https://github.com/saltstack/salt/pull/48389
.. _`#48394`: https://github.com/saltstack/salt/pull/48394
.. _`#48396`: https://github.com/saltstack/salt/pull/48396
.. _`#48398`: https://github.com/saltstack/salt/pull/48398
.. _`#48399`: https://github.com/saltstack/salt/pull/48399
.. _`#48402`: https://github.com/saltstack/salt/issues/48402
.. _`#48404`: https://github.com/saltstack/salt/pull/48404
.. _`#48405`: https://github.com/saltstack/salt/pull/48405
.. _`#48409`: https://github.com/saltstack/salt/pull/48409
.. _`#48410`: https://github.com/saltstack/salt/pull/48410
.. _`#48413`: https://github.com/saltstack/salt/pull/48413
.. _`#48416`: https://github.com/saltstack/salt/pull/48416
.. _`#48418`: https://github.com/saltstack/salt/pull/48418
.. _`#48422`: https://github.com/saltstack/salt/pull/48422
.. _`#48426`: https://github.com/saltstack/salt/pull/48426
.. _`#48428`: https://github.com/saltstack/salt/pull/48428
.. _`#48429`: https://github.com/saltstack/salt/pull/48429
.. _`#48431`: https://github.com/saltstack/salt/pull/48431
.. _`#48432`: https://github.com/saltstack/salt/pull/48432
.. _`#48433`: https://github.com/saltstack/salt/pull/48433
.. _`#48440`: https://github.com/saltstack/salt/pull/48440
.. _`#48441`: https://github.com/saltstack/salt/pull/48441
.. _`#48454`: https://github.com/saltstack/salt/pull/48454
.. _`#48471`: https://github.com/saltstack/salt/pull/48471
.. _`#48472`: https://github.com/saltstack/salt/pull/48472
.. _`#48476`: https://github.com/saltstack/salt/pull/48476
.. _`#48481`: https://github.com/saltstack/salt/pull/48481
.. _`#48487`: https://github.com/saltstack/salt/pull/48487
.. _`#48490`: https://github.com/saltstack/salt/pull/48490
.. _`#48491`: https://github.com/saltstack/salt/pull/48491
.. _`#48495`: https://github.com/saltstack/salt/pull/48495
.. _`#48496`: https://github.com/saltstack/salt/issues/48496
.. _`#48503`: https://github.com/saltstack/salt/pull/48503
.. _`#48507`: https://github.com/saltstack/salt/issues/48507
.. _`#48508`: https://github.com/saltstack/salt/pull/48508
.. _`#48512`: https://github.com/saltstack/salt/pull/48512
.. _`#48513`: https://github.com/saltstack/salt/pull/48513
.. _`#48514`: https://github.com/saltstack/salt/pull/48514
.. _`#48519`: https://github.com/saltstack/salt/issues/48519
.. _`#48520`: https://github.com/saltstack/salt/pull/48520
.. _`#48521`: https://github.com/saltstack/salt/pull/48521
.. _`#48525`: https://github.com/saltstack/salt/pull/48525
.. _`#48526`: https://github.com/saltstack/salt/pull/48526
.. _`#48527`: https://github.com/saltstack/salt/pull/48527
.. _`#48528`: https://github.com/saltstack/salt/pull/48528
.. _`#48529`: https://github.com/saltstack/salt/pull/48529
.. _`#48533`: https://github.com/saltstack/salt/pull/48533
.. _`#48534`: https://github.com/saltstack/salt/pull/48534
.. _`#48535`: https://github.com/saltstack/salt/pull/48535
.. _`#48536`: https://github.com/saltstack/salt/issues/48536
.. _`#48542`: https://github.com/saltstack/salt/issues/48542
.. _`#48547`: https://github.com/saltstack/salt/pull/48547
.. _`#48550`: https://github.com/saltstack/salt/pull/48550
.. _`#48551`: https://github.com/saltstack/salt/pull/48551
.. _`#48552`: https://github.com/saltstack/salt/pull/48552
.. _`#48553`: https://github.com/saltstack/salt/pull/48553
.. _`#48555`: https://github.com/saltstack/salt/pull/48555
.. _`#48557`: https://github.com/saltstack/salt/issues/48557
.. _`#48558`: https://github.com/saltstack/salt/pull/48558
.. _`#48561`: https://github.com/saltstack/salt/pull/48561
.. _`#48564`: https://github.com/saltstack/salt/pull/48564
.. _`#48579`: https://github.com/saltstack/salt/pull/48579
.. _`#48580`: https://github.com/saltstack/salt/pull/48580
.. _`#48582`: https://github.com/saltstack/salt/pull/48582
.. _`#48583`: https://github.com/saltstack/salt/pull/48583
.. _`#48584`: https://github.com/saltstack/salt/pull/48584
.. _`#48585`: https://github.com/saltstack/salt/pull/48585
.. _`#48587`: https://github.com/saltstack/salt/pull/48587
.. _`#48588`: https://github.com/saltstack/salt/pull/48588
.. _`#48593`: https://github.com/saltstack/salt/pull/48593
.. _`#48594`: https://github.com/saltstack/salt/pull/48594
.. _`#48610`: https://github.com/saltstack/salt/pull/48610
.. _`#48614`: https://github.com/saltstack/salt/pull/48614
.. _`#48625`: https://github.com/saltstack/salt/pull/48625
.. _`#48628`: https://github.com/saltstack/salt/pull/48628
.. _`#48630`: https://github.com/saltstack/salt/pull/48630
.. _`#48633`: https://github.com/saltstack/salt/pull/48633
.. _`#48634`: https://github.com/saltstack/salt/pull/48634
.. _`#48635`: https://github.com/saltstack/salt/pull/48635
.. _`#48636`: https://github.com/saltstack/salt/pull/48636
.. _`#48638`: https://github.com/saltstack/salt/pull/48638
.. _`#48647`: https://github.com/saltstack/salt/pull/48647
.. _`#48648`: https://github.com/saltstack/salt/pull/48648
.. _`#48650`: https://github.com/saltstack/salt/pull/48650
.. _`#48651`: https://github.com/saltstack/salt/pull/48651
.. _`#48653`: https://github.com/saltstack/salt/pull/48653
.. _`#48656`: https://github.com/saltstack/salt/pull/48656
.. _`#48658`: https://github.com/saltstack/salt/pull/48658
.. _`#48659`: https://github.com/saltstack/salt/issues/48659
.. _`#48662`: https://github.com/saltstack/salt/pull/48662
.. _`#48663`: https://github.com/saltstack/salt/pull/48663
.. _`#48664`: https://github.com/saltstack/salt/pull/48664
.. _`#48665`: https://github.com/saltstack/salt/issues/48665
.. _`#48670`: https://github.com/saltstack/salt/pull/48670
.. _`#48671`: https://github.com/saltstack/salt/pull/48671
.. _`#48672`: https://github.com/saltstack/salt/pull/48672
.. _`#48673`: https://github.com/saltstack/salt/pull/48673
.. _`#48675`: https://github.com/saltstack/salt/pull/48675
.. _`#48676`: https://github.com/saltstack/salt/issues/48676
.. _`#48677`: https://github.com/saltstack/salt/issues/48677
.. _`#48678`: https://github.com/saltstack/salt/pull/48678
.. _`#48685`: https://github.com/saltstack/salt/pull/48685
.. _`#48689`: https://github.com/saltstack/salt/pull/48689
.. _`#48691`: https://github.com/saltstack/salt/pull/48691
.. _`#48699`: https://github.com/saltstack/salt/pull/48699
.. _`#48700`: https://github.com/saltstack/salt/pull/48700
.. _`#48710`: https://github.com/saltstack/salt/pull/48710
.. _`#48711`: https://github.com/saltstack/salt/pull/48711
.. _`#48714`: https://github.com/saltstack/salt/pull/48714
.. _`#48715`: https://github.com/saltstack/salt/pull/48715
.. _`#48718`: https://github.com/saltstack/salt/pull/48718
.. _`#48719`: https://github.com/saltstack/salt/pull/48719
.. _`#48720`: https://github.com/saltstack/salt/pull/48720
.. _`#48726`: https://github.com/saltstack/salt/pull/48726
.. _`#48727`: https://github.com/saltstack/salt/pull/48727
.. _`#48731`: https://github.com/saltstack/salt/pull/48731
.. _`#48742`: https://github.com/saltstack/salt/pull/48742
.. _`#48743`: https://github.com/saltstack/salt/pull/48743
.. _`#48744`: https://github.com/saltstack/salt/pull/48744
.. _`#48747`: https://github.com/saltstack/salt/pull/48747
.. _`#48749`: https://github.com/saltstack/salt/pull/48749
.. _`#48752`: https://github.com/saltstack/salt/pull/48752
.. _`#48753`: https://github.com/saltstack/salt/pull/48753
.. _`#48754`: https://github.com/saltstack/salt/pull/48754
.. _`#48756`: https://github.com/saltstack/salt/pull/48756
.. _`#48757`: https://github.com/saltstack/salt/pull/48757
.. _`#48760`: https://github.com/saltstack/salt/pull/48760
.. _`#48765`: https://github.com/saltstack/salt/pull/48765
.. _`#48769`: https://github.com/saltstack/salt/pull/48769
.. _`#48771`: https://github.com/saltstack/salt/pull/48771
.. _`#48777`: https://github.com/saltstack/salt/issues/48777
.. _`#48788`: https://github.com/saltstack/salt/pull/48788
.. _`#48789`: https://github.com/saltstack/salt/pull/48789
.. _`#48791`: https://github.com/saltstack/salt/pull/48791
.. _`#48795`: https://github.com/saltstack/salt/pull/48795
.. _`#48796`: https://github.com/saltstack/salt/pull/48796
.. _`#48799`: https://github.com/saltstack/salt/pull/48799
.. _`#48803`: https://github.com/saltstack/salt/pull/48803
.. _`#48804`: https://github.com/saltstack/salt/pull/48804
.. _`#48814`: https://github.com/saltstack/salt/pull/48814
.. _`#48822`: https://github.com/saltstack/salt/pull/48822
.. _`#48824`: https://github.com/saltstack/salt/pull/48824
.. _`#48830`: https://github.com/saltstack/salt/pull/48830
.. _`#48834`: https://github.com/saltstack/salt/pull/48834
.. _`#48836`: https://github.com/saltstack/salt/pull/48836
.. _`#48838`: https://github.com/saltstack/salt/pull/48838
.. _`#48840`: https://github.com/saltstack/salt/pull/48840
.. _`#48843`: https://github.com/saltstack/salt/pull/48843
.. _`#48844`: https://github.com/saltstack/salt/pull/48844
.. _`#48847`: https://github.com/saltstack/salt/pull/48847
.. _`#48853`: https://github.com/saltstack/salt/pull/48853
.. _`#48855`: https://github.com/saltstack/salt/pull/48855
.. _`#48856`: https://github.com/saltstack/salt/issues/48856
.. _`#48863`: https://github.com/saltstack/salt/pull/48863
.. _`#48866`: https://github.com/saltstack/salt/pull/48866
.. _`#48867`: https://github.com/saltstack/salt/pull/48867
.. _`#48868`: https://github.com/saltstack/salt/pull/48868
.. _`#48869`: https://github.com/saltstack/salt/pull/48869
.. _`#48871`: https://github.com/saltstack/salt/pull/48871
.. _`#48876`: https://github.com/saltstack/salt/pull/48876
.. _`#48877`: https://github.com/saltstack/salt/pull/48877
.. _`#48880`: https://github.com/saltstack/salt/issues/48880
.. _`#48883`: https://github.com/saltstack/salt/pull/48883
.. _`#48884`: https://github.com/saltstack/salt/pull/48884
.. _`#48885`: https://github.com/saltstack/salt/pull/48885
.. _`#48888`: https://github.com/saltstack/salt/pull/48888
.. _`#48890`: https://github.com/saltstack/salt/pull/48890
.. _`#48891`: https://github.com/saltstack/salt/pull/48891
.. _`#48893`: https://github.com/saltstack/salt/pull/48893
.. _`#48896`: https://github.com/saltstack/salt/pull/48896
.. _`#48897`: https://github.com/saltstack/salt/pull/48897
.. _`#48898`: https://github.com/saltstack/salt/pull/48898
.. _`#48899`: https://github.com/saltstack/salt/pull/48899
.. _`#48900`: https://github.com/saltstack/salt/pull/48900
.. _`#48901`: https://github.com/saltstack/salt/pull/48901
.. _`#48903`: https://github.com/saltstack/salt/pull/48903
.. _`#48904`: https://github.com/saltstack/salt/pull/48904
.. _`#48912`: https://github.com/saltstack/salt/pull/48912
.. _`#48920`: https://github.com/saltstack/salt/pull/48920
.. _`#48921`: https://github.com/saltstack/salt/pull/48921
.. _`#48922`: https://github.com/saltstack/salt/pull/48922
.. _`#48926`: https://github.com/saltstack/salt/pull/48926
.. _`#48928`: https://github.com/saltstack/salt/pull/48928
.. _`#48929`: https://github.com/saltstack/salt/pull/48929
.. _`#48932`: https://github.com/saltstack/salt/pull/48932
.. _`#48933`: https://github.com/saltstack/salt/pull/48933
.. _`#48934`: https://github.com/saltstack/salt/pull/48934
.. _`#48935`: https://github.com/saltstack/salt/pull/48935
.. _`#48940`: https://github.com/saltstack/salt/pull/48940
.. _`#48941`: https://github.com/saltstack/salt/pull/48941
.. _`#48943`: https://github.com/saltstack/salt/pull/48943
.. _`#48950`: https://github.com/saltstack/salt/pull/48950
.. _`#48955`: https://github.com/saltstack/salt/pull/48955
.. _`#48956`: https://github.com/saltstack/salt/pull/48956
.. _`#48957`: https://github.com/saltstack/salt/pull/48957
.. _`#48959`: https://github.com/saltstack/salt/pull/48959
.. _`#48960`: https://github.com/saltstack/salt/pull/48960
.. _`#48962`: https://github.com/saltstack/salt/pull/48962
.. _`#48968`: https://github.com/saltstack/salt/pull/48968
.. _`#48970`: https://github.com/saltstack/salt/pull/48970
.. _`#48976`: https://github.com/saltstack/salt/pull/48976
.. _`#48978`: https://github.com/saltstack/salt/pull/48978
.. _`#48979`: https://github.com/saltstack/salt/pull/48979
.. _`#48981`: https://github.com/saltstack/salt/pull/48981
.. _`#48982`: https://github.com/saltstack/salt/pull/48982
.. _`#48985`: https://github.com/saltstack/salt/pull/48985
.. _`#48987`: https://github.com/saltstack/salt/pull/48987
.. _`#48988`: https://github.com/saltstack/salt/pull/48988
.. _`#48996`: https://github.com/saltstack/salt/issues/48996
.. _`#48997`: https://github.com/saltstack/salt/pull/48997
.. _`#48999`: https://github.com/saltstack/salt/pull/48999
.. _`#49002`: https://github.com/saltstack/salt/pull/49002
.. _`#49003`: https://github.com/saltstack/salt/pull/49003
.. _`#49004`: https://github.com/saltstack/salt/pull/49004
.. _`#49010`: https://github.com/saltstack/salt/pull/49010
.. _`#49011`: https://github.com/saltstack/salt/pull/49011
.. _`#49018`: https://github.com/saltstack/salt/issues/49018
.. _`#49019`: https://github.com/saltstack/salt/pull/49019
.. _`#49020`: https://github.com/saltstack/salt/pull/49020
.. _`#49021`: https://github.com/saltstack/salt/pull/49021
.. _`#49022`: https://github.com/saltstack/salt/pull/49022
.. _`#49023`: https://github.com/saltstack/salt/pull/49023
.. _`#49024`: https://github.com/saltstack/salt/pull/49024
.. _`#49026`: https://github.com/saltstack/salt/pull/49026
.. _`#49030`: https://github.com/saltstack/salt/pull/49030
.. _`#49033`: https://github.com/saltstack/salt/pull/49033
.. _`#49034`: https://github.com/saltstack/salt/pull/49034
.. _`#49036`: https://github.com/saltstack/salt/pull/49036
.. _`#49038`: https://github.com/saltstack/salt/pull/49038
.. _`#49041`: https://github.com/saltstack/salt/pull/49041
.. _`#49042`: https://github.com/saltstack/salt/pull/49042
.. _`#49044`: https://github.com/saltstack/salt/pull/49044
.. _`#49045`: https://github.com/saltstack/salt/pull/49045
.. _`#49046`: https://github.com/saltstack/salt/pull/49046
.. _`#49050`: https://github.com/saltstack/salt/pull/49050
.. _`#49051`: https://github.com/saltstack/salt/pull/49051
.. _`#49052`: https://github.com/saltstack/salt/pull/49052
.. _`#49055`: https://github.com/saltstack/salt/pull/49055
.. _`#49059`: https://github.com/saltstack/salt/pull/49059
.. _`#49061`: https://github.com/saltstack/salt/pull/49061
.. _`#49062`: https://github.com/saltstack/salt/pull/49062
.. _`#49071`: https://github.com/saltstack/salt/pull/49071
.. _`#49075`: https://github.com/saltstack/salt/pull/49075
.. _`#49077`: https://github.com/saltstack/salt/pull/49077
.. _`#49081`: https://github.com/saltstack/salt/issues/49081
.. _`#49083`: https://github.com/saltstack/salt/pull/49083
.. _`#49084`: https://github.com/saltstack/salt/pull/49084
.. _`#49085`: https://github.com/saltstack/salt/pull/49085
.. _`#49086`: https://github.com/saltstack/salt/pull/49086
.. _`#49087`: https://github.com/saltstack/salt/pull/49087
.. _`#49088`: https://github.com/saltstack/salt/pull/49088
.. _`#49090`: https://github.com/saltstack/salt/pull/49090
.. _`#49096`: https://github.com/saltstack/salt/pull/49096
.. _`#49099`: https://github.com/saltstack/salt/pull/49099
.. _`#49103`: https://github.com/saltstack/salt/pull/49103
.. _`#49109`: https://github.com/saltstack/salt/pull/49109
.. _`#49110`: https://github.com/saltstack/salt/pull/49110
.. _`#49118`: https://github.com/saltstack/salt/pull/49118
.. _`#49132`: https://github.com/saltstack/salt/pull/49132
.. _`#49137`: https://github.com/saltstack/salt/pull/49137
.. _`#49142`: https://github.com/saltstack/salt/pull/49142
.. _`#49167`: https://github.com/saltstack/salt/pull/49167
.. _`#49171`: https://github.com/saltstack/salt/pull/49171
.. _`#49172`: https://github.com/saltstack/salt/pull/49172
.. _`#49173`: https://github.com/saltstack/salt/pull/49173
.. _`#49180`: https://github.com/saltstack/salt/pull/49180
.. _`#49182`: https://github.com/saltstack/salt/pull/49182
.. _`#49186`: https://github.com/saltstack/salt/pull/49186
.. _`#49192`: https://github.com/saltstack/salt/pull/49192
.. _`#49197`: https://github.com/saltstack/salt/pull/49197
.. _`#49236`: https://github.com/saltstack/salt/pull/49236
.. _`#49239`: https://github.com/saltstack/salt/pull/49239
.. _`#49240`: https://github.com/saltstack/salt/pull/49240
.. _`#49241`: https://github.com/saltstack/salt/pull/49241
.. _`#49243`: https://github.com/saltstack/salt/pull/49243
.. _`#49244`: https://github.com/saltstack/salt/pull/49244
.. _`#49245`: https://github.com/saltstack/salt/pull/49245
.. _`#49258`: https://github.com/saltstack/salt/pull/49258
.. _`#49270`: https://github.com/saltstack/salt/pull/49270
.. _`#49291`: https://github.com/saltstack/salt/pull/49291
.. _`#49294`: https://github.com/saltstack/salt/pull/49294
.. _`#49299`: https://github.com/saltstack/salt/pull/49299
.. _`#49302`: https://github.com/saltstack/salt/pull/49302
.. _`#49303`: https://github.com/saltstack/salt/pull/49303
.. _`#49311`: https://github.com/saltstack/salt/pull/49311
.. _`#49313`: https://github.com/saltstack/salt/pull/49313
.. _`#49322`: https://github.com/saltstack/salt/pull/49322
.. _`#49323`: https://github.com/saltstack/salt/pull/49323
.. _`#49331`: https://github.com/saltstack/salt/pull/49331
.. _`#49345`: https://github.com/saltstack/salt/pull/49345
.. _`#49347`: https://github.com/saltstack/salt/pull/49347
.. _`#49356`: https://github.com/saltstack/salt/pull/49356
.. _`#49361`: https://github.com/saltstack/salt/pull/49361
.. _`#49362`: https://github.com/saltstack/salt/pull/49362
.. _`#49363`: https://github.com/saltstack/salt/pull/49363
.. _`#49364`: https://github.com/saltstack/salt/pull/49364
.. _`#49365`: https://github.com/saltstack/salt/pull/49365
.. _`#49368`: https://github.com/saltstack/salt/pull/49368
.. _`#49400`: https://github.com/saltstack/salt/pull/49400
.. _`#49440`: https://github.com/saltstack/salt/pull/49440
.. _`#49441`: https://github.com/saltstack/salt/pull/49441
.. _`#49442`: https://github.com/saltstack/salt/pull/49442
.. _`#49443`: https://github.com/saltstack/salt/pull/49443
.. _`#49444`: https://github.com/saltstack/salt/pull/49444
.. _`#49445`: https://github.com/saltstack/salt/pull/49445
.. _`#49446`: https://github.com/saltstack/salt/pull/49446
.. _`#49448`: https://github.com/saltstack/salt/pull/49448
.. _`#49449`: https://github.com/saltstack/salt/pull/49449
.. _`#49451`: https://github.com/saltstack/salt/pull/49451
.. _`#49467`: https://github.com/saltstack/salt/pull/49467
.. _`#49468`: https://github.com/saltstack/salt/pull/49468
.. _`#49499`: https://github.com/saltstack/salt/pull/49499
.. _`#49524`: https://github.com/saltstack/salt/pull/49524
.. _`#49535`: https://github.com/saltstack/salt/pull/49535
.. _`#49536`: https://github.com/saltstack/salt/pull/49536
.. _`#49542`: https://github.com/saltstack/salt/pull/49542
.. _`#49548`: https://github.com/saltstack/salt/pull/49548
.. _`#49550`: https://github.com/saltstack/salt/pull/49550
.. _`#49580`: https://github.com/saltstack/salt/pull/49580
.. _`#49589`: https://github.com/saltstack/salt/pull/49589
.. _`#49594`: https://github.com/saltstack/salt/pull/49594
.. _`#49632`: https://github.com/saltstack/salt/pull/49632
.. _`#49633`: https://github.com/saltstack/salt/pull/49633
.. _`#49641`: https://github.com/saltstack/salt/pull/49641
.. _`#49655`: https://github.com/saltstack/salt/pull/49655
.. _`#49662`: https://github.com/saltstack/salt/pull/49662
.. _`AmbicaY`: https://github.com/AmbicaY
.. _`Ch3LL`: https://github.com/Ch3LL
.. _`ChristianBeer`: https://github.com/ChristianBeer
.. _`FedericoCeratto`: https://github.com/FedericoCeratto
.. _`FedericoOlivieri`: https://github.com/FedericoOlivieri
.. _`JonGriggs`: https://github.com/JonGriggs
.. _`JuanManuelVizcainoAbad`: https://github.com/JuanManuelVizcainoAbad
.. _`KaiSforza`: https://github.com/KaiSforza
.. _`L4rS6`: https://github.com/L4rS6
.. _`Lothiraldan`: https://github.com/Lothiraldan
.. _`Lutseslav`: https://github.com/Lutseslav
.. _`MikeSpaceG`: https://github.com/MikeSpaceG
.. _`MorphBonehunter`: https://github.com/MorphBonehunter
.. _`OrlandoArcapix`: https://github.com/OrlandoArcapix
.. _`Poil`: https://github.com/Poil
.. _`RobertFach`: https://github.com/RobertFach
.. _`The-Loeki`: https://github.com/The-Loeki
.. _`Timandes`: https://github.com/Timandes
.. _`Vaelatern`: https://github.com/Vaelatern
.. _`admd`: https://github.com/admd
.. _`aesposito91`: https://github.com/aesposito91
.. _`andygabby`: https://github.com/andygabby
.. _`arthurlogilab`: https://github.com/arthurlogilab
.. _`asenci`: https://github.com/asenci
.. _`astorath`: https://github.com/astorath
.. _`azelezni`: https://github.com/azelezni
.. _`babs`: https://github.com/babs
.. _`bbczeuz`: https://github.com/bbczeuz
.. _`bbinet`: https://github.com/bbinet
.. _`brejoc`: https://github.com/brejoc
.. _`c-wicklein`: https://github.com/c-wicklein
.. _`calvinhp`: https://github.com/calvinhp
.. _`cro`: https://github.com/cro
.. _`daa`: https://github.com/daa
.. _`damntoken`: https://github.com/damntoken
.. _`davidscholberg`: https://github.com/davidscholberg
.. _`dgengtek`: https://github.com/dgengtek
.. _`djneades`: https://github.com/djneades
.. _`dmurphy18`: https://github.com/dmurphy18
.. _`dstoliker`: https://github.com/dstoliker
.. _`dubb-b`: https://github.com/dubb-b
.. _`dvenckus`: https://github.com/dvenckus
.. _`dwoz`: https://github.com/dwoz
.. _`eliasp`: https://github.com/eliasp
.. _`elsmorian`: https://github.com/elsmorian
.. _`emersonveenstra`: https://github.com/emersonveenstra
.. _`ender8282`: https://github.com/ender8282
.. _`ezh`: https://github.com/ezh
.. _`frogunder`: https://github.com/frogunder
.. _`gaetanquentin`: https://github.com/gaetanquentin
.. _`garethgreenaway`: https://github.com/garethgreenaway
.. _`ghost`: https://github.com/ghost
.. _`github-abcde`: https://github.com/github-abcde
.. _`gtmanfred`: https://github.com/gtmanfred
.. _`guettli`: https://github.com/guettli
.. _`icy`: https://github.com/icy
.. _`ipmb`: https://github.com/ipmb
.. _`isbm`: https://github.com/isbm
.. _`isdig`: https://github.com/isdig
.. _`jeduardo`: https://github.com/jeduardo
.. _`jeffclay`: https://github.com/jeffclay
.. _`jils2013`: https://github.com/jils2013
.. _`jonasgit`: https://github.com/jonasgit
.. _`kt97679`: https://github.com/kt97679
.. _`kuetrzi`: https://github.com/kuetrzi
.. _`linoplt`: https://github.com/linoplt
.. _`lomeroe`: https://github.com/lomeroe
.. _`lusche`: https://github.com/lusche
.. _`mateiw`: https://github.com/mateiw
.. _`max-arnold`: https://github.com/max-arnold
.. _`maxim-sermin`: https://github.com/maxim-sermin
.. _`meaksh`: https://github.com/meaksh
.. _`mmulqueen`: https://github.com/mmulqueen
.. _`morganwillcock`: https://github.com/morganwillcock
.. _`mtorromeo`: https://github.com/mtorromeo
.. _`nullify005`: https://github.com/nullify005
.. _`pasmon`: https://github.com/pasmon
.. _`paulcollinsiii`: https://github.com/paulcollinsiii
.. _`paulfanelli`: https://github.com/paulfanelli
.. _`pritambaral`: https://github.com/pritambaral
.. _`racooper`: https://github.com/racooper
.. _`rallytime`: https://github.com/rallytime
.. _`rares-pop`: https://github.com/rares-pop
.. _`rmarchei`: https://github.com/rmarchei
.. _`roskens`: https://github.com/roskens
.. _`rosscdh`: https://github.com/rosscdh
.. _`saltstack/salt-jenkins#1075`: https://github.com/saltstack/salt-jenkins/issues/1075
.. _`sizgiyaev`: https://github.com/sizgiyaev
.. _`sjorge`: https://github.com/sjorge
.. _`t0fik`: https://github.com/t0fik
.. _`te-af-github`: https://github.com/te-af-github
.. _`terminalmage`: https://github.com/terminalmage
.. _`thuhak`: https://github.com/thuhak
.. _`travispaul`: https://github.com/travispaul
.. _`twangboy`: https://github.com/twangboy
.. _`vinian`: https://github.com/vinian
.. _`weswhet`: https://github.com/weswhet
.. _`whytewolf`: https://github.com/whytewolf
.. _`zerthimon`: https://github.com/zerthimon
