* git.latest: fail gracefully for misconfigured remote repo
When the remote repo's HEAD refers to a nonexistent ref, this was
causing a traceback when we tried to check if the upstream tracking
branch needed to be changed after cloning the repo. This commit fixes
this traceback by gracefully failing the state when the remote HEAD is
not present in the ``git ls-remote`` output, but the desired remote
revision doesn't exist.
Additionally, a similar graceful failure now happens if the state is run
again after we gracefully fail the first time, and we need to set the
tracking branch. Trying to set the tracking branch when there is no
local branch would fail with an ambiguous error like "fatal: branch
'master' does not exist", so before we even attempt to set the tracking
branch, the state is failed with a more descriptive comment.
* Add integration test for #36242
The test that runs these states is testing for behavior that was
obsoleted by virtualenv 13.0. Ensure that we have older virtualenv
available, and then create a venv with that older version. Use the
2nd virtualenv to attempt the "weird" install.
* Fixing integration tests if azure is not present
* Fixing integration tests failures if 'git' command is missing
Skip git state integration tests if 'git' does not exists
Prevent OSError if 'git' command not found during _git_version()
The test suite actually has a ``prod`` env, but this test only considers
the ``base`` env. If a test is run which requests a file (or just the
file/dir/symlink/... list) from the ``prod`` env, then this will result
in the ``prod`` env's file list caches being present, and they will be
removed when the ``fileserver.clear_file_list_cache`` runner is
executed, showing up in the return data and causing the test to fail.
This tweak to the test ensures that we will always have a file list
cache for ``prod`` present, and adjusts the necessary asserts in the
test to expect the ``prod`` env in the return data from the runner.
* Fix PillarModuleTest::test_pillar_items: 'info' does not exist in pillar
* Fixing integration tests if azure is not present
* Fixing integration tests failures if 'git' command is missing
Skip git state integration tests if 'git' does not exists
Prevent OSError if 'git' command not found during _git_version()
The tests that return files, symlinks, directories, and empty dirs were
all only testing that the type of the return data was the same as what
was expected. By not testing the content, we overlooked a corner case in
which backends passed into the fileserver as a Python list would not be
handled properly. This has since been fixed in PR #36244, but these
tests will help keep this sort of issue from regressing.
* Fix signal handling
We had a little mix-up with the args ordering for our signal handling.
This sends the proper signal to processes on cleanup.
I have also temporarily disabled the pytest engines because they were
causing the minions to try to to connect to a master IPC socket which could not be found.
This put the minions into a continual futex state which was not playing well with kill sigs.
* Lint
* Change "unknown" user to "some_unknown_user_xyz" since "unknown"
*is* a valid user
* Add timeout to proxy test_exit_status_no_proxyid() since a known
failure case is to infinitely loop with an error.
* Always force the source code tree under test to be the first entry
in PYTHONPATH (excluding verbatim_env)
Using a salt.runner.Runner() instance to run this test has exposed a
problem with run_run_plus, where the fileclient doesn't behave as
expected. Since the raw return data is not needed, using run_run here
lets the test pass while we continue to work on run_run_plus.
The return data from run_run_plus previously returned the runner return
in the ``fun`` key. This has since been corrected. This commit replaces
these references to the ``fun`` key with the corrected ``return`` key.
This allows one to pass a kwarg to run_run_plus called
``__reload_config`` which will be passed as the ``from_scratch``
argument to self.get_config(). This allows self.run_run_plus() to force
a reload of the master config for integration tests which require the
config to be reloaded, for instance, from master.d/*.conf.
* OSX is a bit more restrictive on getting the process information
* OSX says the sockets aren't connected, which is weird, but...
* Close the sockets on OSX
* Shut down time sync before setting time in tests
* Lint
* Revert "Lint"
This reverts commit 6e3e6b76908b2c79647c7840fc3981548b2d13fc.
* Lint fix (ugh)
Some tests build the state file in the test itself and need to
be removed. However, some tests rely on sls files inside of the
integration file state tree. Therefore, in those tests, we have
nothing to remove.
I think that what is happening here is that we're using stale grains from a previous test. This should hopefully refresh them and allow this test to succeed.
This is a fix for salt github issue #35028.
Commit b02926f41c ("Immediate shutdown") removed the join() call
when stopping the daemon process, thus triggering a race between the
tmpdir cleanup logic and running children who still have data to
write. By re-adding the join() call we ensure all children finish
before the tmpdir gets removed. Children should normally be dead when
the call from join() returns, the SIGKILL logic after join() is for
cleaning up hanged processes.
Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
* Refactored LAN and NIC provisioning to use a more efficient composite server request.
* Added support for new INTEL_XEON and AMD_OPTERON CPU family types.
* Allow additional data volumes can be created and attached to servers.
* Added public and private network firewall rules.
* Added preliminary support for loadbalancers CLI functions.
* Corrected ProfitBricks name topic index.
* Updated ProfitBricks provider documentation.
* Updated provider integration test configs.
* PEP8 clean up.
* salt/crypt.py: clean up open filehandles
* salt/fileclient.py: clean up open filehandles
* salt/grains/core.py: clean up open filehandles
* salt/modules/cp.py: clean up open filehandles
* salt/modules/data.py: clean up open filehandles
* salt/modules/dnsutil.py: clean up open filehandles
* salt/modules/dockerng.py: clean up open filehandles
* salt/modules/inspectlib/collector.py: clean up open filehandles
* salt/modules/file.py: clean up open filehandles
* salt/modules/hosts.py: clean up open filehandles
* salt/modules/incron.py: clean up open filehandles
* salt/modules/dpkg.py: clean up open filehandles
* salt/modules/linux_sysctl.py: clean up open filehandles
* salt/modules/netbsd_sysctl.py: clean up open filehandles
* salt/modules/network.py: clean up open filehandles
* salt/modules/nftables.py: clean up open filehandles
* salt/modules/openbsd_sysctl.py: clean up open filehandles
* salt/modules/rh_ip.py: clean up open filehandles
* salt/modules/portage_config.py: clean up open filehandles
* salt/modules/status.py: clean up open filehandles
* salt/modules/tls.py: clean up open filehandles
* salt/modules/xapi.py: clean up open filehandles
* salt/modules/x509.py: clean up open filehandles
* salt/modules/virt.py: clean up open filehandles
* salt/modules/zcbuildout.py: clean up open filehandles
* salt/returners/local_cache.py: clean up open filehandles
* salt/utils/cloud.py: clean up open filehandles
* salt/states/pkgrepo.py: clean up open filehandles
* salt/states/x509.py: clean up open filehandles
* salt/transport/mixins/auth.py: clean up open filehandles
* salt/utils/__init__.py: clean up open filehandles
* salt/states/pkg.py: clean up open filehandles
* salt/utils/minion.py: clean up open filehandles
* salt/utils/openstack/nova.py: clean up open filehandles
* salt/utils/openstack/swift.py: clean up open filehandles
* salt/utils/process.py: clean up open filehandles
* salt/utils/templates.py: clean up open filehandles
* salt/utils/virt.py: clean up open filehandles
* tests/integration/__init__.py: clean up open filehandles
* tests/integration/cli/grains.py: clean up open filehandles
* tests/integration/client/standard.py: clean up open filehandles
* tests/integration/modules/hosts.py: clean up open filehandles
* tests/unit/utils/vt_test.py: clean up open filehandles
* tests/integration/shell/enabled.py: clean up open filehandles
* tests/integration/states/cmd.py: clean up open filehandles
* tests/integration/states/file.py: clean up open filehandles
* tests/integration/states/match.py: clean up open filehandles
* tests/unit/config_test.py: clean up open filehandles
* tests/unit/templates/jinja_test.py: clean up open filehandles
* tests/unit/utils/find_test.py: clean up open filehandles
* tests/integration/modules/state.py: clean up open filehandles
* Update dnsutil_test to reflect changes in fopen usage
* Add integration test for #34945
* file.recurse: Do not convert octal mode string to int
When we run file.makedirs_perms to create the dest directory, we pass
through the mode to file.check_perms. However, file.check_perms expects
an octal string, not an int. This causes the initial directory to be
chmod'ed to the wrong mode. When there are files in the source
directory, file.recurse will invoke the file.directory state to manage
files/dirs in that directory, and this ends up correcting the mode as we
simply pass the dir_mode to it. However, when there are only directories
in the source directory, this never happens and the incorrect mode
remains on the destination directory.
Fixes#34945.