Added a new Telegram module, which allows to send a message via Telegram
using the Telegram Bot API. The commit also includes:
- Update for the Telegram returner (merged in #44148); the Telegram
returner now fully utilizes the Telegram module.
- Update to the documentation in order to add the Telegram module to the
list list of all modules.
- Updated Telegram returner test.
- New Telegram module test.
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
* Fix master hanging after a request from minion with removed key. (#33333)
* ZMQ monitor for MWorker connections.
* Reauth minion if the key was removed on the master side.
* Allow concurrency mode in state runs if using sudo (#33325)
Closes#30130
* Disambiguate non-exact matches when checking if sysv service is enabled (#33324)
Fixes#33323
* remove redundant, incorrect sudo_runas config documentation (#33318)
* remove sudo_runas documentation
`sudo_runas` was renamed to `sudo_user` and the documentation was not
updated accordingly.
* conf/minion: update sudo_user description
The description from sudo_runas was better.
* import ps from psutil_compat in beacons (#33334)
* beacons.network_info: import gate psutil
* beacons.ps: import gate psutil
* Add docs for mine_functions config var (#33326)
* Add docs for mine_functions config var
* Note that mine_enabled essentially just doesn't add the mine
update function to the scheduler.
* Bp 28467 calm mine (#33327)
* make minion mine update behavior more configurable
* Add docs for mine_functions config var
* Remove config dup from mine config options
Refs #28467
* 2015.8 does not have _DFLT_MULTIPROCESSING_MODE
* This won't be in until 2015.8.10.
* Fix network.managed for windows (#33312)
* Fix some link errors in the test writing tutorial (#33347)
* Describes parameters in register_instances function (#33339)
* Fix UnboundLocalError in git.latest (#33340)
Resolves#32260.
* Expanded documentation for boto_elb state and module (#33341)
* Describes what happens when the CNAME parameter is given.
* Describes what the recognized attributes are for for ELBs.
* Properly detect newer Linux Mint distros (#33359)
* Properly detect newer Linux Mint distros
LMDE 2 and Linux Mint 17.3 changed the DISTRIB_ID in /etc/lsb-release to
``LinuxMint``, breaking OS detection for these distros.
This commit fixes that by adding an entry to the OS_NAME_MAP in the core
grains.
* Remove LinuxMint os_family from aptpkg.py
It is no longer necessary as the distro is now detected properly, which
will lead to an os_family of Debian.
* Update job_cache and keep_jobs docs to be more specific to their behavior (#33328)
* Update job_cache and keep_jobs docs to be more specific to their behavior
Also fixed a bug discovered when investigating job_cache/keep_jobs functionality
where the jid directory and files were removed by the cache cleaner, but not the
original jid clash detection directory created in /var/cache/salt/master/jobs/.
Fixes#29286
* Add testcase for the changes in the local_cache.clean_old_jobs func
* Mark tests as destructive
* Put destructive test decorator in correct location
* Remove mentions of windows not supporting pkgs param (#33361)
Fixes#33313
* Updates docs version to 2015.8.9
Adds note regarding the os grain on Mint Linux
Adds an FAQ regarding grains that change due to upstream changes
* revved 2015.8 branch to .9 in version selector
* Add initscripts, SystemD service units and environment files for Debian (#32857)
* Add note to docs about api settings for Hipchat API v2 (#33365)
Fixes#27779
* Add win_pkg to list of modules that support "version" in pkg.installed (#33362)
Fixes#32913
* Add note about name parameter in git_pillar docs (#33369)
Fixes#27737
* Better YAML syntax error handling (#33375)
Closes#26574
* Improve doc clarity for disable_modules documentation (#33379)
* Improve doc clarity for disable_modules documentation
* Additional clarification on blacklisted name
* maintain the fallabck because I am totally sick of this crap
* blast, put the try/except int he right place
* restore whitespace
* Fix traceback in logging for config validation (#33386)
* 2015.8.10 release notes
* Sync pillarstack to latest upstream version (#33391)
* Don't lay down all available opts (#33385)
* Don't lay down all available opts
* We need at least one opt in there
* Condense defaults
* Put the default hash type back
* Check rendered YAML for invalid keys
PyYAML will for some reason allow improper YAML, specifically double
curly-braces like ``{{ }}``, to be formed into an unhashable dict (that
is, one with a dict as a key). This commit will change the YAML renderer
such that the rendered data is recursively checked for keys that are
dicts, and raises an SaltRenderError if such a key is encountered.
Resolves#33073.
* Fix smtp returner test
This test was using jinja placeholders but was not passing the template
through the jinja renderer. This commit adds the use of the jinja
renderer to this test to fix the failure caused by the addition of
verification of the loaded YAML inthe previous commit.
fixing lint issues
moving the get_options function into a utils.py under returners. previous attempt at using a call to the salt config module doesn't work if the returner is called from the scheduler.
adding missing docstring
Unit tests were failing for SMTP returner because __opts__ was not available. Ensuring it's available, empty, if it doesn't already exist.
removing the check and population with an empty dict for __salt__ and __opts__. Adding an empty __opts__ to the smtp returner unit tests.