mirror of
https://github.com/valitydev/salt.git
synced 2024-11-06 08:35:21 +00:00
3184168365
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.
29 lines
1.0 KiB
Python
Executable File
29 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
'''
|
|
This script is used to kick off a salt proxy minion daemon
|
|
'''
|
|
|
|
from __future__ import absolute_import
|
|
import salt.utils.platform
|
|
from salt.scripts import salt_proxy
|
|
from multiprocessing import freeze_support
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if salt.utils.platform.is_windows():
|
|
# Since this file does not have a '.py' extension, when running on
|
|
# Windows, spawning any addional processes will fail due to Python
|
|
# not being able to load this 'module' in the new process.
|
|
# Work around this by creating a '.pyc' file which will enable the
|
|
# spawned process to load this 'module' and proceed.
|
|
import os.path
|
|
import py_compile
|
|
cfile = os.path.splitext(__file__)[0] + '.pyc'
|
|
if not os.path.exists(cfile):
|
|
py_compile.compile(__file__, cfile)
|
|
# This handles the bootstrapping code that is included with frozen
|
|
# scripts. It is a no-op on unfrozen code.
|
|
freeze_support()
|
|
salt_proxy()
|