* Create win_functions utility
- Create win_verify_env to create directories for windows minion
and master. Uses functions from win_functions
- Fix stacktrace when minion starts when there's already a minion
running. os.getppid doesn't work in windows. Created a function
in win_functions to duplicate that functionality.
* Fix permissions for PKI dir
* Fix some lint issues
* Fix one more lint item
* Fix win_verify_env for tests
* Fix duplicate import, incorrect virtual name
* Fix permissions
salt/fileclient.py:
- For `RemoteClient.get_file`, sometimes `self.channel` is
a `salt.filesystem.FSChan` object. When this is the case, it is
not getting the data from a remote system, so the returned dict
keys are already string objects (as opposed to when getting them
remotely, the dict keys are bytes objects due to raw mode). To
account for this, convert all the top-level keys in the returned
dict to strings so that the logic may correctly process them.
Signed-off-by: Sergey Kizunov <sergey.kizunov@ni.com>
* Rewrite service.get_all
* Add service.info
* Add try/except for service not found
* Simplify raise error
* Add lookup dicts for service.info
* Fix lookup dictionaries
* Add Description to service.info
* Add additional status details
* Add service.modify function
* Fix _get_service_handles function
* Fix modify function, transition others
* Modified enable, disable, enabled, and disabled
* Fix service.disable
* Add documentation
* Find mismatched case service names
* Fix some lint
* Fix unit tests
* Fix lint in win_service_test
* Skip tests that will fail when WINAPI not available
* Preserve existing, unspecified network settings
* When building the network configuration, retain any existing
settings that are not explicitly specified by the user.
* Also adds support to the network template for the NETWORKING_IPV6
configuration setting.
Fixes#33006
* Gate new behavior behind param `retain_settings`
Add a new parameter, `retain_settings`, to gate the new behavior.
If this parameter is False (the default), the function will use the
previous behavior of removing unspecified network settings.
* Add note to network state about the new param
In the case where a user does not have the LANG env set,
Python can't figure out how to encode Unicode during a popen call.
I could not find any combination of tricks, including setting the encoding
or the locale or the environment variable itself in the call to popen that
would mitigate this issue. This may well be a bug in the Python stdlib itself.
* Add run_on_start docs to schedule.rst (#32958)
Fixes#22580
* Backport #33021 manually to 2015.5 (#33044)
* Saltfile with pillar tests (#33045)
* add file.managed with pillar data tests
* do not require git for other tests
* Whitespace...
* modules.mac_assistive int tests: wrap args in list
* modules.mac_assistive.install: match schema on El Capitan
* modules.mac_assistive: remove redundant LooseVersion
* modules.mac_assistive unit tests: mock __grains__
* win_network.ping: add timeout and return_boolean
* win_network.ping: divide timeout by tries
Divide timeout by tries to mimic BSD behaviour. Specifying
a timeout of 10 seconds would take a Windows minion four times
longer than Linux to return when a target could not be reached.
* win_network.ping: minor doc formatting
Sometimes, when the salt-master exits, it will leave some `MWorker`
processes running. When you try to restart salt-master, you will get
errors telling you that some ports are in use (due to the leftover
`MWorker` processes) and it will fail to fully start up.
salt/utils/process.py:
- In `ProcessManager.send_signal_to_processes`, on Windows don't
send the `SIGTERM` or `SIGINT` signals to subprocesses. The reason
is explained in the inline comments.
- In `ProcessManager.send_signal_to_processes`, rename arg `signal` to
`signal_` because it collides with module `signal` and breaks when
the `in` check was added to test if the signal is `SIGTERM` or `SIGINT`.
- On Windows, when `os.kill` fails because the process no longer exists,
`OSError` is returned with errno of `EACCES`, not `ESRCH` like on other
platforms. Modified the code to account for this.
- In `ProcessManager.kill_children`, only call `taskkill` from the main
process, not any sub-processes. It has been observed that occasionally
there are zombie `taskkill` processes left over, probably due to a race
condition when both are run simultaneously from different processes.
Since the main process will kill all the other process trees,
sub-processes don't need to do anything.
Signed-off-by: Sergey Kizunov <sergey.kizunov@ni.com>