Commit Graph

5506 Commits

Author SHA1 Message Date
Eric Radman
3299f5b2ea Add mocks to allow keyboard tests to function on non-Linux systems 2017-04-03 22:11:38 -04:00
Mike Place
17808e7181 Merge pull request #40480 from terminalmage/docker-auth-handling
Improved Docker auth handling and other misc. Docker improvements
2017-04-03 16:44:48 -06:00
Mike Place
55fa3c12fa Merge pull request #39874 from kiorky/fixup_fail_rc
Make returncode friendly to onfail requisites
2017-04-03 15:28:50 -06:00
Erik Johnson
c526e8c7b0 Improved Docker auth handling and other misc. Docker improvements
This commit changes how we handle Docker authentication. We no longer
try to auth when pushing/pulling images. This was initially done based
on a misunderstanding of how authentication was handled in docker-py.
docker-py will automagically use the base64-encoded username/password
combination stored in config.json if present, so we don't need to auth
at all for push or pull, docker-py will handle all of that. We just need
to make sure that we get the auth info into the config.json. To do this
I have added a login() function to the execution module, which uses the
Docker CLI to authenticate (with output_loglevel set to "quiet" to
suppress any logging of the credentials). The CLI is used in this
instance because docker-py provides no interface by which to persist a
login in the config.json; it can read from the file, but is not designed
to *write* to it. Rather than trying to write to this file ourselves,
and potentially breaking it when (not *if*) Docker decides to change the
internal format of the JSON data structure, using the CLI is a way of
future-proofing the authentication logic.

Context caching of the docker-py client instance has also been removed.
Context caching was used based on the same incorrect understanding of
how docker-py handles authentication, and sought to avoid repeated login
attempts. As that is no longer a concern, there is no need to cache the
client instance in the context dunder because we don't really gain a
performance benefit from it.

The _image_wrapper() function has been removed, as it no longer serves
any purpose, and the image-specific code in it that was still needed
has been absorbed into the _client_wrapper() helper. The functions which
used the _image_wrapper() helper (like push() and pull()) now use
_client_wrapper().

Additionally, the decorators used to enforce a minimum Docker version
(or Docker API version) have been removed. These are not necessary since
docker-py handles raising exceptions when a given feature is not
supported by the effective API version. The _client_wrapper() helper
function now checks for miscellaneous docker exceptions by catching the
docker.errors.DockerException class, which is the base class for the
custom exceptions raised by docker-py, and by doing so catches exceptions
raised due to API version incompatibility (and more).

The list of functions in the top-level docstring has been removed as it
is very out-of-date, and is somewhat superfluous anyway given that we
have for some time now had a list of the functions on the right side of
the page in the documentation.

Other changes:

- Fixed a bug I introduced when I overhauled the
  docker_container.running state, in which a container with no changes
  to be made, which was not running, would be started by the state even
  when test=True was passed.
- Custom registry image names are now properly identified. The colon in
  the hostname of the custom registry was previously causing incorrect
  identification of the image name and tag, when no explicit tag was
  being passed (e.g. localhost:5000/myimage).
- When configuring credentials, the creds for the Docker Hub can be
  configured under a registry named ``hub``. This keeps the user from
  having to figure out the registry URL and configure it in their Pillar
  data, and thus makes using this module easier.
- Removes the email address from the documentation for credential
  configuration. This was probably initially added because docker-py
  accepts it as an argument, but it is entirely ignored for purposes of
  authentication (even by docker-py) and is thus unnecessary. Relic of
  an earlier time in Docker's history, perhaps?
- Fixed RST references to functions which weren't caught when this
  module was renamed to dockermod.py
- Allow filter arguments in docker.networks to be passed as a
  comma-separated list as well as a Python list, in keeping with general
  usage elsewhere in Salt.
2017-04-03 13:29:28 -05:00
rallytime
55405bcd30 Renamed unit.modules.tuned_test.py to test_tuned.py and updated salttesting imports 2017-03-31 12:23:46 -06:00
rallytime
2d73fca4d0 Merge branch '2016.11' into 'develop'
Conflicts:
  - salt/cloud/clouds/vmware.py
  - salt/modules/win_dsc.py
  - salt/modules/win_psget.py
  - tests/unit/utils/vmware_test/test_cluster.py
  - tests/unit/utils/vmware_test/test_common.py
  - tests/unit/utils/vmware_test/test_connection.py
  - tests/unit/utils/vmware_test/test_datacenter.py
  - tests/unit/utils/vmware_test/test_host.py
2017-03-31 10:09:56 -06:00
rajvidhimar
8d83d482c5 Correct the junos unit tests which mock getattr 2017-03-31 16:19:21 +05:30
Mike Place
132d8b7b88 Merge pull request #40376 from nmadhok/2016.11
Backporting changes in vmware cloud driver from develop branch to 2016.11 branch
2017-03-30 16:35:12 -06:00
Mathieu Le Marec - Pasquet
0c7317e6ea Add a flag to mark onfail states as handlable 2017-03-31 00:22:59 +02:00
Mathieu Le Marec - Pasquet
fa2f9cf7bd Make returncode friendly to onfail requisites
Ensure that correctly handled states execution (via onfail)
will return a 0 code if onfail requisites suceed.
2017-03-31 00:22:51 +02:00
Nicole Thomas
fbbe0127f5 Merge pull request #40432 from rallytime/merge-develop
[develop] Merge forward from 2016.11 to develop
2017-03-30 15:57:57 -06:00
Mike Place
9d19bb635c Merge pull request #40428 from rallytime/statemod-test-fix
Update mocking for unit.test_statemod tests
2017-03-30 15:37:10 -06:00
Lukas Raska
24cc9b2a0c [WIP] Refactor Elasticsearch execution and state modules (#40192)
* Add Ingest pipeline methods to Elasticsearch execution module

* Refactor Elasticsearch execution module and properly handle exceptions

* Throw CommandExecutionError in methods applicable for different Elasticsearch versions

* Refactor Elasticsearch states to reflect execution module changes

* Add state for managing Elasticsearch pipelines

* Fix few typos in Elasticsearch module, return None when deleted document doesn't exist

* Implements stats and health methods for Elasticsearch

* Add Elasticsearch methods to open/close index, manage search templates and repositories

* Merge existing Elasticsearch states into single one, add Search Template handling

* Add index alias state for Elasticsearch, fix documentation

* Catch all global exceptions in Elasticsearch states, unit test all of them

* Implement few Unit tests for Elasticsearch execution module, merge fixes into deprecated elastic states

* Implement additional unit tests for Elasticsearch execution module

* Finalize Elasticsearch module documentation
2017-03-30 13:22:58 -06:00
rallytime
1792acedc0 Merge branch '2016.11' into 'develop'
Conflicts:
  - salt/template.py
  - tests/unit/modules/dockerng_test.py
2017-03-30 12:32:24 -06:00
rallytime
ebfc7b98ef Update mocking for unit.test_statemod tests 2017-03-30 11:10:01 -06:00
rallytime
762e08634a Skip 2 junos module unit tests: "salt.modules.junos.getattr" patch stacktraces 2017-03-30 10:10:16 -06:00
Dheeraj
77a40a0c44 Lint fixes 2017-03-30 10:31:16 +05:30
Dheeraj
8c1adfafd5 More complete fix for 39692
The existing fix did not work if the profile name itself had a dash `-`.
For example - `virtual-guest`. This commit fixes that by using `split('- ')`
rather than `split('-')`. This commit also provides two simple tests for the
`list_()` function to emulate behaviour of both old and new tuned-adm versions

Fixes #39692
2017-03-30 10:31:16 +05:30
Nitin Madhok
dd62310941 Adding unit tests for vmware_test 2017-03-30 00:54:57 -04:00
Nitin Madhok
034ef30f7c Remove old vmware unit tests 2017-03-30 00:53:09 -04:00
rallytime
99c8dcc18e Handle AttributeError for dockerng_mod.docker attempt fails and docker is installed
When we hit that attribute error, we need to set the docker version
variable to a tuple starting with 0 so we can use it in other test
comparisons. If docker is installed, but at a lower version, we will
see this attribute error.

Fixes the test failure on the 2016.11 branch on CentOS 6 VMs.
2017-03-29 10:28:51 -06:00
rallytime
d61b9631c6 Update docker execution module unit tests for develop branch
This test module was updated for both the 2016.11 and develop
branches in different ways. This commits removes some of the
changes that were merged-forward from the 2016.11 branch and
restores the develop branch tests functionality.
2017-03-29 09:07:22 -06:00
rallytime
52edbffc85 Merge branch '2016.11' into 'develop'
Conflicts:
  - doc/ref/cache/all/index.rst
  - doc/topics/cache/index.rst
  - salt/cache/localfs.py
  - salt/modules/boto_rds.py
  - salt/roster/cloud.py
  - salt/states/virtualenv_mod.py
  - tests/integration/states/test_archive.py
  - tests/unit/modules/test_dockermod.py
  - tests/unit/states/dockerng_test.py
2017-03-28 17:09:30 -06:00
Nicole Thomas
2febd05896 Merge pull request #40372 from zer0def/pip-cache-fixes
Fixes related to cache directory argument changes in pip>=6.
2017-03-28 16:48:40 -06:00
Pedro Algarvio
9383142dcc
The LoaderModuleMixin is the right approach here.
This changes sys.modules instead of mock patching it effectively
changing it while running tests. This should not happen.
2017-03-28 19:04:05 +01:00
Pedro Algarvio
4c17fad6b6
No need to use tests.unit.ModuleTestCase. Proper Mocking. 2017-03-28 19:04:04 +01:00
Pedro Algarvio
e95b7e062c
Proper mocking. Fix tests expectations. Runs on non windows too. 2017-03-28 19:04:03 +01:00
Pedro Algarvio
2b8d26b811
The develop branch no longer targets python 2.6 2017-03-28 19:04:03 +01:00
Pedro Algarvio
845cbabe97
Code cleanup. Proper mocking. 2017-03-28 19:04:03 +01:00
Pedro Algarvio
8560d8a6d3
Proper mocking. Tests are not destructive. 2017-03-28 19:04:03 +01:00
Pedro Algarvio
2dc9e1cfd0
Proper mocking. Py3 Compat. 2017-03-28 19:04:02 +01:00
Pedro Algarvio
4baabcfb1e
Proper mocking. Some additional mocking and fixes. 2017-03-28 19:04:02 +01:00
Pedro Algarvio
da5ee155d1
Proper mocking. If this fails @twangboy, let me known. 2017-03-28 19:04:02 +01:00
Pedro Algarvio
99bc71dc4e
Proper mocking. 2017-03-28 19:04:01 +01:00
Pedro Algarvio
14db38979c
Proper mocking. Py3 Compat. 2017-03-28 19:04:01 +01:00
Pedro Algarvio
d397763553
Adjust to the new LoaderModuleMockMixin usage 2017-03-28 19:03:59 +01:00
Pedro Algarvio
608402359f
Proper mocking. Windows compat. 2017-03-28 19:02:51 +01:00
Pedro Algarvio
e7768705f9
Allow passing different loader_module_globals per loader_module 2017-03-28 19:02:51 +01:00
Pedro Algarvio
93ad2cc428
Proper mocking. Code is mocked! Runs on non windows too. 2017-03-28 19:02:51 +01:00
Pedro Algarvio
5c13f7b2bb
Proper mocking. 2017-03-28 19:02:50 +01:00
Pedro Algarvio
cb532fb9ef
Code cleanup. Proper mocking. 2017-03-28 19:02:50 +01:00
Pedro Algarvio
f23596cbd1
Proper mocking. Py3 Compat. 2017-03-28 19:02:50 +01:00
Pedro Algarvio
9b1e55aa85
Import the full module namespace to avoid import shadowing.
https://github.com/saltstack/salt/pull/39996#issuecomment-287857698
2017-03-28 19:02:47 +01:00
Pedro Algarvio
8325a58a35
Proper mocking but I'm lost as to what is actually being tests here 2017-03-28 19:00:53 +01:00
Pedro Algarvio
a894eebf31
Code cleanup. Proper mocking!!! 2017-03-28 19:00:53 +01:00
Pedro Algarvio
5216ff0932
Code cleanup. Proper mocking 2017-03-28 19:00:52 +01:00
Pedro Algarvio
278275cf37
Fix StringVersion and LooseVersion. Add unit tests. 2017-03-28 19:00:52 +01:00
Pedro Algarvio
ea81540cce
Code cleanup. Proper mocking. 2017-03-28 19:00:52 +01:00
Pedro Algarvio
fb9c15ad07
Proper mocking. Code cleanup. 2017-03-28 19:00:52 +01:00
Pedro Algarvio
ccea1fb6a4
Proper mocking. Removed destructive tests decorator.
Creating or deleting files under a temporary directory does not apply as
a destructive test
2017-03-28 19:00:52 +01:00