mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 00:55:19 +00:00
Merge branch '2018.3' into fix_grains
This commit is contained in:
commit
a77ec81e6f
@ -54,7 +54,7 @@ provisioner:
|
|||||||
base:
|
base:
|
||||||
"os:Windows":
|
"os:Windows":
|
||||||
- match: grain
|
- match: grain
|
||||||
- prep_windows
|
- windows
|
||||||
"*":
|
"*":
|
||||||
- <%= ENV['KITCHEN_STATE'] || 'git.salt' %>
|
- <%= ENV['KITCHEN_STATE'] || 'git.salt' %>
|
||||||
pillars:
|
pillars:
|
||||||
|
@ -66,7 +66,7 @@ clean:
|
|||||||
|
|
||||||
# User-friendly check for sphinx-build
|
# User-friendly check for sphinx-build
|
||||||
check_sphinx-build:
|
check_sphinx-build:
|
||||||
@which $(SPHINXBUILD) >/dev/null 2>&1 || (echo "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)" >&2; false)
|
@which $(SPHINXBUILD) >/dev/null 2>&1 || (echo "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://www.sphinx-doc.org/en/master/)" >&2; false)
|
||||||
|
|
||||||
html: check_sphinx-build translations
|
html: check_sphinx-build translations
|
||||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||||
|
@ -131,6 +131,7 @@ MOCK_MODULES = [
|
|||||||
'tornado.ioloop',
|
'tornado.ioloop',
|
||||||
'tornado.iostream',
|
'tornado.iostream',
|
||||||
'tornado.netutil',
|
'tornado.netutil',
|
||||||
|
'tornado.queues',
|
||||||
'tornado.simple_httpclient',
|
'tornado.simple_httpclient',
|
||||||
'tornado.stack_context',
|
'tornado.stack_context',
|
||||||
'tornado.web',
|
'tornado.web',
|
||||||
|
@ -9,7 +9,7 @@ Synopsis
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt-unity salt '*' test.ping
|
salt-unity salt '*' test.version
|
||||||
|
|
||||||
Description
|
Description
|
||||||
===========
|
===========
|
||||||
|
@ -11,9 +11,9 @@ Synopsis
|
|||||||
|
|
||||||
salt -E '.*' [ options ] sys.doc cmd
|
salt -E '.*' [ options ] sys.doc cmd
|
||||||
|
|
||||||
salt -G 'os:Arch.*' [ options ] test.ping
|
salt -G 'os:Arch.*' [ options ] test.version
|
||||||
|
|
||||||
salt -C 'G@os:Arch.* and webserv* or G@kernel:FreeBSD' [ options ] test.ping
|
salt -C 'G@os:Arch.* and webserv* or G@kernel:FreeBSD' [ options ] test.version
|
||||||
|
|
||||||
Description
|
Description
|
||||||
===========
|
===========
|
||||||
|
@ -199,30 +199,31 @@ Sending Commands
|
|||||||
================
|
================
|
||||||
|
|
||||||
Communication between the Master and a Minion may be verified by running
|
Communication between the Master and a Minion may be verified by running
|
||||||
the ``test.ping`` command:
|
the ``test.version`` command:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
[root@master ~]# salt alpha test.ping
|
[root@master ~]# salt alpha test.version
|
||||||
alpha:
|
alpha:
|
||||||
True
|
2018.3.4
|
||||||
|
|
||||||
Communication between the Master and all Minions may be tested in a
|
Communication between the Master and all Minions may be tested in a
|
||||||
similar way:
|
similar way:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
[root@master ~]# salt '*' test.ping
|
[root@master ~]# salt '*' test.version
|
||||||
alpha:
|
alpha:
|
||||||
True
|
2018.3.4
|
||||||
bravo:
|
bravo:
|
||||||
True
|
2018.3.4
|
||||||
charlie:
|
charlie:
|
||||||
True
|
2018.3.4
|
||||||
delta:
|
delta:
|
||||||
True
|
2018.3.4
|
||||||
|
|
||||||
Each of the Minions should send a ``True`` response as shown above.
|
Each of the Minions should send a ``2018.3.4`` response as shown above,
|
||||||
|
or any other salt version installed.
|
||||||
|
|
||||||
What's Next?
|
What's Next?
|
||||||
============
|
============
|
||||||
|
@ -5050,6 +5050,33 @@ This can be used to control logging levels more specifically. See also
|
|||||||
:conf_log:`log_granular_levels`.
|
:conf_log:`log_granular_levels`.
|
||||||
|
|
||||||
|
|
||||||
|
.. conf_master:: log_rotate_max_bytes
|
||||||
|
|
||||||
|
``log_rotate_max_bytes``
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Default: ``0``
|
||||||
|
|
||||||
|
The maximum number of bytes a single log file may contain before it is rotated.
|
||||||
|
A value of 0 disables this feature. Currently only supported on Windows. On
|
||||||
|
other platforms, use an external tool such as 'logrotate' to manage log files.
|
||||||
|
:conf_log:`log_rotate_max_bytes`
|
||||||
|
|
||||||
|
|
||||||
|
.. conf_master:: log_rotate_backup_count
|
||||||
|
|
||||||
|
``log_rotate_backup_count``
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Default: ``0``
|
||||||
|
|
||||||
|
The number of backup files to keep when rotating log files. Only used if
|
||||||
|
:conf_master:`log_rotate_max_bytes` is greater than 0. Currently only supported
|
||||||
|
on Windows. On other platforms, use an external tool such as 'logrotate' to
|
||||||
|
manage log files.
|
||||||
|
:conf_log:`log_rotate_backup_count`
|
||||||
|
|
||||||
|
|
||||||
.. _node-groups:
|
.. _node-groups:
|
||||||
|
|
||||||
Node Groups
|
Node Groups
|
||||||
|
@ -2940,6 +2940,34 @@ Default: ``{}``
|
|||||||
This can be used to control logging levels more specifically. See also
|
This can be used to control logging levels more specifically. See also
|
||||||
:conf_log:`log_granular_levels`.
|
:conf_log:`log_granular_levels`.
|
||||||
|
|
||||||
|
|
||||||
|
.. conf_minion:: log_rotate_max_bytes
|
||||||
|
|
||||||
|
``log_rotate_max_bytes``
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Default: ``0``
|
||||||
|
|
||||||
|
The maximum number of bytes a single log file may contain before it is rotated.
|
||||||
|
A value of 0 disables this feature. Currently only supported on Windows. On
|
||||||
|
other platforms, use an external tool such as 'logrotate' to manage log files.
|
||||||
|
:conf_log:`log_rotate_max_bytes`
|
||||||
|
|
||||||
|
|
||||||
|
.. conf_minion:: log_rotate_backup_count
|
||||||
|
|
||||||
|
``log_rotate_backup_count``
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Default: ``0``
|
||||||
|
|
||||||
|
The number of backup files to keep when rotating log files. Only used if
|
||||||
|
:conf_minion:`log_rotate_max_bytes` is greater than 0. Currently only supported
|
||||||
|
on Windows. On other platforms, use an external tool such as 'logrotate' to
|
||||||
|
manage log files.
|
||||||
|
:conf_log:`log_rotate_backup_count`
|
||||||
|
|
||||||
|
|
||||||
.. conf_minion:: zmq_monitor
|
.. conf_minion:: zmq_monitor
|
||||||
|
|
||||||
``zmq_monitor``
|
``zmq_monitor``
|
||||||
|
@ -30,7 +30,7 @@ The same could be done by command line:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -t 40 --module-executors='[splay, direct_call]' --executor-opts='{splaytime: 30}' '*' test.ping
|
salt -t 40 --module-executors='[splay, direct_call]' --executor-opts='{splaytime: 30}' '*' test.version
|
||||||
|
|
||||||
And the same command called via netapi will look like this:
|
And the same command called via netapi will look like this:
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ And the same command called via netapi will look like this:
|
|||||||
-d '[{
|
-d '[{
|
||||||
"client": "local",
|
"client": "local",
|
||||||
"tgt": "*",
|
"tgt": "*",
|
||||||
"fun": "test.ping",
|
"fun": "test.version",
|
||||||
"module_executors": ["splay", "direct_call"],
|
"module_executors": ["splay", "direct_call"],
|
||||||
"executor_opts": {"splaytime": 10}
|
"executor_opts": {"splaytime": 10}
|
||||||
}]'
|
}]'
|
||||||
|
@ -107,11 +107,11 @@ comes with a number of functions to execute peer communication in different
|
|||||||
ways. Currently there are three functions in the publish module. These examples
|
ways. Currently there are three functions in the publish module. These examples
|
||||||
will show how to test the peer system via the salt-call command.
|
will show how to test the peer system via the salt-call command.
|
||||||
|
|
||||||
To execute test.ping on all minions:
|
To execute test.version on all minions:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt-call publish.publish \* test.ping
|
# salt-call publish.publish \* test.version
|
||||||
|
|
||||||
To execute the manage.up runner:
|
To execute the manage.up runner:
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ To match minions using other matchers, use ``tgt_type``:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt-call publish.publish 'webserv* and not G@os:Ubuntu' test.ping tgt_type='compound'
|
# salt-call publish.publish 'webserv* and not G@os:Ubuntu' test.version tgt_type='compound'
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
In pre-2017.7.0 releases, use ``expr_form`` instead of ``tgt_type``.
|
In pre-2017.7.0 releases, use ``expr_form`` instead of ``tgt_type``.
|
||||||
|
@ -31,7 +31,7 @@ Specifying what returners to use is done when the command is invoked:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping --return redis_return
|
salt '*' test.version --return redis_return
|
||||||
|
|
||||||
This command will ensure that the redis_return returner is used.
|
This command will ensure that the redis_return returner is used.
|
||||||
|
|
||||||
@ -39,10 +39,10 @@ It is also possible to specify multiple returners:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping --return mongo_return,redis_return,cassandra_return
|
salt '*' test.version --return mongo_return,redis_return,cassandra_return
|
||||||
|
|
||||||
In this scenario all three returners will be called and the data from the
|
In this scenario all three returners will be called and the data from the
|
||||||
test.ping command will be sent out to the three named returners.
|
test.version command will be sent out to the three named returners.
|
||||||
|
|
||||||
Writing a Returner
|
Writing a Returner
|
||||||
==================
|
==================
|
||||||
@ -61,13 +61,13 @@ Other optional functions can be included to add support for
|
|||||||
``returner``
|
``returner``
|
||||||
The ``returner`` function must accept a single argument. The argument
|
The ``returner`` function must accept a single argument. The argument
|
||||||
contains return data from the called minion function. If the minion
|
contains return data from the called minion function. If the minion
|
||||||
function ``test.ping`` is called, the value of the argument will be a
|
function ``test.version`` is called, the value of the argument will be a
|
||||||
dictionary. Run the following command from a Salt master to get a sample
|
dictionary. Run the following command from a Salt master to get a sample
|
||||||
of the dictionary:
|
of the dictionary:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt-call --local --metadata test.ping --out=pprint
|
salt-call --local --metadata test.version --out=pprint
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
@ -246,12 +246,12 @@ Sample:
|
|||||||
"master_minion": {
|
"master_minion": {
|
||||||
"fun_args": [],
|
"fun_args": [],
|
||||||
"jid": "20150330121011408195",
|
"jid": "20150330121011408195",
|
||||||
"return": true,
|
"return": "2018.3.4",
|
||||||
"retcode": 0,
|
"retcode": 0,
|
||||||
"success": true,
|
"success": true,
|
||||||
"cmd": "_return",
|
"cmd": "_return",
|
||||||
"_stamp": "2015-03-30T12:10:12.708663",
|
"_stamp": "2015-03-30T12:10:12.708663",
|
||||||
"fun": "test.ping",
|
"fun": "test.version",
|
||||||
"id": "master_minion"
|
"id": "master_minion"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -267,9 +267,9 @@ Sample:
|
|||||||
|
|
||||||
{
|
{
|
||||||
"local": {
|
"local": {
|
||||||
"minion1": "test.ping",
|
"minion1": "test.version",
|
||||||
"minion3": "test.ping",
|
"minion3": "test.version",
|
||||||
"minion2": "test.ping"
|
"minion2": "test.version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +344,7 @@ Testing the Returner
|
|||||||
The ``returner``, ``prep_jid``, ``save_load``, ``get_load``, and
|
The ``returner``, ``prep_jid``, ``save_load``, ``get_load``, and
|
||||||
``event_return`` functions can be tested by configuring the
|
``event_return`` functions can be tested by configuring the
|
||||||
:conf_master:`master_job_cache` and `Event Returners`_ in the master config
|
:conf_master:`master_job_cache` and `Event Returners`_ in the master config
|
||||||
file and submitting a job to ``test.ping`` each minion from the master.
|
file and submitting a job to ``test.version`` each minion from the master.
|
||||||
|
|
||||||
Once you have successfully exercised the Master Job Cache functions, test the
|
Once you have successfully exercised the Master Job Cache functions, test the
|
||||||
External Job Cache functions using the ``ret`` execution module.
|
External Job Cache functions using the ``ret`` execution module.
|
||||||
@ -352,7 +352,7 @@ External Job Cache functions using the ``ret`` execution module.
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt-call ret.get_jids cassandra_cql --output=json
|
salt-call ret.get_jids cassandra_cql --output=json
|
||||||
salt-call ret.get_fun cassandra_cql test.ping --output=json
|
salt-call ret.get_fun cassandra_cql test.version --output=json
|
||||||
salt-call ret.get_minions cassandra_cql --output=json
|
salt-call ret.get_minions cassandra_cql --output=json
|
||||||
salt-call ret.get_jid cassandra_cql 20150330121011408195 --output=json
|
salt-call ret.get_jid cassandra_cql 20150330121011408195 --output=json
|
||||||
|
|
||||||
|
@ -122,6 +122,6 @@ responding to Salt calls could look like this:
|
|||||||
Print a list of all of the minions that are up
|
Print a list of all of the minions that are up
|
||||||
'''
|
'''
|
||||||
client = salt.client.LocalClient(__opts__['conf_file'])
|
client = salt.client.LocalClient(__opts__['conf_file'])
|
||||||
minions = client.cmd('*', 'test.ping', timeout=1)
|
minions = client.cmd('*', 'test.version', timeout=1)
|
||||||
for minion in sorted(minions):
|
for minion in sorted(minions):
|
||||||
print minion
|
print minion
|
||||||
|
@ -22,5 +22,5 @@ allowed during blackout. This is configured with the special pillar key
|
|||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
minion_blackout_whitelist:
|
minion_blackout_whitelist:
|
||||||
- test.ping
|
- test.version
|
||||||
- pillar.get
|
- pillar.get
|
||||||
|
@ -324,7 +324,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt 'ami.example.com' test.ping
|
# salt 'ami.example.com' test.version
|
||||||
|
|
||||||
|
|
||||||
Required Settings
|
Required Settings
|
||||||
|
@ -120,7 +120,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt newinstance test.ping
|
salt newinstance test.version
|
||||||
|
|
||||||
|
|
||||||
Profile Options
|
Profile Options
|
||||||
|
@ -121,7 +121,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt newinstance test.ping
|
salt newinstance test.version
|
||||||
|
|
||||||
|
|
||||||
Profile Options
|
Profile Options
|
||||||
|
@ -29,8 +29,8 @@ Minion Configuration
|
|||||||
|
|
||||||
The default minion configuration is set up in this file. Minions created by
|
The default minion configuration is set up in this file. Minions created by
|
||||||
salt-cloud derive their configuration from this file. Almost all parameters
|
salt-cloud derive their configuration from this file. Almost all parameters
|
||||||
found in :ref:`Configuring the Salt Minion <configuration-salt-minion>` can
|
found in :ref:`Configuring the Salt Minion <configuration-salt-minion>` can be
|
||||||
be used here.
|
used here.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ and its listening port, if the port is not set to the default.
|
|||||||
Similar to most other settings, Minion configuration settings are inherited
|
Similar to most other settings, Minion configuration settings are inherited
|
||||||
across configuration files. For example, the master setting might be contained
|
across configuration files. For example, the master setting might be contained
|
||||||
in the main ``cloud`` configuration file as demonstrated above, but additional
|
in the main ``cloud`` configuration file as demonstrated above, but additional
|
||||||
settings can be placed in the provider or profile:
|
settings can be placed in the provider, profile or map configuration files:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ Post-Deploy Commands
|
|||||||
Once a minion has been deployed, it has the option to run a salt command.
|
Once a minion has been deployed, it has the option to run a salt command.
|
||||||
Normally, this would be the :py:func:`state.apply <salt.modules.state.apply_>`,
|
Normally, this would be the :py:func:`state.apply <salt.modules.state.apply_>`,
|
||||||
which would finish provisioning the VM. Another common option (for testing) is
|
which would finish provisioning the VM. Another common option (for testing) is
|
||||||
to use :py:func:`test.ping <salt.modules.test.ping>`. This is configured in the
|
to use :py:func:`test.version <salt.modules.test.version>`. This is configured in the
|
||||||
main cloud config file:
|
main cloud config file:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
@ -170,7 +170,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt gce-instance test.ping
|
salt gce-instance test.version
|
||||||
|
|
||||||
|
|
||||||
GCE Specific Settings
|
GCE Specific Settings
|
||||||
|
@ -84,7 +84,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt my-centos7-clone test.ping
|
# salt my-centos7-clone test.version
|
||||||
|
|
||||||
|
|
||||||
Required Settings
|
Required Settings
|
||||||
|
@ -62,7 +62,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt linode-instance test.ping
|
salt linode-instance test.version
|
||||||
|
|
||||||
|
|
||||||
Listing Sizes
|
Listing Sizes
|
||||||
|
@ -96,7 +96,7 @@ Once the instance has been created with salt-minion installed, connectivity to i
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt my-new-vm test.ping
|
salt my-new-vm test.version
|
||||||
|
|
||||||
OpenNebula uses an image --> template --> virtual machine paradigm where the template draws on the image, or disk,
|
OpenNebula uses an image --> template --> virtual machine paradigm where the template draws on the image, or disk,
|
||||||
and virtual machines are created from templates. Because of this, there is no need to define a ``size`` in the cloud
|
and virtual machines are created from templates. Because of this, there is no need to define a ``size`` in the cloud
|
||||||
|
@ -91,7 +91,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt myubuntu test.ping
|
# salt myubuntu test.version
|
||||||
|
|
||||||
|
|
||||||
Required Settings
|
Required Settings
|
||||||
|
@ -91,7 +91,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt myubuntu test.ping
|
# salt myubuntu test.version
|
||||||
|
|
||||||
|
|
||||||
Required Settings
|
Required Settings
|
||||||
|
@ -195,7 +195,7 @@ Connectivity to the new "Salted" instances can now be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt 'my-instance-*' test.ping
|
salt 'my-instance-*' test.version
|
||||||
|
|
||||||
Credential Verification
|
Credential Verification
|
||||||
=======================
|
=======================
|
||||||
@ -203,7 +203,7 @@ Credential Verification
|
|||||||
Because the Saltify driver does not actually create VM's, unlike other
|
Because the Saltify driver does not actually create VM's, unlike other
|
||||||
salt-cloud drivers, it has special behaviour when the ``deploy`` option is set
|
salt-cloud drivers, it has special behaviour when the ``deploy`` option is set
|
||||||
to ``False``. When the cloud configuration specifies ``deploy: False``, the
|
to ``False``. When the cloud configuration specifies ``deploy: False``, the
|
||||||
Saltify driver will attept to authenticate to the target node(s) and return
|
Saltify driver will attempt to authenticate to the target node(s) and return
|
||||||
``True`` for each one that succeeds. This can be useful to verify ports,
|
``True`` for each one that succeeds. This can be useful to verify ports,
|
||||||
protocols, services and credentials are correctly configured before a live
|
protocols, services and credentials are correctly configured before a live
|
||||||
deployment.
|
deployment.
|
||||||
|
@ -221,9 +221,9 @@ with its short hostname, ``my-vm``):
|
|||||||
Rejected Keys:
|
Rejected Keys:
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# salt my-vm.example.com test.ping
|
# salt my-vm.example.com test.version
|
||||||
my-vm.example.com:
|
my-vm.example.com:
|
||||||
True
|
2018.3.4
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# salt-cloud -d my-vm.example.com
|
# salt-cloud -d my-vm.example.com
|
||||||
@ -334,7 +334,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt 'myserver.example.com' test.ping
|
# salt 'myserver.example.com' test.version
|
||||||
|
|
||||||
Dedicated Host
|
Dedicated Host
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
|
@ -119,7 +119,7 @@ to it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt my-id test.ping
|
salt my-id test.version
|
||||||
|
|
||||||
.. _host provisioning example:
|
.. _host provisioning example:
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ the following command:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt vh_instance1 test.ping
|
# salt vh_instance1 test.version
|
||||||
|
|
||||||
You can now continue to provision new instances and they will all automatically
|
You can now continue to provision new instances and they will all automatically
|
||||||
be set up as minions of the master you've defined in the configuration file.
|
be set up as minions of the master you've defined in the configuration file.
|
||||||
|
@ -160,7 +160,7 @@ it can be verified with Salt:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt xenvm02 test.ping
|
salt xenvm02 test.version
|
||||||
|
|
||||||
|
|
||||||
Listing Sizes
|
Listing Sizes
|
||||||
|
@ -109,7 +109,7 @@ against the command target.
|
|||||||
The typical lifecycle of a salt job from the perspective of the master
|
The typical lifecycle of a salt job from the perspective of the master
|
||||||
might be as follows:
|
might be as follows:
|
||||||
|
|
||||||
1) A command is issued on the CLI. For example, 'salt my_minion test.ping'.
|
1) A command is issued on the CLI. For example, 'salt my_minion test.version'.
|
||||||
|
|
||||||
2) The 'salt' command uses LocalClient to generate a request to the salt master
|
2) The 'salt' command uses LocalClient to generate a request to the salt master
|
||||||
by connecting to the ReqServer on TCP:4506 and issuing the job.
|
by connecting to the ReqServer on TCP:4506 and issuing the job.
|
||||||
|
@ -100,7 +100,8 @@ Fork a Repo Guide_>`_ and is well worth reading.
|
|||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
If your change fixes a bug or implements a feature already filed in the
|
If your change fixes a bug or implements a feature already filed in the
|
||||||
`issue tracker <GitHub issue tracker>`_, be sure to reference the issue
|
`issue tracker`_, be sure to
|
||||||
|
`reference the issue <https://help.github.com/en/articles/closing-issues-using-keywords>`_
|
||||||
number in the commit message body.
|
number in the commit message body.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -541,7 +542,7 @@ Script, see the Bootstrap Script's `Contributing Guidelines`_.
|
|||||||
|
|
||||||
.. _`saltstack/salt`: https://github.com/saltstack/salt
|
.. _`saltstack/salt`: https://github.com/saltstack/salt
|
||||||
.. _`GitHub Fork a Repo Guide`: https://help.github.com/articles/fork-a-repo
|
.. _`GitHub Fork a Repo Guide`: https://help.github.com/articles/fork-a-repo
|
||||||
.. _`GitHub issue tracker`: https://github.com/saltstack/salt/issues
|
.. _`issue tracker`: https://github.com/saltstack/salt/issues
|
||||||
.. _`Fork saltstack/salt`: https://github.com/saltstack/salt/fork
|
.. _`Fork saltstack/salt`: https://github.com/saltstack/salt/fork
|
||||||
.. _'Git resources`: https://help.github.com/articles/good-resources-for-learning-git-and-github/
|
.. _'Git resources`: https://help.github.com/articles/good-resources-for-learning-git-and-github/
|
||||||
.. _`Closing issues via commit message`: https://help.github.com/articles/closing-issues-via-commit-messages
|
.. _`Closing issues via commit message`: https://help.github.com/articles/closing-issues-via-commit-messages
|
||||||
|
@ -13,7 +13,7 @@ broadly, most of the narrative documentation is contained within the
|
|||||||
:blob:`doc` subdirectory and most of the reference and API documentation is
|
:blob:`doc` subdirectory and most of the reference and API documentation is
|
||||||
written inline with Salt's Python code and extracted using a Sphinx extension.
|
written inline with Salt's Python code and extracted using a Sphinx extension.
|
||||||
|
|
||||||
.. _`Sphinx`: http://sphinx-doc.org/
|
.. _`Sphinx`: https://www.sphinx-doc.org/en/master/
|
||||||
|
|
||||||
|
|
||||||
.. _docs-style:
|
.. _docs-style:
|
||||||
@ -187,7 +187,7 @@ Link to :ref:`glossary entries <glossary>` using the `term role`_. A
|
|||||||
cross-reference should be added the first time a Salt-specific term is used in
|
cross-reference should be added the first time a Salt-specific term is used in
|
||||||
a document.
|
a document.
|
||||||
|
|
||||||
.. _`term role`: http://sphinx-doc.org/markup/inline.html#role-term
|
.. _`term role`: https://www.sphinx-doc.org/en/master/glossary.html#term-role
|
||||||
|
|
||||||
.. code-block:: restructuredtext
|
.. code-block:: restructuredtext
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ occasionally useful to manually add items to the index.
|
|||||||
One method is to use the `index directive`_ above the document or section that
|
One method is to use the `index directive`_ above the document or section that
|
||||||
should appear in the index.
|
should appear in the index.
|
||||||
|
|
||||||
.. _`index directive`: http://sphinx-doc.org/markup/misc.html#directive-index
|
.. _`index directive`: https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html?highlight=index%20directive#index-generating-markup
|
||||||
|
|
||||||
.. code-block:: restructuredtext
|
.. code-block:: restructuredtext
|
||||||
|
|
||||||
@ -217,7 +217,7 @@ Another method is to use the `index role`_ inline with the text that should
|
|||||||
appear in the index. The index entry is created and the target text is left
|
appear in the index. The index entry is created and the target text is left
|
||||||
otherwise intact.
|
otherwise intact.
|
||||||
|
|
||||||
.. _`index role`: http://sphinx-doc.org/markup/misc.html#role-index
|
.. _`index role`: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#role-index
|
||||||
|
|
||||||
.. code-block:: restructuredtext
|
.. code-block:: restructuredtext
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ to survive document renames or movement.
|
|||||||
|
|
||||||
Note, the ``:doc:`` role should *not* be used to link documents together.
|
Note, the ``:doc:`` role should *not* be used to link documents together.
|
||||||
|
|
||||||
.. _`ref role`: http://sphinx-doc.org/markup/inline.html#role-ref
|
.. _`ref role`: https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref
|
||||||
|
|
||||||
|
|
||||||
.. _docs-ref-modules:
|
.. _docs-ref-modules:
|
||||||
|
@ -160,7 +160,7 @@ installation is working:
|
|||||||
salt-minion -c ./etc/salt -d
|
salt-minion -c ./etc/salt -d
|
||||||
salt-key -c ./etc/salt -L
|
salt-key -c ./etc/salt -L
|
||||||
salt-key -c ./etc/salt -A
|
salt-key -c ./etc/salt -A
|
||||||
salt -c ./etc/salt '*' test.ping
|
salt -c ./etc/salt '*' test.version
|
||||||
|
|
||||||
Running the master and minion in debug mode can be helpful when developing. To
|
Running the master and minion in debug mode can be helpful when developing. To
|
||||||
do this, add ``-l debug`` to the calls to ``salt-master`` and ``salt-minion``.
|
do this, add ``-l debug`` to the calls to ``salt-master`` and ``salt-minion``.
|
||||||
@ -283,7 +283,9 @@ Change to salt documentation directory, then:
|
|||||||
:strong:`text`.
|
:strong:`text`.
|
||||||
- The docs then are built within the :strong:`docs/_build/` folder. To update
|
- The docs then are built within the :strong:`docs/_build/` folder. To update
|
||||||
the docs after making changes, run ``make`` again.
|
the docs after making changes, run ``make`` again.
|
||||||
- The docs use `reStructuredText <http://sphinx-doc.org/rest.html>`_ for markup.
|
- The docs use `reStructuredText
|
||||||
|
<https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_
|
||||||
|
for markup.
|
||||||
See a live demo at http://rst.ninjs.org/.
|
See a live demo at http://rst.ninjs.org/.
|
||||||
- The help information on each module or state is culled from the python code
|
- The help information on each module or state is culled from the python code
|
||||||
that runs for that piece. Find them in ``salt/modules/`` or ``salt/states/``.
|
that runs for that piece. Find them in ``salt/modules/`` or ``salt/states/``.
|
||||||
|
@ -67,7 +67,7 @@ other minions based on standard targets (all matchers are supported except the c
|
|||||||
external_auth:
|
external_auth:
|
||||||
pam:
|
pam:
|
||||||
dave:
|
dave:
|
||||||
- test.ping
|
- test.version
|
||||||
- mongo\*:
|
- mongo\*:
|
||||||
- network.*
|
- network.*
|
||||||
- log\*:
|
- log\*:
|
||||||
@ -78,7 +78,7 @@ other minions based on standard targets (all matchers are supported except the c
|
|||||||
steve:
|
steve:
|
||||||
- .*
|
- .*
|
||||||
|
|
||||||
The above allows for all minions to be hit by test.ping by dave, and adds a
|
The above allows for all minions to be hit by test.version by dave, and adds a
|
||||||
few functions that dave can execute on other minions. It also allows steve
|
few functions that dave can execute on other minions. It also allows steve
|
||||||
unrestricted access to salt commands.
|
unrestricted access to salt commands.
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ any user on the same system as the master with the ``-a`` option:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ salt -a pam web\* test.ping
|
$ salt -a pam web\* test.version
|
||||||
|
|
||||||
The system will ask the user for the credentials required by the
|
The system will ask the user for the credentials required by the
|
||||||
authentication system and then publish the command.
|
authentication system and then publish the command.
|
||||||
@ -198,7 +198,7 @@ adding a ``-T`` option when authenticating:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ salt -T -a pam web\* test.ping
|
$ salt -T -a pam web\* test.version
|
||||||
|
|
||||||
Now a token will be created that has an expiration of 12 hours (by default).
|
Now a token will be created that has an expiration of 12 hours (by default).
|
||||||
This token is stored in a file named ``salt_token`` in the active user's home
|
This token is stored in a file named ``salt_token`` in the active user's home
|
||||||
|
@ -69,7 +69,7 @@ Job events
|
|||||||
``G@os_family:RedHat``, etc.
|
``G@os_family:RedHat``, etc.
|
||||||
:var tgt_type: The type of targeting used: ``glob``, ``grain``,
|
:var tgt_type: The type of targeting used: ``glob``, ``grain``,
|
||||||
``compound``, etc.
|
``compound``, etc.
|
||||||
:var fun: The function to run on minions: ``test.ping``,
|
:var fun: The function to run on minions: ``test.version``,
|
||||||
``network.interfaces``, etc.
|
``network.interfaces``, etc.
|
||||||
:var arg: A list of arguments to pass to the function that will be
|
:var arg: A list of arguments to pass to the function that will be
|
||||||
called.
|
called.
|
||||||
@ -85,7 +85,7 @@ Job events
|
|||||||
:var id: The minion ID.
|
:var id: The minion ID.
|
||||||
:var jid: The job ID.
|
:var jid: The job ID.
|
||||||
:var retcode: The return code for the job.
|
:var retcode: The return code for the job.
|
||||||
:var fun: The function the minion ran. E.g., ``test.ping``.
|
:var fun: The function the minion ran. E.g., ``test.version``.
|
||||||
:var return: The data returned from the execution module.
|
:var return: The data returned from the execution module.
|
||||||
|
|
||||||
.. salt:event:: salt/job/<JID>/prog/<MID>/<RUN NUM>
|
.. salt:event:: salt/job/<JID>/prog/<MID>/<RUN NUM>
|
||||||
|
@ -25,12 +25,12 @@ The general installation process is as follows:
|
|||||||
4. Accept the Salt :ref:`minion keys <using-salt-key>` after the Salt minion
|
4. Accept the Salt :ref:`minion keys <using-salt-key>` after the Salt minion
|
||||||
connects.
|
connects.
|
||||||
|
|
||||||
After this, you should be able to run a simple command and receive returns from
|
After this, you should be able to run a simple command and receive salt version returns from
|
||||||
all connected Salt minions.
|
all connected Salt minions.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping
|
salt '*' test.version
|
||||||
|
|
||||||
Quick Install
|
Quick Install
|
||||||
-------------
|
-------------
|
||||||
|
@ -516,7 +516,7 @@ Testing the Salt minion
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sudo salt '*' test.ping
|
sudo salt '*' test.version
|
||||||
|
|
||||||
You should get the following response: ``{'your minion hostname': True}``
|
You should get the following response: ``{'your minion hostname': True}``
|
||||||
|
|
||||||
|
@ -405,6 +405,29 @@ Returns:
|
|||||||
None
|
None
|
||||||
|
|
||||||
|
|
||||||
|
.. jinja_ref:: regex_replace
|
||||||
|
|
||||||
|
``regex_replace``
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
.. versionadded:: 2017.7.0
|
||||||
|
|
||||||
|
Searches for a pattern and replaces with a sequence of characters.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: jinja
|
||||||
|
|
||||||
|
{% set my_text = 'yes, this is a TEST' %}
|
||||||
|
{{ my_text | regex_replace(' ([a-z])', '__\\1', ignorecase=True) }}
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
yes,__this__is__a__TEST
|
||||||
|
|
||||||
|
|
||||||
.. jinja_ref:: uuid
|
.. jinja_ref:: uuid
|
||||||
|
|
||||||
``uuid``
|
``uuid``
|
||||||
|
@ -98,7 +98,7 @@ the 'url' key above should say ``url: http://127.0.0.1:8000``
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt p8000 test.ping
|
salt p8000 test.version
|
||||||
|
|
||||||
8. The REST service implements a degenerately simple pkg and service provider as
|
8. The REST service implements a degenerately simple pkg and service provider as
|
||||||
well as a small set of grains. To "install" a package, use a standard
|
well as a small set of grains. To "install" a package, use a standard
|
||||||
|
@ -127,7 +127,7 @@ command:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt-ssh '*' test.ping
|
salt-ssh '*' test.version
|
||||||
|
|
||||||
Commands with ``salt-ssh`` follow the same syntax as the ``salt`` command.
|
Commands with ``salt-ssh`` follow the same syntax as the ``salt`` command.
|
||||||
|
|
||||||
@ -217,8 +217,8 @@ YAML contents:
|
|||||||
ssh_wipe: True
|
ssh_wipe: True
|
||||||
|
|
||||||
Instead of having to call
|
Instead of having to call
|
||||||
``salt-ssh --config-dir=path/to/config/dir --max-procs=30 --wipe \* test.ping`` you
|
``salt-ssh --config-dir=path/to/config/dir --max-procs=30 --wipe \* test.version`` you
|
||||||
can call ``salt-ssh \* test.ping``.
|
can call ``salt-ssh \* test.version``.
|
||||||
|
|
||||||
Boolean-style options should be specified in their YAML representation.
|
Boolean-style options should be specified in their YAML representation.
|
||||||
|
|
||||||
|
@ -9,11 +9,11 @@ supported.
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' -b 10 test.ping
|
salt '*' -b 10 test.version
|
||||||
|
|
||||||
salt -G 'os:RedHat' --batch-size 25% apache.signal restart
|
salt -G 'os:RedHat' --batch-size 25% apache.signal restart
|
||||||
|
|
||||||
This will only run test.ping on 10 of the targeted minions at a time and then
|
This will only run test.version on 10 of the targeted minions at a time and then
|
||||||
restart apache on 25% of the minions matching ``os:RedHat`` at a time and work
|
restart apache on 25% of the minions matching ``os:RedHat`` at a time and work
|
||||||
through them all until the task is complete. This makes jobs like rolling web
|
through them all until the task is complete. This makes jobs like rolling web
|
||||||
server restarts behind a load balancer or doing maintenance on BSD firewalls
|
server restarts behind a load balancer or doing maintenance on BSD firewalls
|
||||||
|
@ -31,7 +31,7 @@ matches the :mod:`regular expression <python2:re>` ``web-dc1-srv.*``:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.ping
|
salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.version
|
||||||
|
|
||||||
That same example expressed in a :term:`top file` looks like the following:
|
That same example expressed in a :term:`top file` looks like the following:
|
||||||
|
|
||||||
@ -48,20 +48,20 @@ Excluding a minion based on its ID is also possible:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C 'not web-dc1-srv' test.ping
|
salt -C 'not web-dc1-srv' test.version
|
||||||
|
|
||||||
Versions prior to 2015.8.0 a leading ``not`` was not supported in compound
|
Versions prior to 2015.8.0 a leading ``not`` was not supported in compound
|
||||||
matches. Instead, something like the following was required:
|
matches. Instead, something like the following was required:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C '* and not G@kernel:Darwin' test.ping
|
salt -C '* and not G@kernel:Darwin' test.version
|
||||||
|
|
||||||
Excluding a minion based on its ID was also possible:
|
Excluding a minion based on its ID was also possible:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C '* and not web-dc1-srv' test.ping
|
salt -C '* and not web-dc1-srv' test.version
|
||||||
|
|
||||||
Precedence Matching
|
Precedence Matching
|
||||||
-------------------
|
-------------------
|
||||||
@ -70,7 +70,7 @@ Matchers can be grouped together with parentheses to explicitly declare preceden
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C '( ms-1 or G@id:ms-3 ) and G@id:ms-3' test.ping
|
salt -C '( ms-1 or G@id:ms-3 ) and G@id:ms-3' test.version
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -31,39 +31,39 @@ Match all minions:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping
|
salt '*' test.version
|
||||||
|
|
||||||
Match all minions in the example.net domain or any of the example domains:
|
Match all minions in the example.net domain or any of the example domains:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*.example.net' test.ping
|
salt '*.example.net' test.version
|
||||||
salt '*.example.*' test.ping
|
salt '*.example.*' test.version
|
||||||
|
|
||||||
Match all the ``webN`` minions in the example.net domain (``web1.example.net``,
|
Match all the ``webN`` minions in the example.net domain (``web1.example.net``,
|
||||||
``web2.example.net`` … ``webN.example.net``):
|
``web2.example.net`` … ``webN.example.net``):
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt 'web?.example.net' test.ping
|
salt 'web?.example.net' test.version
|
||||||
|
|
||||||
Match the ``web1`` through ``web5`` minions:
|
Match the ``web1`` through ``web5`` minions:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt 'web[1-5]' test.ping
|
salt 'web[1-5]' test.version
|
||||||
|
|
||||||
Match the ``web1`` and ``web3`` minions:
|
Match the ``web1`` and ``web3`` minions:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt 'web[1,3]' test.ping
|
salt 'web[1,3]' test.version
|
||||||
|
|
||||||
Match the ``web-x``, ``web-y``, and ``web-z`` minions:
|
Match the ``web-x``, ``web-y``, and ``web-z`` minions:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt 'web-[x-z]' test.ping
|
salt 'web-[x-z]' test.version
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ Match both ``web1-prod`` and ``web1-devel`` minions:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -E 'web1-(prod|devel)' test.ping
|
salt -E 'web1-(prod|devel)' test.version
|
||||||
|
|
||||||
When using regular expressions in a State's :term:`top file`, you must specify
|
When using regular expressions in a State's :term:`top file`, you must specify
|
||||||
the matcher as the first option. The following example executes the contents of
|
the matcher as the first option. The following example executes the contents of
|
||||||
@ -102,4 +102,4 @@ At the most basic level, you can specify a flat list of minion IDs:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -L 'web1,web2,web3' test.ping
|
salt -L 'web1,web2,web3' test.version
|
||||||
|
@ -10,7 +10,7 @@ For example, the following matches all CentOS minions:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -G 'os:CentOS' test.ping
|
salt -G 'os:CentOS' test.version
|
||||||
|
|
||||||
Match all minions with 64-bit CPUs, and return number of CPU cores for each
|
Match all minions with 64-bit CPUs, and return number of CPU cores for each
|
||||||
matching minion:
|
matching minion:
|
||||||
|
@ -37,7 +37,7 @@ the target is the grain key followed by a glob expression: "os:Arch*".
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -G 'os:Fedora' test.ping
|
salt -G 'os:Fedora' test.version
|
||||||
|
|
||||||
Will return True from all of the minions running Fedora.
|
Will return True from all of the minions running Fedora.
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ This is well defined with an example:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C 'G@os:Debian and webser* or E@db.*' test.ping
|
salt -C 'G@os:Debian and webser* or E@db.*' test.version
|
||||||
|
|
||||||
In this example any minion who's id starts with ``webser`` and is running
|
In this example any minion who's id starts with ``webser`` and is running
|
||||||
Debian, or any minion who's id starts with db will be matched.
|
Debian, or any minion who's id starts with db will be matched.
|
||||||
|
@ -9,14 +9,14 @@ notation).
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -S 192.168.40.20 test.ping
|
salt -S 192.168.40.20 test.version
|
||||||
salt -S 2001:db8::/64 test.ping
|
salt -S 2001:db8::/64 test.version
|
||||||
|
|
||||||
Ipcidr matching can also be used in compound matches
|
Ipcidr matching can also be used in compound matches
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C 'S@10.0.0.0/24 and G@os:Debian' test.ping
|
salt -C 'S@10.0.0.0/24 and G@os:Debian' test.version
|
||||||
|
|
||||||
It is also possible to use in both pillar and state-matching
|
It is also possible to use in both pillar and state-matching
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ To match a nodegroup on the CLI, use the ``-N`` command-line option:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -N group1 test.ping
|
salt -N group1 test.version
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ Example:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -I 'somekey:specialvalue' test.ping
|
salt -I 'somekey:specialvalue' test.version
|
||||||
|
|
||||||
Like with :ref:`Grains <targeting-grains>`, it is possible to use globbing
|
Like with :ref:`Grains <targeting-grains>`, it is possible to use globbing
|
||||||
as well as match nested values in Pillar, by adding colons for each level that
|
as well as match nested values in Pillar, by adding colons for each level that
|
||||||
@ -31,4 +31,4 @@ is being traversed. The below example would match minions with a pillar named
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -I 'foo:bar:baz*' test.ping
|
salt -I 'foo:bar:baz*' test.version
|
||||||
|
@ -72,11 +72,11 @@ One might target host1 through host100 in the test.com domain with Salt as follo
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt --range %test:CLUSTER test.ping
|
salt --range %test:CLUSTER test.version
|
||||||
|
|
||||||
|
|
||||||
The following salt command would target three hosts: ``frontend``, ``backend``, and ``mysql``:
|
The following salt command would target three hosts: ``frontend``, ``backend``, and ``mysql``:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt --range %test:APPS test.ping
|
salt --range %test:APPS test.version
|
||||||
|
@ -285,12 +285,12 @@ event bus, and returns ``True`` if that event's tag matches. For example:
|
|||||||
run_remote_ex:
|
run_remote_ex:
|
||||||
local.cmd:
|
local.cmd:
|
||||||
- tgt: '*'
|
- tgt: '*'
|
||||||
- func: test.ping
|
- func: test.version
|
||||||
- require:
|
- require:
|
||||||
- check: salt/foo/*/bar
|
- check: salt/foo/*/bar
|
||||||
|
|
||||||
This formula will look for an event whose tag is ``salt/foo/<anything>/bar`` and
|
This formula will look for an event whose tag is ``salt/foo/<anything>/bar`` and
|
||||||
if it comes in, issue a ``test.ping`` to all minions.
|
if it comes in, issue a ``test.version`` to all minions.
|
||||||
|
|
||||||
|
|
||||||
Register Persistence
|
Register Persistence
|
||||||
|
@ -131,15 +131,15 @@ On the Master node:
|
|||||||
Unaccepted Keys:
|
Unaccepted Keys:
|
||||||
Rejected Keys:
|
Rejected Keys:
|
||||||
|
|
||||||
# salt '*' test.ping
|
# salt '*' test.version
|
||||||
minion_1:
|
minion_1:
|
||||||
True
|
2018.3.4
|
||||||
minion_2:
|
minion_2:
|
||||||
True
|
2018.3.4
|
||||||
minion_4:
|
minion_4:
|
||||||
True
|
2018.3.4
|
||||||
minion_3:
|
minion_3:
|
||||||
True
|
2018.3.4
|
||||||
|
|
||||||
Topology
|
Topology
|
||||||
========
|
========
|
||||||
|
@ -277,7 +277,7 @@ This command will return data about all of the hypervisors and respective
|
|||||||
virtual machines.
|
virtual machines.
|
||||||
|
|
||||||
Now that the new VM is booted it should have contacted the Salt Master, a
|
Now that the new VM is booted it should have contacted the Salt Master, a
|
||||||
``test.ping`` will reveal if the new VM is running.
|
``test.version`` will reveal if the new VM is running.
|
||||||
|
|
||||||
|
|
||||||
QEMU copy on write support
|
QEMU copy on write support
|
||||||
|
@ -81,7 +81,7 @@ simple `salt-call` command:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt-call --local dockerng.call test test.ping
|
salt-call --local dockerng.call test test.version
|
||||||
salt-call --local dockerng.call test network.interfaces
|
salt-call --local dockerng.call test network.interfaces
|
||||||
salt-call --local dockerng.call test disk.usage
|
salt-call --local dockerng.call test disk.usage
|
||||||
salt-call --local dockerng.call test pkg.list_pkgs
|
salt-call --local dockerng.call test pkg.list_pkgs
|
||||||
|
@ -227,9 +227,10 @@ This allows you to use any number of potential fallback passwords.
|
|||||||
|
|
||||||
This scenario is especially true, and even slower, when the proxy
|
This scenario is especially true, and even slower, when the proxy
|
||||||
minion first starts. If the correct password is not the first password
|
minion first starts. If the correct password is not the first password
|
||||||
on the list, it may take up to a minute for ``test.ping`` to respond
|
on the list, it may take up to a minute for ``test.version`` to respond
|
||||||
with a ``True`` result. Once the initial authorization is complete, the
|
with salt's version installed (Example: ``2018.3.4``. Once the initial
|
||||||
responses for commands will be a little faster.
|
authorization is complete, the responses for commands will be a little
|
||||||
|
faster.
|
||||||
|
|
||||||
To avoid these longer waiting periods, SaltStack recommends moving the
|
To avoid these longer waiting periods, SaltStack recommends moving the
|
||||||
correct password to the top of the list and restarting the proxy minion
|
correct password to the top of the list and restarting the proxy minion
|
||||||
@ -366,7 +367,7 @@ proxy processes!
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# salt 'esxi-*' test.ping
|
# salt 'esxi-*' test.version
|
||||||
esxi-1:
|
esxi-1:
|
||||||
True
|
True
|
||||||
esxi-3:
|
esxi-3:
|
||||||
@ -377,7 +378,7 @@ Executing Commands
|
|||||||
==================
|
==================
|
||||||
|
|
||||||
Now that you've configured your Proxy Minions and have them responding successfully
|
Now that you've configured your Proxy Minions and have them responding successfully
|
||||||
to a ``test.ping``, we can start executing commands against the ESXi hosts via Salt.
|
to a ``test.version``, we can start executing commands against the ESXi hosts via Salt.
|
||||||
|
|
||||||
It's important to understand how this particular proxy works, and there are a couple
|
It's important to understand how this particular proxy works, and there are a couple
|
||||||
of important pieces to be aware of in order to start running remote execution and
|
of important pieces to be aware of in order to start running remote execution and
|
||||||
|
@ -28,8 +28,11 @@ FirewallD use the command line client ``firewall-cmd``.
|
|||||||
|
|
||||||
firewall-cmd --permanent --zone=<zone> --add-port=4505-4506/tcp
|
firewall-cmd --permanent --zone=<zone> --add-port=4505-4506/tcp
|
||||||
|
|
||||||
Please choose the desired zone according to your setup. Don't forget to reload
|
A network zone defines the security level of trust for the the network.
|
||||||
after you made your changes.
|
The user should choose an appropriate zone value for their setup.
|
||||||
|
Possible values include: drop, block, public, external, dmz, work, home, internal, trusted.
|
||||||
|
|
||||||
|
Don't forget to reload after you made your changes.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -231,5 +234,5 @@ be set on the Master:
|
|||||||
needs to communicate with the listening network socket of
|
needs to communicate with the listening network socket of
|
||||||
``salt-master`` on the *loopback* interface. Without this you will
|
``salt-master`` on the *loopback* interface. Without this you will
|
||||||
see no outgoing Salt traffic from the master, even for a simple
|
see no outgoing Salt traffic from the master, even for a simple
|
||||||
``salt '*' test.ping``, because the ``salt`` client never reached
|
``salt '*' test.version``, because the ``salt`` client never reached
|
||||||
the ``salt-master`` to tell it to carry out the execution.
|
the ``salt-master`` to tell it to carry out the execution.
|
||||||
|
@ -27,14 +27,14 @@ following function. The default filter is a glob on the minion id. For example:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping
|
salt '*' test.version
|
||||||
salt '*.example.org' test.ping
|
salt '*.example.org' test.version
|
||||||
|
|
||||||
Targets can be based on minion system information using the Grains system:
|
Targets can be based on minion system information using the Grains system:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -G 'os:Ubuntu' test.ping
|
salt -G 'os:Ubuntu' test.version
|
||||||
|
|
||||||
.. seealso:: :ref:`Grains system <targeting-grains>`
|
.. seealso:: :ref:`Grains system <targeting-grains>`
|
||||||
|
|
||||||
@ -42,19 +42,19 @@ Targets can be filtered by regular expression:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -E 'virtmach[0-9]' test.ping
|
salt -E 'virtmach[0-9]' test.version
|
||||||
|
|
||||||
Targets can be explicitly specified in a list:
|
Targets can be explicitly specified in a list:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -L 'foo,bar,baz,quo' test.ping
|
salt -L 'foo,bar,baz,quo' test.version
|
||||||
|
|
||||||
Or Multiple target types can be combined in one command:
|
Or Multiple target types can be combined in one command:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt -C 'G@os:Ubuntu and webser* or E@database.*' test.ping
|
salt -C 'G@os:Ubuntu and webser* or E@database.*' test.version
|
||||||
|
|
||||||
|
|
||||||
function
|
function
|
||||||
@ -74,7 +74,7 @@ Show all currently available minions:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping
|
salt '*' test.version
|
||||||
|
|
||||||
Run an arbitrary shell command:
|
Run an arbitrary shell command:
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ The minion will connect to the first master from its master list
|
|||||||
[DEBUG ] Decrypting the current master AES key
|
[DEBUG ] Decrypting the current master AES key
|
||||||
|
|
||||||
|
|
||||||
A test.ping on the master the minion is currently connected to should be run to
|
A test.version on the master the minion is currently connected to should be run to
|
||||||
test connectivity.
|
test connectivity.
|
||||||
|
|
||||||
If successful, that master should be turned off. A firewall-rule denying the
|
If successful, that master should be turned off. A firewall-rule denying the
|
||||||
|
@ -238,16 +238,16 @@ start with looks like this:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
salt '*' test.ping
|
salt '*' test.version
|
||||||
|
|
||||||
The ``*`` is the target, which specifies all minions.
|
The ``*`` is the target, which specifies all minions.
|
||||||
|
|
||||||
``test.ping`` tells the minion to run the :py:func:`test.ping
|
``test.version`` tells the minion to run the :py:func:`test.version
|
||||||
<salt.modules.test.ping>` function.
|
<salt.modules.test.version>` function.
|
||||||
|
|
||||||
In the case of ``test.ping``, ``test`` refers to a :ref:`execution module
|
In the case of ``test.version``, ``test`` refers to a :ref:`execution module
|
||||||
<writing-execution-modules>`. ``ping`` refers to the :py:func:`ping
|
<writing-execution-modules>`. ``version`` refers to the :py:func:`version
|
||||||
<salt.modules.test.ping>` function contained in the aforementioned ``test``
|
<salt.modules.test.version>` function contained in the aforementioned ``test``
|
||||||
module.
|
module.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -257,12 +257,10 @@ module.
|
|||||||
services.
|
services.
|
||||||
|
|
||||||
The result of running this command will be the master instructing all of the
|
The result of running this command will be the master instructing all of the
|
||||||
minions to execute :py:func:`test.ping <salt.modules.test.ping>` in parallel
|
minions to execute :py:func:`test.version <salt.modules.test.version>` in parallel
|
||||||
and return the result.
|
and return the result. Using :py:func:`test.version <salt.modules.test.version>`
|
||||||
|
is a good way of confirming that a minion is connected, and reaffirm to the user
|
||||||
This is not an actual ICMP ping, but rather a simple function which returns ``True``.
|
the salt version(s) they have installed on the minions.
|
||||||
Using :py:func:`test.ping <salt.modules.test.ping>` is a good way of confirming that a minion is
|
|
||||||
connected.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -271,7 +269,7 @@ connected.
|
|||||||
well by using the :conf_minion:`id` parameter.
|
well by using the :conf_minion:`id` parameter.
|
||||||
|
|
||||||
Of course, there are hundreds of other modules that can be called just as
|
Of course, there are hundreds of other modules that can be called just as
|
||||||
``test.ping`` can. For example, the following would return disk usage on all
|
``test.version`` can. For example, the following would return disk usage on all
|
||||||
targeted minions:
|
targeted minions:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -591,7 +589,7 @@ This formula can be referenced via the following command:
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
:py:func:`state.apply <salt.modules.state.apply_>` is just another remote
|
:py:func:`state.apply <salt.modules.state.apply_>` is just another remote
|
||||||
execution function, just like :py:func:`test.ping <salt.modules.test.ping>`
|
execution function, just like :py:func:`test.version <salt.modules.test.version>`
|
||||||
or :py:func:`disk.usage <salt.modules.disk.usage>`. It simply takes the
|
or :py:func:`disk.usage <salt.modules.disk.usage>`. It simply takes the
|
||||||
name of an SLS file as an argument.
|
name of an SLS file as an argument.
|
||||||
|
|
||||||
|
@ -412,9 +412,9 @@ following:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sudo salt '*' test.ping
|
sudo salt '*' test.version
|
||||||
|
|
||||||
You should see your minion answering the ping. It's now time to do some
|
You should see your minion answering with its salt version. It's now time to do some
|
||||||
configuration.
|
configuration.
|
||||||
|
|
||||||
|
|
||||||
|
68
noxfile.py
68
noxfile.py
@ -7,9 +7,12 @@ Nox configuration script
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
# Import Python libs
|
# Import Python libs
|
||||||
|
from __future__ import absolute_import, unicode_literals, print_function
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.stderr.write('Do not execute this file directly. Use nox instead, it will know how to handle this file\n')
|
sys.stderr.write('Do not execute this file directly. Use nox instead, it will know how to handle this file\n')
|
||||||
@ -22,9 +25,6 @@ import nox
|
|||||||
# Global Path Definitions
|
# Global Path Definitions
|
||||||
REPO_ROOT = os.path.abspath(os.path.dirname(__file__))
|
REPO_ROOT = os.path.abspath(os.path.dirname(__file__))
|
||||||
SITECUSTOMIZE_DIR = os.path.join(REPO_ROOT, 'tests', 'support', 'coverage')
|
SITECUSTOMIZE_DIR = os.path.join(REPO_ROOT, 'tests', 'support', 'coverage')
|
||||||
|
|
||||||
# We can't just import salt because if this is running under a frozen nox, there
|
|
||||||
# will be no salt to import
|
|
||||||
IS_WINDOWS = sys.platform.lower().startswith('win')
|
IS_WINDOWS = sys.platform.lower().startswith('win')
|
||||||
REQUIREMENTS_OVERRIDES = {
|
REQUIREMENTS_OVERRIDES = {
|
||||||
None: [
|
None: [
|
||||||
@ -44,6 +44,7 @@ nox.options.reuse_existing_virtualenvs = True
|
|||||||
# Don't fail on missing interpreters
|
# Don't fail on missing interpreters
|
||||||
nox.options.error_on_missing_interpreters = False
|
nox.options.error_on_missing_interpreters = False
|
||||||
|
|
||||||
|
|
||||||
def _create_ci_directories():
|
def _create_ci_directories():
|
||||||
for dirname in ('logs', 'coverage', 'xml-unittests-output'):
|
for dirname in ('logs', 'coverage', 'xml-unittests-output'):
|
||||||
path = os.path.join(REPO_ROOT, 'artifacts', dirname)
|
path = os.path.join(REPO_ROOT, 'artifacts', dirname)
|
||||||
@ -51,26 +52,41 @@ def _create_ci_directories():
|
|||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
|
|
||||||
|
|
||||||
def _install_requirements_overrides(session, *extra_requirements):
|
def _install_requirements(session, *extra_requirements):
|
||||||
|
# Install requirements
|
||||||
|
distro_requirements = None
|
||||||
|
|
||||||
|
if IS_WINDOWS:
|
||||||
|
_distro_requirements = os.path.join(REPO_ROOT, 'requirements', 'static', 'windows.txt')
|
||||||
|
if os.path.exists(_distro_requirements):
|
||||||
|
with open(_distro_requirements) as rfh:
|
||||||
|
if 'ioflo' in rfh.read():
|
||||||
|
# Because we still install ioflo, which requires setuptools-git, which fails with a
|
||||||
|
# weird SSL certificate issue(weird because the requirements file requirements install
|
||||||
|
# fine), let's previously have setuptools-git installed
|
||||||
|
session.install('setuptools-git')
|
||||||
|
distro_requirements = _distro_requirements
|
||||||
|
else:
|
||||||
|
# The distro package doesn't output anything for Windows
|
||||||
session.install('distro')
|
session.install('distro')
|
||||||
output = session.run('distro', '-j', silent=True)
|
output = session.run('distro', '-j', silent=True)
|
||||||
distro_data = json.loads(output.strip())
|
distro = json.loads(output.strip())
|
||||||
|
session.log('Distro information:\n%s', pprint.pformat(distro))
|
||||||
|
distro_keys = [
|
||||||
|
'{id}'.format(**distro),
|
||||||
|
'{id}-{version}'.format(**distro),
|
||||||
|
'{id}-{version_parts[major]}'.format(**distro)
|
||||||
|
]
|
||||||
|
for distro_key in distro_keys:
|
||||||
|
_distro_requirements = os.path.join(REPO_ROOT, 'requirements', 'static', '{}.txt'.format(distro_key))
|
||||||
|
if os.path.exists(_distro_requirements):
|
||||||
|
distro_requirements = _distro_requirements
|
||||||
|
break
|
||||||
|
|
||||||
requirements_overrides = REQUIREMENTS_OVERRIDES[None]
|
if distro_requirements is not None:
|
||||||
requirements_overrides.extend(
|
_requirements_files = [distro_requirements]
|
||||||
REQUIREMENTS_OVERRIDES.get(
|
requirements_files = []
|
||||||
'{id}-{version}'.format(**distro_data),
|
else:
|
||||||
[]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if requirements_overrides:
|
|
||||||
for requirement in requirements_overrides:
|
|
||||||
session.install(requirement)
|
|
||||||
|
|
||||||
|
|
||||||
def _install_requirements(session, *extra_requirements):
|
|
||||||
_install_requirements_overrides(session)
|
|
||||||
# Install requirements
|
|
||||||
_requirements_files = [
|
_requirements_files = [
|
||||||
os.path.join(REPO_ROOT, 'requirements', 'pytest.txt')
|
os.path.join(REPO_ROOT, 'requirements', 'pytest.txt')
|
||||||
]
|
]
|
||||||
@ -115,14 +131,9 @@ def _install_requirements(session, *extra_requirements):
|
|||||||
if extra_requirements:
|
if extra_requirements:
|
||||||
session.install(*extra_requirements)
|
session.install(*extra_requirements)
|
||||||
|
|
||||||
if IS_WINDOWS:
|
|
||||||
# Windows hacks :/
|
|
||||||
nox_windows_setup = os.path.join(REPO_ROOT, 'tests', 'support', 'nox-windows-setup.py')
|
|
||||||
session.run('python', nox_windows_setup)
|
|
||||||
|
|
||||||
|
|
||||||
def _run_with_coverage(session, *test_cmd):
|
def _run_with_coverage(session, *test_cmd):
|
||||||
session.install('coverage')
|
session.install('coverage==4.5.3')
|
||||||
session.run('coverage', 'erase')
|
session.run('coverage', 'erase')
|
||||||
python_path_env_var = os.environ.get('PYTHONPATH') or None
|
python_path_env_var = os.environ.get('PYTHONPATH') or None
|
||||||
if python_path_env_var is None:
|
if python_path_env_var is None:
|
||||||
@ -144,12 +155,11 @@ def _run_with_coverage(session, *test_cmd):
|
|||||||
@nox.parametrize('coverage', [False, True])
|
@nox.parametrize('coverage', [False, True])
|
||||||
def runtests(session, coverage):
|
def runtests(session, coverage):
|
||||||
# Install requirements
|
# Install requirements
|
||||||
_install_requirements(session, 'unittest-xml-reporting')
|
_install_requirements(session, 'unittest-xml-reporting==2.2.1')
|
||||||
# Create required artifacts directories
|
# Create required artifacts directories
|
||||||
_create_ci_directories()
|
_create_ci_directories()
|
||||||
|
|
||||||
cmd_args = [
|
cmd_args = [
|
||||||
'-v',
|
|
||||||
'--tests-logfile={}'.format(
|
'--tests-logfile={}'.format(
|
||||||
os.path.join(REPO_ROOT, 'artifacts', 'logs', 'runtests.log')
|
os.path.join(REPO_ROOT, 'artifacts', 'logs', 'runtests.log')
|
||||||
)
|
)
|
||||||
@ -176,7 +186,7 @@ def pytest(session, coverage):
|
|||||||
),
|
),
|
||||||
'--no-print-logs',
|
'--no-print-logs',
|
||||||
'-ra',
|
'-ra',
|
||||||
'-sv'
|
'-s'
|
||||||
] + session.posargs
|
] + session.posargs
|
||||||
|
|
||||||
if coverage is True:
|
if coverage is True:
|
||||||
|
@ -2,7 +2,7 @@ Jinja2
|
|||||||
# This should be changed to msgpack-python for Packages
|
# This should be changed to msgpack-python for Packages
|
||||||
# msgpack-python>0.3,!=0.5.5
|
# msgpack-python>0.3,!=0.5.5
|
||||||
msgpack>=0.5,!=0.5.5
|
msgpack>=0.5,!=0.5.5
|
||||||
PyYAML
|
PyYAML<5.1
|
||||||
MarkupSafe
|
MarkupSafe
|
||||||
requests>=1.0.0
|
requests>=1.0.0
|
||||||
tornado>=4.2.1,<6.0; python_version < '3'
|
tornado>=4.2.1,<6.0; python_version < '3'
|
||||||
|
14
requirements/static/README.rst
Normal file
14
requirements/static/README.rst
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
What Is This All About
|
||||||
|
======================
|
||||||
|
|
||||||
|
This directory will contain platform specific requirements(and the requirements
|
||||||
|
of each requirements) locked to the versions used as if the testing environment
|
||||||
|
was setup using the salt-jenkins states.
|
||||||
|
|
||||||
|
The purpose of this is to ease the transition to `nox` and golden images where
|
||||||
|
only binary system packages are installed on the golden image and `nox`
|
||||||
|
installs the python dependencies on virtualenv specifically created for the
|
||||||
|
test run.
|
||||||
|
|
||||||
|
This will also make sure we run the tests with the exact same dependencies
|
||||||
|
everytime.
|
34
requirements/static/arch.in
Normal file
34
requirements/static/arch.in
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
109
requirements/static/arch.txt
Normal file
109
requirements/static/arch.txt
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/arch.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/arch.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.118
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.118 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.1
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.6 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, kubernetes, more-itertools, moto, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.15.0 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/centos-6.in
Normal file
37
requirements/static/centos-6.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython<2.0.9
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
supervisor; python_version < '3'
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
122
requirements/static/centos-6.txt
Normal file
122
requirements/static/centos-6.txt
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/centos-6.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/centos-6.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
bcrypt==3.1.6 # via paramiko
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb==0.6.4 # via gitpython
|
||||||
|
gitpython==2.0.8
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
meld3==1.0.2 # via supervisor
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.4.2 # via junos-eznc, ncclient, scp
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pynacl==1.3.0 # via paramiko
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via bcrypt, cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pynacl, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap==0.9.0 # via gitdb
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
supervisor==3.3.5 ; python_version < "3"
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/centos-7.in
Normal file
37
requirements/static/centos-7.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
supervisor; python_version < '3'
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
122
requirements/static/centos-7.txt
Normal file
122
requirements/static/centos-7.txt
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/centos-7.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/centos-7.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
bcrypt==3.1.6 # via paramiko
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
meld3==1.0.2 # via supervisor
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.4.2 # via junos-eznc, ncclient, scp
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pynacl==1.3.0 # via paramiko
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via bcrypt, cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pynacl, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
supervisor==3.3.5 ; python_version < "3"
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/debian-8.in
Normal file
37
requirements/static/debian-8.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
paramiko==2.1.2
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
118
requirements/static/debian-8.txt
Normal file
118
requirements/static/debian-8.txt
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/debian-8.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/debian-8.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.1.2
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/debian-9.in
Normal file
37
requirements/static/debian-9.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
paramiko==2.1.2
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
118
requirements/static/debian-9.txt
Normal file
118
requirements/static/debian-9.txt
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/debian-9.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/debian-9.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.1.2
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
36
requirements/static/fedora-28.in
Normal file
36
requirements/static/fedora-28.in
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
120
requirements/static/fedora-28.txt
Normal file
120
requirements/static/fedora-28.txt
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/fedora-28.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/fedora-28.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
bcrypt==3.1.6 # via paramiko
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.4.2 # via junos-eznc, ncclient, scp
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pynacl==1.3.0 # via paramiko
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via bcrypt, cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pynacl, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
36
requirements/static/fedora-29.in
Normal file
36
requirements/static/fedora-29.in
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
120
requirements/static/fedora-29.txt
Normal file
120
requirements/static/fedora-29.txt
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/fedora-29.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/fedora-29.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
bcrypt==3.1.6 # via paramiko
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.4.2 # via junos-eznc, ncclient, scp
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pynacl==1.3.0 # via paramiko
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via bcrypt, cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pynacl, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
38
requirements/static/opensuse-42.in
Normal file
38
requirements/static/opensuse-42.in
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
certifi
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
hgtools
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
setuptools-scm
|
||||||
|
strict_rfc3339
|
||||||
|
supervisor; python_version < '3'
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
113
requirements/static/opensuse-42.txt
Normal file
113
requirements/static/opensuse-42.txt
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/opensuse-42.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/opensuse-42.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
hgtools==8.1.1
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
markupsafe==1.1.1
|
||||||
|
meld3==1.0.2 # via supervisor
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
setproctitle==1.1.10
|
||||||
|
setuptools-scm==3.2.0
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, kubernetes, more-itertools, moto, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
supervisor==3.3.5 ; python_version < "3"
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/opensuse-leap-15.in
Normal file
37
requirements/static/opensuse-leap-15.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
certifi
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
hgtools
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
setuptools-scm
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
111
requirements/static/opensuse-leap-15.txt
Normal file
111
requirements/static/opensuse-leap-15.txt
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/opensuse-leap-15.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/opensuse-leap-15.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
hgtools==8.1.1
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
setproctitle==1.1.10
|
||||||
|
setuptools-scm==3.2.0
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, kubernetes, more-itertools, moto, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/ubuntu-14.04.in
Normal file
37
requirements/static/ubuntu-14.04.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
paramiko==2.1.2
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
118
requirements/static/ubuntu-14.04.txt
Normal file
118
requirements/static/ubuntu-14.04.txt
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/ubuntu-14.04.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/ubuntu-14.04.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.1.2
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/ubuntu-16.04.in
Normal file
37
requirements/static/ubuntu-16.04.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
paramiko==2.1.2
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
118
requirements/static/ubuntu-16.04.txt
Normal file
118
requirements/static/ubuntu-16.04.txt
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/ubuntu-16.04.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/ubuntu-16.04.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.1.2
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/ubuntu-18.04.in
Normal file
37
requirements/static/ubuntu-18.04.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# This is a compilation of requirements installed on salt-jenkins git.salt state run
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
cffi
|
||||||
|
cherrypy==17.3.0
|
||||||
|
dnspython
|
||||||
|
docker
|
||||||
|
futures>=2.0; python_version < '3.0'
|
||||||
|
GitPython
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
junos-eznc
|
||||||
|
jxmlease
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
paramiko==2.1.2
|
||||||
|
psutil
|
||||||
|
pycrypto>=2.6.1
|
||||||
|
pyinotify
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
pyzmq
|
||||||
|
requests
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
118
requirements/static/ubuntu-18.04.txt
Normal file
118
requirements/static/ubuntu-18.04.txt
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/ubuntu-18.04.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/ubuntu-18.04.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
aws-xray-sdk==0.95 # via moto
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.functools-lru-cache==1.5 # via cheroot, jaraco.functools
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
backports.tempfile==1.0 # via moto
|
||||||
|
backports.weakref==1.0.post1 # via backports.tempfile
|
||||||
|
boto3==1.9.115
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.115 # via boto3, moto, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
cheroot==6.5.4 # via cherrypy
|
||||||
|
cherrypy==17.3.0
|
||||||
|
contextlib2==0.5.5 # via cherrypy
|
||||||
|
cookies==2.2.1 # via responses
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via moto, paramiko, pyopenssl
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==3.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
ecdsa==0.13 # via python-jose
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
future==0.17.1 # via python-jose
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
gitdb2==2.0.5 # via gitpython
|
||||||
|
gitpython==2.1.11
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jaraco.functools==2.0 # via tempora
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsondiff==1.1.1 # via moto
|
||||||
|
jsonpickle==1.1 # via aws-xray-sdk
|
||||||
|
jsonschema==2.6.0
|
||||||
|
junos-eznc==2.2.0
|
||||||
|
jxmlease==1.0.1
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
lxml==4.3.2 # via junos-eznc, ncclient
|
||||||
|
markupsafe==1.1.1
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
moto==1.3.7
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
ncclient==0.6.3 # via junos-eznc
|
||||||
|
netaddr==0.7.19 # via junos-eznc
|
||||||
|
paramiko==2.1.2
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
portend==2.3 # via cherrypy
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyaml==18.11.0 # via moto
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via paramiko, pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodome==3.7.3 # via python-jose
|
||||||
|
pyinotify==0.9.6
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pyserial==3.4 # via junos-eznc
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes, moto
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
python-jose==2.0.2 # via moto
|
||||||
|
pytz==2018.9 # via moto, tempora
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
responses==0.10.5 # via moto
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
scp==0.13.1 # via junos-eznc
|
||||||
|
selectors2==2.0.1 # via ncclient
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cheroot, cherrypy, cryptography, docker, docker-pycreds, google-auth, junos-eznc, kubernetes, more-itertools, moto, ncclient, pathlib2, pyopenssl, pytest, python-dateutil, python-jose, pyvmomi, responses, salttesting, singledispatch, tempora, websocket-client
|
||||||
|
smmap2==2.0.5 # via gitdb2
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
tempora==1.14 # via portend
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
werkzeug==0.14.1 # via moto
|
||||||
|
wrapt==1.11.1 # via aws-xray-sdk
|
||||||
|
xmltodict==0.12.0 # via moto
|
||||||
|
zc.lockfile==1.4 # via cherrypy
|
37
requirements/static/windows.in
Normal file
37
requirements/static/windows.in
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
apache-libcloud==1.0.0
|
||||||
|
boto3
|
||||||
|
boto>=2.46.0
|
||||||
|
dmidecode
|
||||||
|
dnspython
|
||||||
|
docker==2.7.0
|
||||||
|
ioflo
|
||||||
|
jsonschema<=2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes<4.0
|
||||||
|
mock<1.1.0
|
||||||
|
more-itertools==5.0.0
|
||||||
|
msgpack-python >= 0.4.2, != 0.5.5
|
||||||
|
patch
|
||||||
|
psutil
|
||||||
|
pycryptodomex
|
||||||
|
pyopenssl
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg
|
||||||
|
pyvmomi
|
||||||
|
rfc3987
|
||||||
|
salttesting==2017.6.1
|
||||||
|
sed
|
||||||
|
setproctitle
|
||||||
|
strict_rfc3339
|
||||||
|
supervisor; python_version < '3'
|
||||||
|
timelib
|
||||||
|
tornado<5.0
|
||||||
|
virtualenv
|
||||||
|
|
||||||
|
# If running under windows, please uncomment the following 2 requirements before running
|
||||||
|
# pip-compile -o requirements/static/windows.txt requirements/zeromq.txt requirements/raet.txt requirements/pytest.txt requirements/static/windows.in
|
||||||
|
#
|
||||||
|
# On non windows, please copy the following 2 requirements to the generated windows.txt, un-commented
|
||||||
|
|
||||||
|
#pywin32==223
|
||||||
|
#wmi==1.4.9
|
88
requirements/static/windows.txt
Normal file
88
requirements/static/windows.txt
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile -o requirements/static/windows.txt requirements/zeromq.txt requirements/pytest.txt requirements/static/windows.in
|
||||||
|
#
|
||||||
|
apache-libcloud==1.0.0
|
||||||
|
asn1crypto==0.24.0 # via cryptography
|
||||||
|
atomicwrites==1.3.0 # via pytest
|
||||||
|
attrs==19.1.0 # via pytest
|
||||||
|
backports-abc==0.5 # via tornado
|
||||||
|
backports.ssl-match-hostname==3.7.0.1 # via docker, websocket-client
|
||||||
|
boto3==1.9.117
|
||||||
|
boto==2.49.0
|
||||||
|
botocore==1.12.117 # via boto3, s3transfer
|
||||||
|
cachetools==3.1.0 # via google-auth
|
||||||
|
certifi==2019.3.9 # via kubernetes, requests, tornado
|
||||||
|
cffi==1.12.2 # via cryptography
|
||||||
|
chardet==3.0.4 # via requests
|
||||||
|
coverage==4.5.3 # via pytest-cov
|
||||||
|
cryptography==2.6.1 # via pyopenssl
|
||||||
|
dmidecode==0.9.0
|
||||||
|
dnspython==1.16.0
|
||||||
|
docker-pycreds==0.4.0 # via docker
|
||||||
|
docker==2.7.0
|
||||||
|
docutils==0.14 # via botocore
|
||||||
|
enum34==1.1.6 # via cryptography
|
||||||
|
funcsigs==1.0.2 # via pytest
|
||||||
|
functools32==3.2.3.post2 # via jsonschema
|
||||||
|
futures==3.2.0 ; python_version < "3.0"
|
||||||
|
google-auth==1.6.3 # via kubernetes
|
||||||
|
idna==2.8 # via requests
|
||||||
|
ioflo==1.7.5
|
||||||
|
ipaddress==1.0.22 # via cryptography, docker, kubernetes
|
||||||
|
jinja2==2.10
|
||||||
|
jmespath==0.9.4 # via boto3, botocore
|
||||||
|
jsonschema==2.6.0
|
||||||
|
keyring==5.7.1
|
||||||
|
kubernetes==3.0.0
|
||||||
|
markupsafe==1.1.1
|
||||||
|
meld3==1.0.2 # via supervisor
|
||||||
|
mock==1.0.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
msgpack-python==0.5.6
|
||||||
|
msgpack==0.6.1
|
||||||
|
patch==1.16
|
||||||
|
pathlib2==2.3.3 # via pytest
|
||||||
|
pluggy==0.9.0 # via pytest
|
||||||
|
psutil==5.6.1
|
||||||
|
py==1.8.0 # via pytest
|
||||||
|
pyasn1-modules==0.2.4 # via google-auth
|
||||||
|
pyasn1==0.4.5 # via pyasn1-modules, rsa
|
||||||
|
pycparser==2.19 # via cffi
|
||||||
|
pycrypto==2.6.1
|
||||||
|
pycryptodomex==3.7.3
|
||||||
|
pyopenssl==19.0.0
|
||||||
|
pytest-cov==2.6.1
|
||||||
|
pytest-helpers-namespace==2019.1.8
|
||||||
|
pytest-salt-runtests-bridge==2019.1.30
|
||||||
|
pytest-salt==2018.12.8
|
||||||
|
pytest-tempdir==2018.8.11
|
||||||
|
pytest-timeout==1.3.3
|
||||||
|
pytest==4.3.1
|
||||||
|
python-dateutil==2.8.0 # via botocore, kubernetes
|
||||||
|
python-etcd==0.4.2
|
||||||
|
python-gnupg==0.4.4
|
||||||
|
pyvmomi==6.7.1.2018.12
|
||||||
|
pyyaml==3.13
|
||||||
|
pyzmq==18.0.1 ; python_version != "3.4"
|
||||||
|
requests==2.21.0
|
||||||
|
rfc3987==1.3.8
|
||||||
|
rsa==4.0 # via google-auth
|
||||||
|
s3transfer==0.2.0 # via boto3
|
||||||
|
salttesting==2017.6.1
|
||||||
|
scandir==1.10.0 # via pathlib2
|
||||||
|
sed==0.3.1
|
||||||
|
setproctitle==1.1.10
|
||||||
|
singledispatch==3.4.0.3 # via tornado
|
||||||
|
six==1.12.0 # via cryptography, docker, docker-pycreds, google-auth, kubernetes, more-itertools, pathlib2, pyopenssl, pytest, python-dateutil, pyvmomi, salttesting, singledispatch, websocket-client
|
||||||
|
strict-rfc3339==0.7
|
||||||
|
supervisor==3.3.5 ; python_version < "3"
|
||||||
|
timelib==0.2.4
|
||||||
|
tornado==4.5.3 ; python_version < "3"
|
||||||
|
urllib3==1.24.1 # via botocore, kubernetes, python-etcd, requests
|
||||||
|
virtualenv==16.4.3
|
||||||
|
websocket-client==0.40.0 # via docker, kubernetes
|
||||||
|
pywin32==223
|
||||||
|
wmi==1.4.9
|
@ -1294,16 +1294,16 @@ class Cloud(object):
|
|||||||
start = int(time.time())
|
start = int(time.time())
|
||||||
while int(time.time()) < start + 60:
|
while int(time.time()) < start + 60:
|
||||||
# We'll try every <timeout> seconds, up to a minute
|
# We'll try every <timeout> seconds, up to a minute
|
||||||
mopts_ = salt.config.DEFAULT_MINION_OPTS
|
mopts_ = salt.config.DEFAULT_MASTER_OPTS
|
||||||
conf_path = '/'.join(self.opts['conf_file'].split('/')[:-1])
|
conf_path = '/'.join(self.opts['conf_file'].split('/')[:-1])
|
||||||
mopts_.update(
|
mopts_.update(
|
||||||
salt.config.minion_config(
|
salt.config.master_config(
|
||||||
os.path.join(conf_path,
|
os.path.join(conf_path,
|
||||||
'minion')
|
'master')
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
client = salt.client.get_local_client(mopts=self.opts)
|
client = salt.client.get_local_client(mopts=mopts_)
|
||||||
|
|
||||||
ret = client.cmd(
|
ret = client.cmd(
|
||||||
vm_['name'],
|
vm_['name'],
|
||||||
|
@ -1495,6 +1495,10 @@ def _parse_cpe_name(cpe):
|
|||||||
|
|
||||||
Info: https://csrc.nist.gov/projects/security-content-automation-protocol/scap-specifications/cpe
|
Info: https://csrc.nist.gov/projects/security-content-automation-protocol/scap-specifications/cpe
|
||||||
|
|
||||||
|
Note: cpe:2.3:part:vendor:product:version:update:edition:lang:sw_edition:target_sw:target_hw:other
|
||||||
|
however some OS's do not have the full 13 elements, for example:
|
||||||
|
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
|
||||||
|
|
||||||
:param cpe:
|
:param cpe:
|
||||||
:return:
|
:return:
|
||||||
'''
|
'''
|
||||||
@ -1510,7 +1514,11 @@ def _parse_cpe_name(cpe):
|
|||||||
ret['vendor'], ret['product'], ret['version'] = cpe[2:5]
|
ret['vendor'], ret['product'], ret['version'] = cpe[2:5]
|
||||||
ret['phase'] = cpe[5] if len(cpe) > 5 else None
|
ret['phase'] = cpe[5] if len(cpe) > 5 else None
|
||||||
ret['part'] = part.get(cpe[1][1:])
|
ret['part'] = part.get(cpe[1][1:])
|
||||||
elif len(cpe) == 13 and cpe[1] == '2.3': # WFN to a string
|
elif len(cpe) == 6 and cpe[1] == '2.3': # WFN to a string
|
||||||
|
ret['vendor'], ret['product'], ret['version'] = [x if x != '*' else None for x in cpe[3:6]]
|
||||||
|
ret['phase'] = None
|
||||||
|
ret['part'] = part.get(cpe[2])
|
||||||
|
elif len(cpe) > 7 and len(cpe) <= 13 and cpe[1] == '2.3': # WFN to a string
|
||||||
ret['vendor'], ret['product'], ret['version'], ret['phase'] = [x if x != '*' else None for x in cpe[3:7]]
|
ret['vendor'], ret['product'], ret['version'], ret['phase'] = [x if x != '*' else None for x in cpe[3:7]]
|
||||||
ret['part'] = part.get(cpe[2])
|
ret['part'] = part.get(cpe[2])
|
||||||
|
|
||||||
|
@ -846,6 +846,13 @@ def _get_create_kwargs(skip_translate=None,
|
|||||||
Take input kwargs and return a kwargs dict to pass to docker-py's
|
Take input kwargs and return a kwargs dict to pass to docker-py's
|
||||||
create_container() function.
|
create_container() function.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
networks = kwargs.pop('networks', {})
|
||||||
|
if kwargs.get('network_mode', '') in networks:
|
||||||
|
networks = {kwargs['network_mode']: networks[kwargs['network_mode']]}
|
||||||
|
else:
|
||||||
|
networks = {}
|
||||||
|
|
||||||
kwargs = __utils__['docker.translate_input'](
|
kwargs = __utils__['docker.translate_input'](
|
||||||
salt.utils.docker.translate.container,
|
salt.utils.docker.translate.container,
|
||||||
skip_translate=skip_translate,
|
skip_translate=skip_translate,
|
||||||
@ -853,6 +860,9 @@ def _get_create_kwargs(skip_translate=None,
|
|||||||
validate_ip_addrs=validate_ip_addrs,
|
validate_ip_addrs=validate_ip_addrs,
|
||||||
**__utils__['args.clean_kwargs'](**kwargs))
|
**__utils__['args.clean_kwargs'](**kwargs))
|
||||||
|
|
||||||
|
if networks:
|
||||||
|
kwargs['networking_config'] = _create_networking_config(networks)
|
||||||
|
|
||||||
if client_args is None:
|
if client_args is None:
|
||||||
try:
|
try:
|
||||||
client_args = get_client_args(['create_container', 'host_config'])
|
client_args = get_client_args(['create_container', 'host_config'])
|
||||||
@ -2388,6 +2398,11 @@ def version():
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def _create_networking_config(networks):
|
||||||
|
log.debug("creating networking config from {}".format(networks))
|
||||||
|
return _client_wrapper('create_networking_config',
|
||||||
|
{k: _client_wrapper('create_endpoint_config', **v) for k, v in networks.items()})
|
||||||
|
|
||||||
# Functions to manage containers
|
# Functions to manage containers
|
||||||
@_refresh_mine_cache
|
@_refresh_mine_cache
|
||||||
def create(image,
|
def create(image,
|
||||||
|
@ -133,7 +133,7 @@ try:
|
|||||||
# Default to `en-US` (1033)
|
# Default to `en-US` (1033)
|
||||||
windll = ctypes.windll.kernel32
|
windll = ctypes.windll.kernel32
|
||||||
INSTALL_LANGUAGE = locale.windows_locale.get(
|
INSTALL_LANGUAGE = locale.windows_locale.get(
|
||||||
windll.GetSystemDefaultUILanguage(), 1033).replace('_', '-')
|
windll.GetSystemDefaultUILanguage(), 'en_US').replace('_', '-')
|
||||||
except ImportError:
|
except ImportError:
|
||||||
HAS_WINDOWS_MODULES = False
|
HAS_WINDOWS_MODULES = False
|
||||||
|
|
||||||
|
@ -1673,6 +1673,8 @@ def running(name,
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
networks = _parse_networks(networks)
|
networks = _parse_networks(networks)
|
||||||
|
if networks:
|
||||||
|
kwargs['networks'] = networks
|
||||||
image_id = _resolve_image(ret, image, client_timeout)
|
image_id = _resolve_image(ret, image, client_timeout)
|
||||||
except CommandExecutionError as exc:
|
except CommandExecutionError as exc:
|
||||||
ret['result'] = False
|
ret['result'] = False
|
||||||
|
@ -5059,6 +5059,10 @@ def append(name,
|
|||||||
|
|
||||||
if makedirs is True:
|
if makedirs is True:
|
||||||
dirname = os.path.dirname(name)
|
dirname = os.path.dirname(name)
|
||||||
|
if __opts__['test']:
|
||||||
|
ret['comment'] = 'Directory {0} is set to be updated'.format(dirname)
|
||||||
|
ret['result'] = None
|
||||||
|
else:
|
||||||
if not __salt__['file.directory_exists'](dirname):
|
if not __salt__['file.directory_exists'](dirname):
|
||||||
try:
|
try:
|
||||||
_makedirs(name=name)
|
_makedirs(name=name)
|
||||||
|
@ -29,6 +29,7 @@ Ensure a Linux ACL does not exist
|
|||||||
|
|
||||||
# Import Python libs
|
# Import Python libs
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# Import salt libs
|
# Import salt libs
|
||||||
@ -36,6 +37,8 @@ from salt.ext import six
|
|||||||
from salt.exceptions import CommandExecutionError
|
from salt.exceptions import CommandExecutionError
|
||||||
import salt.utils.path
|
import salt.utils.path
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
__virtualname__ = 'acl'
|
__virtualname__ = 'acl'
|
||||||
|
|
||||||
|
|
||||||
@ -60,6 +63,7 @@ def present(name, acl_type, acl_name='', perms='', recurse=False):
|
|||||||
'comment': ''}
|
'comment': ''}
|
||||||
|
|
||||||
_octal = {'r': 4, 'w': 2, 'x': 1, '-': 0}
|
_octal = {'r': 4, 'w': 2, 'x': 1, '-': 0}
|
||||||
|
_octal_lookup = {0: '-', 1: 'r', 2: 'w', 4: 'x'}
|
||||||
|
|
||||||
if not os.path.exists(name):
|
if not os.path.exists(name):
|
||||||
ret['comment'] = '{0} does not exist'.format(name)
|
ret['comment'] = '{0} does not exist'.format(name)
|
||||||
@ -111,18 +115,22 @@ def present(name, acl_type, acl_name='', perms='', recurse=False):
|
|||||||
if not need_refresh:
|
if not need_refresh:
|
||||||
ret['comment'] = 'Permissions are in the desired state'
|
ret['comment'] = 'Permissions are in the desired state'
|
||||||
else:
|
else:
|
||||||
|
_num = user[_search_name]['octal']
|
||||||
|
new_perms = '{}{}{}'.format(_octal_lookup[_num & 1],
|
||||||
|
_octal_lookup[_num & 2],
|
||||||
|
_octal_lookup[_num & 4])
|
||||||
changes = {'new': {'acl_name': acl_name,
|
changes = {'new': {'acl_name': acl_name,
|
||||||
'acl_type': acl_type,
|
'acl_type': acl_type,
|
||||||
'perms': perms},
|
'perms': perms},
|
||||||
'old': {'acl_name': acl_name,
|
'old': {'acl_name': acl_name,
|
||||||
'acl_type': acl_type,
|
'acl_type': acl_type,
|
||||||
'perms': six.text_type(user[_search_name]['octal'])}}
|
'perms': new_perms}}
|
||||||
|
|
||||||
if __opts__['test']:
|
if __opts__['test']:
|
||||||
ret.update({'comment': 'Updated permissions will be applied for '
|
ret.update({'comment': 'Updated permissions will be applied for '
|
||||||
'{0}: {1} -> {2}'.format(
|
'{0}: {1} -> {2}'.format(
|
||||||
acl_name,
|
acl_name,
|
||||||
six.text_type(user[_search_name]['octal']),
|
new_perms,
|
||||||
perms),
|
perms),
|
||||||
'result': None, 'pchanges': changes})
|
'result': None, 'pchanges': changes})
|
||||||
return ret
|
return ret
|
||||||
|
@ -292,7 +292,7 @@ def private_key_managed(name,
|
|||||||
x509.private_key_managed:
|
x509.private_key_managed:
|
||||||
- bits: 4096
|
- bits: 4096
|
||||||
- new: True
|
- new: True
|
||||||
{% if salt['file.file_exists']('/etc/pki/ca.key') -%}
|
{% if salt['file.file_exists']('/etc/pki/www.key') -%}
|
||||||
- prereq:
|
- prereq:
|
||||||
- x509: /etc/pki/www.crt
|
- x509: /etc/pki/www.crt
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
@ -18,7 +18,8 @@ import tornado
|
|||||||
import tornado.gen
|
import tornado.gen
|
||||||
import tornado.netutil
|
import tornado.netutil
|
||||||
import tornado.concurrent
|
import tornado.concurrent
|
||||||
from tornado.locks import Semaphore
|
import tornado.queues
|
||||||
|
from tornado.locks import Lock
|
||||||
from tornado.ioloop import IOLoop, TimeoutError as TornadoTimeoutError
|
from tornado.ioloop import IOLoop, TimeoutError as TornadoTimeoutError
|
||||||
from tornado.iostream import IOStream
|
from tornado.iostream import IOStream
|
||||||
# Import Salt libs
|
# Import Salt libs
|
||||||
@ -582,11 +583,116 @@ class IPCMessagePublisher(object):
|
|||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
class IPCMessageSubscriber(IPCClient):
|
class IPCMessageSubscriberService(IPCClient):
|
||||||
|
'''
|
||||||
|
IPC message subscriber service that is a standalone singleton class starting once for a number
|
||||||
|
of IPCMessageSubscriber instances feeding all of them with data. It closes automatically when
|
||||||
|
there are no more subscribers.
|
||||||
|
|
||||||
|
To use this refer to IPCMessageSubscriber documentation.
|
||||||
|
'''
|
||||||
|
def __singleton_init__(self, socket_path, io_loop=None):
|
||||||
|
super(IPCMessageSubscriberService, self).__singleton_init__(
|
||||||
|
socket_path, io_loop=io_loop)
|
||||||
|
self.saved_data = []
|
||||||
|
self._read_in_progress = Lock()
|
||||||
|
self.handlers = weakref.WeakSet()
|
||||||
|
|
||||||
|
def _subscribe(self, handler):
|
||||||
|
self.handlers.add(handler)
|
||||||
|
|
||||||
|
def unsubscribe(self, handler):
|
||||||
|
self.handlers.discard(handler)
|
||||||
|
|
||||||
|
def _has_subscribers(self):
|
||||||
|
return bool(self.handlers)
|
||||||
|
|
||||||
|
def _feed_subscribers(self, data):
|
||||||
|
for subscriber in self.handlers:
|
||||||
|
subscriber._feed(data)
|
||||||
|
|
||||||
|
@tornado.gen.coroutine
|
||||||
|
def _read(self, timeout, callback=None):
|
||||||
|
try:
|
||||||
|
yield self._read_in_progress.acquire(timeout=0)
|
||||||
|
except tornado.gen.TimeoutError:
|
||||||
|
raise tornado.gen.Return(None)
|
||||||
|
|
||||||
|
log.debug('IPC Subscriber Service is starting reading')
|
||||||
|
# If timeout is not specified we need to set some here to make the service able to check
|
||||||
|
# is there any handler waiting for data.
|
||||||
|
if timeout is None:
|
||||||
|
timeout = 5
|
||||||
|
|
||||||
|
read_stream_future = None
|
||||||
|
while self._has_subscribers():
|
||||||
|
if read_stream_future is None:
|
||||||
|
read_stream_future = self.stream.read_bytes(4096, partial=True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
wire_bytes = yield FutureWithTimeout(self.io_loop,
|
||||||
|
read_stream_future,
|
||||||
|
timeout)
|
||||||
|
read_stream_future = None
|
||||||
|
|
||||||
|
self.unpacker.feed(wire_bytes)
|
||||||
|
msgs = [msg['body'] for msg in self.unpacker]
|
||||||
|
self._feed_subscribers(msgs)
|
||||||
|
except TornadoTimeoutError:
|
||||||
|
# Continue checking are there alive waiting handlers
|
||||||
|
# Keep 'read_stream_future' alive to wait it more in the next loop
|
||||||
|
continue
|
||||||
|
except tornado.iostream.StreamClosedError as exc:
|
||||||
|
log.trace('Subscriber disconnected from IPC %s', self.socket_path)
|
||||||
|
self._feed_subscribers([None])
|
||||||
|
break
|
||||||
|
except Exception as exc:
|
||||||
|
log.error('Exception occurred in Subscriber while handling stream: %s', exc)
|
||||||
|
self._feed_subscribers([exc])
|
||||||
|
break
|
||||||
|
|
||||||
|
log.debug('IPC Subscriber Service is stopping due to a lack of subscribers')
|
||||||
|
self._read_in_progress.release()
|
||||||
|
raise tornado.gen.Return(None)
|
||||||
|
|
||||||
|
@tornado.gen.coroutine
|
||||||
|
def read(self, handler, timeout=None):
|
||||||
|
'''
|
||||||
|
Asynchronously read messages and invoke a callback when they are ready.
|
||||||
|
|
||||||
|
:param callback: A callback with the received data
|
||||||
|
'''
|
||||||
|
self._subscribe(handler)
|
||||||
|
while not self.connected():
|
||||||
|
try:
|
||||||
|
yield self.connect(timeout=5)
|
||||||
|
except tornado.iostream.StreamClosedError:
|
||||||
|
log.trace('Subscriber closed stream on IPC %s before connect', self.socket_path)
|
||||||
|
yield tornado.gen.sleep(1)
|
||||||
|
except Exception as exc:
|
||||||
|
log.error('Exception occurred while Subscriber connecting: %s', exc)
|
||||||
|
yield tornado.gen.sleep(1)
|
||||||
|
self._read(timeout)
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
'''
|
||||||
|
Routines to handle any cleanup before the instance shuts down.
|
||||||
|
Sockets and filehandles should be closed explicitly, to prevent
|
||||||
|
leaks.
|
||||||
|
'''
|
||||||
|
if not self._closing:
|
||||||
|
super(IPCMessageSubscriberService, self).close()
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
if IPCMessageSubscriberService in globals():
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
|
class IPCMessageSubscriber(object):
|
||||||
'''
|
'''
|
||||||
Salt IPC message subscriber
|
Salt IPC message subscriber
|
||||||
|
|
||||||
Create an IPC client to receive messages from IPC publisher
|
Create or reuse an IPC client to receive messages from IPC publisher
|
||||||
|
|
||||||
An example of a very simple IPCMessageSubscriber connecting to an IPCMessagePublisher.
|
An example of a very simple IPCMessageSubscriber connecting to an IPCMessagePublisher.
|
||||||
This example assumes an already running IPCMessagePublisher.
|
This example assumes an already running IPCMessagePublisher.
|
||||||
@ -615,147 +721,60 @@ class IPCMessageSubscriber(IPCClient):
|
|||||||
# Wait for some data
|
# Wait for some data
|
||||||
package = ipc_subscriber.read_sync()
|
package = ipc_subscriber.read_sync()
|
||||||
'''
|
'''
|
||||||
def __singleton_init__(self, socket_path, io_loop=None):
|
def __init__(self, socket_path, io_loop=None):
|
||||||
super(IPCMessageSubscriber, self).__singleton_init__(
|
self.service = IPCMessageSubscriberService(socket_path, io_loop)
|
||||||
socket_path, io_loop=io_loop)
|
self.queue = tornado.queues.Queue()
|
||||||
self._read_sync_future = None
|
|
||||||
self._read_stream_future = None
|
def connected(self):
|
||||||
self._sync_ioloop_running = False
|
return self.service.connected()
|
||||||
self.saved_data = []
|
|
||||||
self._sync_read_in_progress = Semaphore()
|
def connect(self, callback=None, timeout=None):
|
||||||
|
return self.service.connect(callback=callback, timeout=timeout)
|
||||||
|
|
||||||
@tornado.gen.coroutine
|
@tornado.gen.coroutine
|
||||||
def _read_sync(self, timeout):
|
def _feed(self, msgs):
|
||||||
yield self._sync_read_in_progress.acquire()
|
for msg in msgs:
|
||||||
exc_to_raise = None
|
yield self.queue.put(msg)
|
||||||
ret = None
|
|
||||||
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
if self._read_stream_future is None:
|
|
||||||
self._read_stream_future = self.stream.read_bytes(4096, partial=True)
|
|
||||||
|
|
||||||
if timeout is None:
|
|
||||||
wire_bytes = yield self._read_stream_future
|
|
||||||
else:
|
|
||||||
future_with_timeout = FutureWithTimeout(
|
|
||||||
self.io_loop, self._read_stream_future, timeout)
|
|
||||||
wire_bytes = yield future_with_timeout
|
|
||||||
|
|
||||||
self._read_stream_future = None
|
|
||||||
|
|
||||||
# Remove the timeout once we get some data or an exception
|
|
||||||
# occurs. We will assume that the rest of the data is already
|
|
||||||
# there or is coming soon if an exception doesn't occur.
|
|
||||||
timeout = None
|
|
||||||
|
|
||||||
self.unpacker.feed(wire_bytes)
|
|
||||||
first = True
|
|
||||||
for framed_msg in self.unpacker:
|
|
||||||
if first:
|
|
||||||
ret = framed_msg['body']
|
|
||||||
first = False
|
|
||||||
else:
|
|
||||||
self.saved_data.append(framed_msg['body'])
|
|
||||||
if not first:
|
|
||||||
# We read at least one piece of data
|
|
||||||
break
|
|
||||||
except TornadoTimeoutError:
|
|
||||||
# In the timeout case, just return None.
|
|
||||||
# Keep 'self._read_stream_future' alive.
|
|
||||||
ret = None
|
|
||||||
except tornado.iostream.StreamClosedError as exc:
|
|
||||||
log.trace('Subscriber disconnected from IPC %s', self.socket_path)
|
|
||||||
self._read_stream_future = None
|
|
||||||
exc_to_raise = exc
|
|
||||||
except Exception as exc:
|
|
||||||
log.error('Exception occurred in Subscriber while handling stream: %s', exc)
|
|
||||||
self._read_stream_future = None
|
|
||||||
exc_to_raise = exc
|
|
||||||
|
|
||||||
if self._sync_ioloop_running:
|
|
||||||
# Stop the IO Loop so that self.io_loop.start() will return in
|
|
||||||
# read_sync().
|
|
||||||
self.io_loop.spawn_callback(self.io_loop.stop)
|
|
||||||
|
|
||||||
if exc_to_raise is not None:
|
|
||||||
raise exc_to_raise # pylint: disable=E0702
|
|
||||||
self._sync_read_in_progress.release()
|
|
||||||
raise tornado.gen.Return(ret)
|
|
||||||
|
|
||||||
def read_sync(self, timeout=None):
|
|
||||||
'''
|
|
||||||
Read a message from an IPC socket
|
|
||||||
|
|
||||||
The socket must already be connected.
|
|
||||||
The associated IO Loop must NOT be running.
|
|
||||||
:param int timeout: Timeout when receiving message
|
|
||||||
:return: message data if successful. None if timed out. Will raise an
|
|
||||||
exception for all other error conditions.
|
|
||||||
'''
|
|
||||||
if self.saved_data:
|
|
||||||
return self.saved_data.pop(0)
|
|
||||||
|
|
||||||
self._sync_ioloop_running = True
|
|
||||||
self._read_sync_future = self._read_sync(timeout)
|
|
||||||
self.io_loop.start()
|
|
||||||
self._sync_ioloop_running = False
|
|
||||||
|
|
||||||
ret_future = self._read_sync_future
|
|
||||||
self._read_sync_future = None
|
|
||||||
return ret_future.result()
|
|
||||||
|
|
||||||
@tornado.gen.coroutine
|
@tornado.gen.coroutine
|
||||||
def _read_async(self, callback):
|
def read_async(self, callback, timeout=None):
|
||||||
while not self.stream.closed():
|
|
||||||
try:
|
|
||||||
self._read_stream_future = self.stream.read_bytes(4096, partial=True)
|
|
||||||
wire_bytes = yield self._read_stream_future
|
|
||||||
self._read_stream_future = None
|
|
||||||
self.unpacker.feed(wire_bytes)
|
|
||||||
for framed_msg in self.unpacker:
|
|
||||||
body = framed_msg['body']
|
|
||||||
self.io_loop.spawn_callback(callback, body)
|
|
||||||
except tornado.iostream.StreamClosedError:
|
|
||||||
log.trace('Subscriber disconnected from IPC %s', self.socket_path)
|
|
||||||
break
|
|
||||||
except Exception as exc:
|
|
||||||
log.error('Exception occurred while Subscriber handling stream: %s', exc)
|
|
||||||
|
|
||||||
@tornado.gen.coroutine
|
|
||||||
def read_async(self, callback):
|
|
||||||
'''
|
'''
|
||||||
Asynchronously read messages and invoke a callback when they are ready.
|
Asynchronously read messages and invoke a callback when they are ready.
|
||||||
|
|
||||||
:param callback: A callback with the received data
|
:param callback: A callback with the received data
|
||||||
'''
|
'''
|
||||||
while not self.connected():
|
self.service.read(self)
|
||||||
|
while True:
|
||||||
try:
|
try:
|
||||||
yield self.connect(timeout=5)
|
if timeout is not None:
|
||||||
except tornado.iostream.StreamClosedError:
|
deadline = time.time() + timeout
|
||||||
log.trace('Subscriber closed stream on IPC %s before connect', self.socket_path)
|
else:
|
||||||
yield tornado.gen.sleep(1)
|
deadline = None
|
||||||
except Exception as exc:
|
data = yield self.queue.get(timeout=deadline)
|
||||||
log.error('Exception occurred while Subscriber connecting: %s', exc)
|
except tornado.gen.TimeoutError:
|
||||||
yield tornado.gen.sleep(1)
|
raise tornado.gen.Return(None)
|
||||||
yield self._read_async(callback)
|
if data is None:
|
||||||
|
break
|
||||||
|
elif isinstance(data, Exception):
|
||||||
|
raise data
|
||||||
|
elif callback:
|
||||||
|
self.service.io_loop.spawn_callback(callback, data)
|
||||||
|
else:
|
||||||
|
raise tornado.gen.Return(data)
|
||||||
|
|
||||||
|
def read_sync(self, timeout=None):
|
||||||
|
'''
|
||||||
|
Read a message from an IPC socket
|
||||||
|
|
||||||
|
The associated IO Loop must NOT be running.
|
||||||
|
:param int timeout: Timeout when receiving message
|
||||||
|
:return: message data if successful. None if timed out. Will raise an
|
||||||
|
exception for all other error conditions.
|
||||||
|
'''
|
||||||
|
return self.service.io_loop.run_sync(lambda: self.read_async(None, timeout))
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
'''
|
self.service.unsubscribe(self)
|
||||||
Routines to handle any cleanup before the instance shuts down.
|
|
||||||
Sockets and filehandles should be closed explicitly, to prevent
|
|
||||||
leaks.
|
|
||||||
'''
|
|
||||||
if not self._closing:
|
|
||||||
IPCClient.close(self)
|
|
||||||
# This will prevent this message from showing up:
|
|
||||||
# '[ERROR ] Future exception was never retrieved:
|
|
||||||
# StreamClosedError'
|
|
||||||
if self._read_sync_future is not None and self._read_sync_future.done():
|
|
||||||
self._read_sync_future.exception()
|
|
||||||
if self._read_stream_future is not None and self._read_stream_future.done():
|
|
||||||
self._read_stream_future.exception()
|
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
if IPCMessageSubscriber in globals():
|
|
||||||
self.close()
|
self.close()
|
||||||
|
@ -17,6 +17,7 @@ from tests.support.helpers import destructiveTest, flaky, skip_if_not_root
|
|||||||
# Import Salt libs
|
# Import Salt libs
|
||||||
import salt.utils.files
|
import salt.utils.files
|
||||||
import salt.utils.platform
|
import salt.utils.platform
|
||||||
|
import salt.modules.shadow
|
||||||
from salt.ext.six.moves import range
|
from salt.ext.six.moves import range
|
||||||
|
|
||||||
|
|
||||||
@ -27,11 +28,6 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
Validate the linux shadow system module
|
Validate the linux shadow system module
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, arg):
|
|
||||||
super(self.__class__, self).__init__(arg)
|
|
||||||
self._test_user = self.__random_string()
|
|
||||||
self._no_user = self.__random_string()
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
'''
|
'''
|
||||||
Get current settings
|
Get current settings
|
||||||
@ -47,12 +43,9 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
**os_grain
|
**os_grain
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
self._test_user = self.__random_string()
|
||||||
def tearDown(self):
|
self._no_user = self.__random_string()
|
||||||
'''
|
self._password = salt.modules.shadow.gen_password('Password1234')
|
||||||
Reset to original settings
|
|
||||||
'''
|
|
||||||
self.run_function('user.delete', [self._test_user])
|
|
||||||
|
|
||||||
def __random_string(self, size=6):
|
def __random_string(self, size=6):
|
||||||
'''
|
'''
|
||||||
@ -68,6 +61,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.info
|
Test shadow.info
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -83,6 +77,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.del_password
|
Test shadow.del_password
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -98,6 +93,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_password
|
Test shadow.set_password
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -111,6 +107,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_inactdays
|
Test shadow.set_inactdays
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -124,6 +121,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_maxdays
|
Test shadow.set_maxdays
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -137,6 +135,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_mindays
|
Test shadow.set_mindays
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -151,6 +150,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.lock_password
|
Test shadow.lock_password
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
self.run_function('shadow.set_password', [self._test_user, self._password])
|
self.run_function('shadow.set_password', [self._test_user, self._password])
|
||||||
|
|
||||||
@ -165,6 +165,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.lock_password
|
Test shadow.lock_password
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
self.run_function('shadow.set_password', [self._test_user, self._password])
|
self.run_function('shadow.set_password', [self._test_user, self._password])
|
||||||
|
|
||||||
@ -179,6 +180,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_warndays
|
Test shadow.set_warndays
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -192,6 +194,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_date
|
Test shadow.set_date
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -205,6 +208,7 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
'''
|
'''
|
||||||
Test shadow.set_exipre
|
Test shadow.set_exipre
|
||||||
'''
|
'''
|
||||||
|
self.addCleanup(self.run_function, 'user.delete', [self._test_user])
|
||||||
self.run_function('user.add', [self._test_user])
|
self.run_function('user.add', [self._test_user])
|
||||||
|
|
||||||
# Correct Functionality
|
# Correct Functionality
|
||||||
@ -221,16 +225,19 @@ class ShadowModuleTest(ModuleCase):
|
|||||||
# saving shadow file
|
# saving shadow file
|
||||||
if not os.access("/etc/shadow", os.R_OK | os.W_OK):
|
if not os.access("/etc/shadow", os.R_OK | os.W_OK):
|
||||||
self.skipTest('Could not save initial state of /etc/shadow')
|
self.skipTest('Could not save initial state of /etc/shadow')
|
||||||
with salt.utils.files.fopen('/etc/shadow', 'r') as sFile:
|
|
||||||
shadow = sFile.read()
|
def restore_shadow_file(contents):
|
||||||
|
# restore shadow file
|
||||||
|
with salt.utils.fopen('/etc/shadow', 'w') as wfh:
|
||||||
|
wfh.write(contents)
|
||||||
|
|
||||||
|
with salt.utils.files.fopen('/etc/shadow', 'r') as rfh:
|
||||||
|
contents = rfh.read()
|
||||||
|
self.addCleanup(restore_shadow_file, contents)
|
||||||
|
|
||||||
# set root password
|
# set root password
|
||||||
self.assertTrue(self.run_function('shadow.set_password', ['root', self._password]))
|
self.assertTrue(self.run_function('shadow.set_password', ['root', self._password]))
|
||||||
self.assertEqual(
|
self.assertEqual(self.run_function('shadow.info', ['root'])['passwd'], self._password)
|
||||||
self.run_function('shadow.info', ['root'])['passwd'], self._password)
|
|
||||||
# delete root password
|
# delete root password
|
||||||
self.assertTrue(self.run_function('shadow.del_password', ['root']))
|
self.assertTrue(self.run_function('shadow.del_password', ['root']))
|
||||||
self.assertEqual(
|
self.assertEqual(self.run_function('shadow.info', ['root'])['passwd'], '')
|
||||||
self.run_function('shadow.info', ['root'])['passwd'], '')
|
|
||||||
#restore shadow file
|
|
||||||
with salt.utils.files.fopen('/etc/shadow', 'w') as sFile:
|
|
||||||
sFile.write(shadow)
|
|
||||||
|
@ -599,6 +599,33 @@ class DockerContainerTestCase(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
self.assertTrue('VAR2=value2' in ret['Config']['Env'])
|
self.assertTrue('VAR2=value2' in ret['Config']['Env'])
|
||||||
self.assertTrue('VAR3=value3' not in ret['Config']['Env'])
|
self.assertTrue('VAR3=value3' not in ret['Config']['Env'])
|
||||||
|
|
||||||
|
@with_network(subnet='10.247.197.96/27', create=True)
|
||||||
|
@container_name
|
||||||
|
def test_static_ip_one_network(self, container_name, net):
|
||||||
|
'''
|
||||||
|
Ensure that if a network is created and specified as network_mode, that is the only network, and
|
||||||
|
the static IP is applied.
|
||||||
|
'''
|
||||||
|
requested_ip = '10.247.197.100'
|
||||||
|
kwargs = {
|
||||||
|
'name': container_name,
|
||||||
|
'image': self.image,
|
||||||
|
'network_mode': net.name,
|
||||||
|
'networks': [{net.name: [{'ipv4_address': requested_ip}]}],
|
||||||
|
'shutdown_timeout': 1,
|
||||||
|
}
|
||||||
|
# Create a container
|
||||||
|
ret = self.run_state('docker_container.running', **kwargs)
|
||||||
|
self.assertSaltTrueReturn(ret)
|
||||||
|
|
||||||
|
inspect_result = self.run_function('docker.inspect_container',
|
||||||
|
[container_name])
|
||||||
|
connected_networks = inspect_result['NetworkSettings']['Networks']
|
||||||
|
|
||||||
|
self.assertEqual(list(connected_networks.keys()), [net.name])
|
||||||
|
self.assertEqual(inspect_result['HostConfig']['NetworkMode'], net.name)
|
||||||
|
self.assertEqual(connected_networks[net.name]['IPAMConfig']['IPv4Address'], requested_ip)
|
||||||
|
|
||||||
def _test_running(self, container_name, *nets):
|
def _test_running(self, container_name, *nets):
|
||||||
'''
|
'''
|
||||||
DRY function for testing static IPs
|
DRY function for testing static IPs
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user