mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-01 02:43:16 +00:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4edae7afd0 | ||
|
|
40f87e25ff | ||
|
|
ebf8d9cde1 | ||
|
|
f0c5dd9cbc | ||
|
|
656a7f7087 | ||
|
|
c2303926af | ||
|
|
aa707d665e | ||
|
|
be2fd43243 | ||
|
|
b2eb0fb8f8 | ||
|
|
57053f8a32 | ||
|
|
583a7a75d3 | ||
|
|
065fdf990d | ||
|
|
2ed7e96372 | ||
|
|
985fbb321b | ||
|
|
037863b834 | ||
|
|
e19fda6cb0 | ||
|
|
4175c4c8fe | ||
|
|
e64d124e18 | ||
|
|
52c0a1565d | ||
|
|
df89012081 | ||
|
|
ee2d7cd21b | ||
|
|
22735bcc73 | ||
|
|
5100d972b3 | ||
|
|
7ce39c38c9 | ||
|
|
6316bd6e4d | ||
|
|
d3b9759ef1 | ||
|
|
2321a12d07 |
@@ -29,14 +29,14 @@ schedules:
|
||||
always: true
|
||||
branches:
|
||||
include:
|
||||
- stable-8
|
||||
- stable-7
|
||||
- stable-6
|
||||
- cron: 0 11 * * 0
|
||||
displayName: Weekly (old stable branches)
|
||||
always: true
|
||||
branches:
|
||||
include:
|
||||
- stable-5
|
||||
- stable-6
|
||||
|
||||
variables:
|
||||
- name: checkoutPath
|
||||
@@ -137,6 +137,7 @@ stages:
|
||||
nameFormat: Python {0}
|
||||
testFormat: 2.16/units/{0}/1
|
||||
targets:
|
||||
- test: 2.7
|
||||
- test: 3.6
|
||||
- test: "3.11"
|
||||
- stage: Units_2_15
|
||||
@@ -246,8 +247,8 @@ stages:
|
||||
targets:
|
||||
- name: RHEL 9.0
|
||||
test: rhel/9.0
|
||||
- name: macOS 12.0
|
||||
test: macos/12.0
|
||||
#- name: macOS 12.0
|
||||
# test: macos/12.0
|
||||
#- name: FreeBSD 12.4
|
||||
# test: freebsd/12.4
|
||||
groups:
|
||||
|
||||
@@ -6,6 +6,33 @@ Community General Release Notes
|
||||
|
||||
This changelog describes changes after version 6.0.0.
|
||||
|
||||
v7.5.1
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular bugfix release.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- composer - fix impossible to run ``working_dir`` dependent commands. The module was throwing an error when trying to run a ``working_dir`` dependent command, because it tried to get the command help without passing the ``working_dir`` (https://github.com/ansible-collections/community.general/issues/3787).
|
||||
- github_deploy_key - fix pagination behaviour causing a crash when only a single page of deploy keys exist (https://github.com/ansible-collections/community.general/pull/7375).
|
||||
- gitlab_group_members - fix gitlab constants call in ``gitlab_group_members`` module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- gitlab_project_members - fix gitlab constants call in ``gitlab_project_members`` module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- gitlab_protected_branches - fix gitlab constants call in ``gitlab_protected_branches`` module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- gitlab_user - fix gitlab constants call in ``gitlab_user`` module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- kernel_blacklist - simplified the mechanism to update the file, fixing the error (https://github.com/ansible-collections/community.general/pull/7382, https://github.com/ansible-collections/community.general/issues/7362).
|
||||
- memset module utils - make compatible with ansible-core 2.17 (https://github.com/ansible-collections/community.general/pull/7379).
|
||||
- proxmox_pool_member - absent state for type VM did not delete VMs from the pools (https://github.com/ansible-collections/community.general/pull/7464).
|
||||
- redfish_command - fix usage of message parsing in ``SimpleUpdate`` and ``MultipartHTTPPushUpdate`` commands to treat the lack of a ``MessageId`` as no message (https://github.com/ansible-collections/community.general/issues/7465, https://github.com/ansible-collections/community.general/pull/7471).
|
||||
- redhat_subscription - use the right D-Bus options for the consumer type when
|
||||
registering a RHEL system older than 9 or a RHEL 9 system older than 9.2
|
||||
and using ``consumer_type``
|
||||
(https://github.com/ansible-collections/community.general/pull/7378).
|
||||
- selective callback plugin - fix length of task name lines in output always being 3 characters longer than desired (https://github.com/ansible-collections/community.general/pull/7374).
|
||||
|
||||
v7.5.0
|
||||
======
|
||||
|
||||
|
||||
@@ -1561,3 +1561,52 @@ releases:
|
||||
name: simpleinit_msb
|
||||
namespace: ''
|
||||
release_date: '2023-10-09'
|
||||
7.5.1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- composer - fix impossible to run ``working_dir`` dependent commands. The module
|
||||
was throwing an error when trying to run a ``working_dir`` dependent command,
|
||||
because it tried to get the command help without passing the ``working_dir``
|
||||
(https://github.com/ansible-collections/community.general/issues/3787).
|
||||
- github_deploy_key - fix pagination behaviour causing a crash when only a single
|
||||
page of deploy keys exist (https://github.com/ansible-collections/community.general/pull/7375).
|
||||
- gitlab_group_members - fix gitlab constants call in ``gitlab_group_members``
|
||||
module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- gitlab_project_members - fix gitlab constants call in ``gitlab_project_members``
|
||||
module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- gitlab_protected_branches - fix gitlab constants call in ``gitlab_protected_branches``
|
||||
module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- gitlab_user - fix gitlab constants call in ``gitlab_user`` module (https://github.com/ansible-collections/community.general/issues/7467).
|
||||
- kernel_blacklist - simplified the mechanism to update the file, fixing the
|
||||
error (https://github.com/ansible-collections/community.general/pull/7382,
|
||||
https://github.com/ansible-collections/community.general/issues/7362).
|
||||
- memset module utils - make compatible with ansible-core 2.17 (https://github.com/ansible-collections/community.general/pull/7379).
|
||||
- proxmox_pool_member - absent state for type VM did not delete VMs from the
|
||||
pools (https://github.com/ansible-collections/community.general/pull/7464).
|
||||
- redfish_command - fix usage of message parsing in ``SimpleUpdate`` and ``MultipartHTTPPushUpdate``
|
||||
commands to treat the lack of a ``MessageId`` as no message (https://github.com/ansible-collections/community.general/issues/7465,
|
||||
https://github.com/ansible-collections/community.general/pull/7471).
|
||||
- 'redhat_subscription - use the right D-Bus options for the consumer type when
|
||||
|
||||
registering a RHEL system older than 9 or a RHEL 9 system older than 9.2
|
||||
|
||||
and using ``consumer_type``
|
||||
|
||||
(https://github.com/ansible-collections/community.general/pull/7378).
|
||||
|
||||
'
|
||||
- selective callback plugin - fix length of task name lines in output always
|
||||
being 3 characters longer than desired (https://github.com/ansible-collections/community.general/pull/7374).
|
||||
release_summary: Regular bugfix release.
|
||||
fragments:
|
||||
- 3787-pass-composer-working-dir.yml
|
||||
- 7.5.1.yml
|
||||
- 7374-fix-selective-callback-taskname-length.yml
|
||||
- 7375-fix-github-deploy-key-pagination.yml
|
||||
- 7378-redhat_subscription-dbus-consumer-type.yaml
|
||||
- 7379-url.yml
|
||||
- 7382-kernel-blacklist-bugfix.yml
|
||||
- 7464-fix-vm-removal-in-proxmox_pool_member.yml
|
||||
- 7465-redfish-firmware-update-message-id-hardening.yml
|
||||
- 7467-fix-gitlab-constants-calls.yml
|
||||
release_date: '2023-11-06'
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Counting elements in a sequence
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The ``community.general.counter`` filter plugin allows you to count (hashable) elements in a sequence. Elements are returned as dictionary keys and their counts are stored as dictionary values.
|
||||
The :ansplugin:`community.general.counter filter plugin <community.general.counter#filter>` allows you to count (hashable) elements in a sequence. Elements are returned as dictionary keys and their counts are stored as dictionary values.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Dictionaries
|
||||
^^^^^^^^^^^^
|
||||
|
||||
You can use the ``dict_kv`` filter to create a single-entry dictionary with ``value | community.general.dict_kv(key)``:
|
||||
You can use the :ansplugin:`community.general.dict_kv filter <community.general.dict_kv#filter>` to create a single-entry dictionary with ``value | community.general.dict_kv(key)``:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -58,7 +58,7 @@ This produces:
|
||||
|
||||
.. versionadded:: 2.0.0
|
||||
|
||||
If you need to convert a list of key-value pairs to a dictionary, you can use the ``dict`` function. Unfortunately, this function cannot be used with ``map``. For this, the ``community.general.dict`` filter can be used:
|
||||
If you need to convert a list of key-value pairs to a dictionary, you can use the ``dict`` function. Unfortunately, this function cannot be used with ``map``. For this, the :ansplugin:`community.general.dict filter <community.general.dict#filter>` can be used:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Grouping
|
||||
^^^^^^^^
|
||||
|
||||
If you have a list of dictionaries, the Jinja2 ``groupby`` filter allows to group the list by an attribute. This results in a list of ``(grouper, list)`` namedtuples, where ``list`` contains all dictionaries where the selected attribute equals ``grouper``. If you know that for every ``grouper``, there will be a most one entry in that list, you can use the ``community.general.groupby_as_dict`` filter to convert the original list into a dictionary which maps ``grouper`` to the corresponding dictionary.
|
||||
If you have a list of dictionaries, the Jinja2 ``groupby`` filter allows to group the list by an attribute. This results in a list of ``(grouper, list)`` namedtuples, where ``list`` contains all dictionaries where the selected attribute equals ``grouper``. If you know that for every ``grouper``, there will be a most one entry in that list, you can use the :ansplugin:`community.general.groupby_as_dict filter <community.general.groupby_as_dict#filter>` to convert the original list into a dictionary which maps ``grouper`` to the corresponding dictionary.
|
||||
|
||||
One example is ``ansible_facts.mounts``, which is a list of dictionaries where each has one ``device`` element to indicate the device which is mounted. Therefore, ``ansible_facts.mounts | community.general.groupby_as_dict('device')`` is a dictionary mapping a device to the mount information:
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Merging lists of dictionaries
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you have two or more lists of dictionaries and want to combine them into a list of merged dictionaries, where the dictionaries are merged by an attribute, you can use the ``lists_mergeby`` filter.
|
||||
If you have two or more lists of dictionaries and want to combine them into a list of merged dictionaries, where the dictionaries are merged by an attribute, you can use the :ansplugin:`community.general.lists_mergeby filter <community.general.lists_mergeby#filter>`.
|
||||
|
||||
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See :ref:`the documentation for the community.general.yaml callback plugin <ansible_collections.community.general.yaml_callback>`.
|
||||
|
||||
@@ -76,15 +76,15 @@ This produces the same result as in the previous example:
|
||||
name: meh
|
||||
|
||||
|
||||
The filter also accepts two optional parameters: ``recursive`` and ``list_merge``. These parameters are only supported when used with ansible-base 2.10 or ansible-core, but not with Ansible 2.9. This is available since community.general 4.4.0.
|
||||
The filter also accepts two optional parameters: :ansopt:`community.general.lists_mergeby#filter:recursive` and :ansopt:`community.general.lists_mergeby#filter:list_merge`. This is available since community.general 4.4.0.
|
||||
|
||||
**recursive**
|
||||
Is a boolean, default to ``False``. Should the ``community.general.lists_mergeby`` recursively merge nested hashes. Note: It does not depend on the value of the ``hash_behaviour`` setting in ``ansible.cfg``.
|
||||
Is a boolean, default to ``false``. Should the :ansplugin:`community.general.lists_mergeby#filter` filter recursively merge nested hashes. Note: It does not depend on the value of the ``hash_behaviour`` setting in ``ansible.cfg``.
|
||||
|
||||
**list_merge**
|
||||
Is a string, its possible values are ``replace`` (default), ``keep``, ``append``, ``prepend``, ``append_rp`` or ``prepend_rp``. It modifies the behaviour of ``community.general.lists_mergeby`` when the hashes to merge contain arrays/lists.
|
||||
Is a string, its possible values are :ansval:`replace` (default), :ansval:`keep`, :ansval:`append`, :ansval:`prepend`, :ansval:`append_rp` or :ansval:`prepend_rp`. It modifies the behaviour of :ansplugin:`community.general.lists_mergeby#filter` when the hashes to merge contain arrays/lists.
|
||||
|
||||
The examples below set ``recursive=true`` and display the differences among all six options of ``list_merge``. Functionality of the parameters is exactly the same as in the filter ``combine``. See :ref:`Combining hashes/dictionaries <combine_filter>` to learn details about these options.
|
||||
The examples below set :ansopt:`community.general.lists_mergeby#filter:recursive=true` and display the differences among all six options of :ansopt:`community.general.lists_mergeby#filter:list_merge`. Functionality of the parameters is exactly the same as in the filter :ansplugin:`ansible.builtin.combine#filter`. See :ref:`Combining hashes/dictionaries <combine_filter>` to learn details about these options.
|
||||
|
||||
Let us use the lists below in the following examples
|
||||
|
||||
@@ -110,7 +110,7 @@ Let us use the lists below in the following examples
|
||||
- name: myname02
|
||||
param01: [3, 4, 4, {key: value}]
|
||||
|
||||
Example ``list_merge=replace`` (default):
|
||||
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=replace` (default):
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -137,7 +137,7 @@ This produces:
|
||||
- 4
|
||||
- key: value
|
||||
|
||||
Example ``list_merge=keep``:
|
||||
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=keep`:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -165,7 +165,7 @@ This produces:
|
||||
- 2
|
||||
- 3
|
||||
|
||||
Example ``list_merge=append``:
|
||||
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=append`:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -198,7 +198,7 @@ This produces:
|
||||
- 4
|
||||
- key: value
|
||||
|
||||
Example ``list_merge=prepend``:
|
||||
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=prepend`:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -231,7 +231,7 @@ This produces:
|
||||
- 2
|
||||
- 3
|
||||
|
||||
Example ``list_merge=append_rp``:
|
||||
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=append_rp`:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -263,7 +263,7 @@ This produces:
|
||||
- 4
|
||||
- key: value
|
||||
|
||||
Example ``list_merge=prepend_rp``:
|
||||
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=prepend_rp`:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Conversions
|
||||
Parsing CSV files
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
Ansible offers the :ref:`community.general.read_csv module <ansible_collections.community.general.read_csv_module>` to read CSV files. Sometimes you need to convert strings to CSV files instead. For this, the ``from_csv`` filter exists.
|
||||
Ansible offers the :ansplugin:`community.general.read_csv module <community.general.read_csv#module>` to read CSV files. Sometimes you need to convert strings to CSV files instead. For this, the :ansplugin:`community.general.from_csv filter <community.general.from_csv#filter>` exists.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -42,7 +42,7 @@ This produces:
|
||||
]
|
||||
}
|
||||
|
||||
The ``from_csv`` filter has several keyword arguments to control its behavior:
|
||||
The :ansplugin:`community.general.from_csv filter <community.general.from_csv#filter>` has several keyword arguments to control its behavior:
|
||||
|
||||
:dialect: Dialect of the CSV file. Default is ``excel``. Other possible choices are ``excel-tab`` and ``unix``. If one of ``delimiter``, ``skipinitialspace`` or ``strict`` is specified, ``dialect`` is ignored.
|
||||
:fieldnames: A set of column names to use. If not provided, the first line of the CSV is assumed to contain the column names.
|
||||
@@ -55,7 +55,7 @@ The ``from_csv`` filter has several keyword arguments to control its behavior:
|
||||
Converting to JSON
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
`JC <https://pypi.org/project/jc/>`_ is a CLI tool and Python library which allows to interpret output of various CLI programs as JSON. It is also available as a filter in community.general. This filter needs the `jc Python library <https://pypi.org/project/jc/>`_ installed on the controller.
|
||||
`JC <https://pypi.org/project/jc/>`_ is a CLI tool and Python library which allows to interpret output of various CLI programs as JSON. It is also available as a filter in community.general, called :ansplugin:`community.general.jc#filter`. This filter needs the `jc Python library <https://pypi.org/project/jc/>`_ installed on the controller.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ The following filters allow to create identifiers.
|
||||
Hashids
|
||||
^^^^^^^
|
||||
|
||||
`Hashids <https://hashids.org/>`_ allow to convert sequences of integers to short unique string identifiers. This filter needs the `hashids Python library <https://pypi.org/project/hashids/>`_ installed on the controller.
|
||||
`Hashids <https://hashids.org/>`_ allow to convert sequences of integers to short unique string identifiers. The :ansplugin:`community.general.hashids_encode#filter` and :ansplugin:`community.general.hashids_decode#filter` filters need the `hashids Python library <https://pypi.org/project/hashids/>`_ installed on the controller.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -52,7 +52,7 @@ The hashids filters accept keyword arguments to allow fine-tuning the hashids ge
|
||||
Random MACs
|
||||
^^^^^^^^^^^
|
||||
|
||||
You can use the ``random_mac`` filter to complete a partial `MAC address <https://en.wikipedia.org/wiki/MAC_address>`_ to a random 6-byte MAC address.
|
||||
You can use the :ansplugin:`community.general.random_mac filter <community.general.random_mac#filter>` to complete a partial `MAC address <https://en.wikipedia.org/wiki/MAC_address>`_ to a random 6-byte MAC address.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -6,14 +6,4 @@
|
||||
Paths
|
||||
-----
|
||||
|
||||
The ``path_join`` filter has been added in ansible-base 2.10. If you want to use this filter, but also need to support Ansible 2.9, you can use ``community.general``'s ``path_join`` shim, ``community.general.path_join``. This filter redirects to ``path_join`` for ansible-base 2.10 and ansible-core 2.11 or newer, and re-implements the filter for Ansible 2.9.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
# ansible-base 2.10 or newer:
|
||||
path: {{ ('/etc', path, 'subdir', file) | path_join }}
|
||||
|
||||
# Also works with Ansible 2.9:
|
||||
path: {{ ('/etc', path, 'subdir', file) | community.general.path_join }}
|
||||
|
||||
.. versionadded:: 3.0.0
|
||||
The :ansplugin:`ansible.builtin.path_join filter <ansible.builtin.path_join#filter>` has been added in ansible-base 2.10. Community.general 3.0.0 and newer contains an alias ``community.general.path_join`` for this filter that could be used on Ansible 2.9 as well. Since community.general no longer supports Ansible 2.9, this is now a simple redirect to :ansplugin:`ansible.builtin.path_join filter <ansible.builtin.path_join#filter>`.
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
Selecting JSON data: JSON queries
|
||||
---------------------------------
|
||||
|
||||
To select a single element or a data subset from a complex data structure in JSON format (for example, Ansible facts), use the ``json_query`` filter. The ``json_query`` filter lets you query a complex JSON structure and iterate over it using a loop structure.
|
||||
To select a single element or a data subset from a complex data structure in JSON format (for example, Ansible facts), use the :ansplugin:`community.general.json_query filter <community.general.json_query#filter>`. The :ansplugin:`community.general.json_query#filter` filter lets you query a complex JSON structure and iterate over it using a loop structure.
|
||||
|
||||
.. note:: You must manually install the **jmespath** dependency on the Ansible controller before using this filter. This filter is built upon **jmespath**, and you can use the same syntax. For examples, see `jmespath examples <http://jmespath.org/examples.html>`_.
|
||||
|
||||
@@ -146,4 +146,4 @@ To extract ports from all clusters with name containing 'server1':
|
||||
vars:
|
||||
server_name_query: "domain.server[?contains(name,'server1')].port"
|
||||
|
||||
.. note:: while using ``starts_with`` and ``contains``, you have to use `` to_json | from_json `` filter for correct parsing of data structure.
|
||||
.. note:: while using ``starts_with`` and ``contains``, you have to use ``to_json | from_json`` filter for correct parsing of data structure.
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
Working with times
|
||||
------------------
|
||||
|
||||
The ``to_time_unit`` filter allows to convert times from a human-readable string to a unit. For example, ``'4h 30min 12second' | community.general.to_time_unit('hour')`` gives the number of hours that correspond to 4 hours, 30 minutes and 12 seconds.
|
||||
The :ansplugin:`community.general.to_time_unit filter <community.general.to_time_unit#filter>` allows to convert times from a human-readable string to a unit. For example, ``'4h 30min 12second' | community.general.to_time_unit('hour')`` gives the number of hours that correspond to 4 hours, 30 minutes and 12 seconds.
|
||||
|
||||
There are shorthands to directly convert to various units, like ``to_hours``, ``to_minutes``, ``to_seconds``, and so on. The following table lists all units that can be used:
|
||||
There are shorthands to directly convert to various units, like :ansplugin:`community.general.to_hours#filter`, :ansplugin:`community.general.to_minutes#filter`, :ansplugin:`community.general.to_seconds#filter`, and so on. The following table lists all units that can be used:
|
||||
|
||||
.. list-table:: Units
|
||||
:widths: 25 25 25 25
|
||||
@@ -21,37 +21,37 @@ There are shorthands to directly convert to various units, like ``to_hours``, ``
|
||||
* - Millisecond
|
||||
- 1/1000 second
|
||||
- ``ms``, ``millisecond``, ``milliseconds``, ``msec``, ``msecs``, ``msecond``, ``mseconds``
|
||||
- ``to_milliseconds``
|
||||
- :ansplugin:`community.general.to_milliseconds#filter`
|
||||
* - Second
|
||||
- 1 second
|
||||
- ``s``, ``sec``, ``secs``, ``second``, ``seconds``
|
||||
- ``to_seconds``
|
||||
- :ansplugin:`community.general.to_seconds#filter`
|
||||
* - Minute
|
||||
- 60 seconds
|
||||
- ``m``, ``min``, ``mins``, ``minute``, ``minutes``
|
||||
- ``to_minutes``
|
||||
- :ansplugin:`community.general.to_minutes#filter`
|
||||
* - Hour
|
||||
- 60*60 seconds
|
||||
- ``h``, ``hour``, ``hours``
|
||||
- ``to_hours``
|
||||
- :ansplugin:`community.general.to_hours#filter`
|
||||
* - Day
|
||||
- 24*60*60 seconds
|
||||
- ``d``, ``day``, ``days``
|
||||
- ``to_days``
|
||||
- :ansplugin:`community.general.to_days#filter`
|
||||
* - Week
|
||||
- 7*24*60*60 seconds
|
||||
- ``w``, ``week``, ``weeks``
|
||||
- ``to_weeks``
|
||||
- :ansplugin:`community.general.to_weeks#filter`
|
||||
* - Month
|
||||
- 30*24*60*60 seconds
|
||||
- ``mo``, ``month``, ``months``
|
||||
- ``to_months``
|
||||
- :ansplugin:`community.general.to_months#filter`
|
||||
* - Year
|
||||
- 365*24*60*60 seconds
|
||||
- ``y``, ``year``, ``years``
|
||||
- ``to_years``
|
||||
- :ansplugin:`community.general.to_years#filter`
|
||||
|
||||
Note that months and years are using a simplified representation: a month is 30 days, and a year is 365 days. If you need different definitions of months or years, you can pass them as keyword arguments. For example, if you want a year to be 365.25 days, and a month to be 30.5 days, you can write ``'11months 4' | community.general.to_years(year=365.25, month=30.5)``. These keyword arguments can be specified to ``to_time_unit`` and to all shorthand filters.
|
||||
Note that months and years are using a simplified representation: a month is 30 days, and a year is 365 days. If you need different definitions of months or years, you can pass them as keyword arguments. For example, if you want a year to be 365.25 days, and a month to be 30.5 days, you can write ``'11months 4' | community.general.to_years(year=365.25, month=30.5)``. These keyword arguments can be specified to :ansplugin:`community.general.to_time_unit#filter` and to all shorthand filters.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
Working with Unicode
|
||||
---------------------
|
||||
|
||||
`Unicode <https://unicode.org/main.html>`_ makes it possible to produce two strings which may be visually equivalent, but are comprised of distinctly different characters/character sequences. To address this ``Unicode`` defines `normalization forms <https://unicode.org/reports/tr15/>`_ which avoid these distinctions by choosing a unique character sequence for a given visual representation.
|
||||
`Unicode <https://unicode.org/main.html>`_ makes it possible to produce two strings which may be visually equivalent, but are comprised of distinctly different characters/character sequences. To address this Unicode defines `normalization forms <https://unicode.org/reports/tr15/>`_ which avoid these distinctions by choosing a unique character sequence for a given visual representation.
|
||||
|
||||
You can use the ``community.general.unicode_normalize`` filter to normalize ``Unicode`` strings within your playbooks.
|
||||
You can use the :ansplugin:`community.general.unicode_normalize filter <community.general.unicode_normalize#filter>` to normalize Unicode strings within your playbooks.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
@@ -28,7 +28,7 @@ This produces:
|
||||
"msg": true
|
||||
}
|
||||
|
||||
The ``community.general.unicode_normalize`` filter accepts a keyword argument to select the ``Unicode`` form used to normalize the input string.
|
||||
The :ansplugin:`community.general.unicode_normalize filter <community.general.unicode_normalize#filter>` accepts a keyword argument :ansopt:`community.general.unicode_normalize#filter:form` to select the Unicode form used to normalize the input string.
|
||||
|
||||
:form: One of ``'NFC'`` (default), ``'NFD'``, ``'NFKC'``, or ``'NFKD'``. See the `Unicode reference <https://unicode.org/reports/tr15/>`_ for more information.
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Working with versions
|
||||
---------------------
|
||||
|
||||
If you need to sort a list of version numbers, the Jinja ``sort`` filter is problematic. Since it sorts lexicographically, ``2.10`` will come before ``2.9``. To treat version numbers correctly, you can use the ``version_sort`` filter:
|
||||
If you need to sort a list of version numbers, the Jinja ``sort`` filter is problematic. Since it sorts lexicographically, ``2.10`` will come before ``2.9``. To treat version numbers correctly, you can use the :ansplugin:`community.general.version_sort filter <community.general.version_sort#filter>`:
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ The :ref:`community.general collection <plugins_in_community.general>` offers cu
|
||||
Feature Tests
|
||||
-------------
|
||||
|
||||
The ``a_module`` test allows to check whether a given string refers to an existing module or action plugin. This can be useful in roles, which can use this to ensure that required modules are present ahead of time.
|
||||
The :ansplugin:`community.general.a_module test <community.general.a_module#test>` allows to check whether a given string refers to an existing module or action plugin. This can be useful in roles, which can use this to ensure that required modules are present ahead of time.
|
||||
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
namespace: community
|
||||
name: general
|
||||
version: 7.5.0
|
||||
version: 7.5.1
|
||||
readme: README.md
|
||||
authors:
|
||||
- Ansible (https://github.com/ansible)
|
||||
|
||||
@@ -44,7 +44,7 @@ class ActionModule(ActionBase):
|
||||
|
||||
def _async_result(self, async_status_args, task_vars, timeout):
|
||||
'''
|
||||
Retrieve results of the asynchonous task, and display them in place of
|
||||
Retrieve results of the asynchronous task, and display them in place of
|
||||
the async wrapper results (those with the ansible_job_id key).
|
||||
'''
|
||||
async_status = self._task.copy()
|
||||
|
||||
2
plugins/cache/redis.py
vendored
2
plugins/cache/redis.py
vendored
@@ -150,7 +150,7 @@ class CacheModule(BaseCacheModule):
|
||||
# format: "localhost:26379;localhost2:26379;0:changeme"
|
||||
connections = uri.split(';')
|
||||
connection_args = connections.pop(-1)
|
||||
if len(connection_args) > 0: # hanle if no db nr is given
|
||||
if len(connection_args) > 0: # handle if no db nr is given
|
||||
connection_args = connection_args.split(':')
|
||||
kw['db'] = connection_args.pop(0)
|
||||
try:
|
||||
|
||||
@@ -14,7 +14,7 @@ DOCUMENTATION = '''
|
||||
short_description: Post task results to a Nagios server through nrdp
|
||||
description:
|
||||
- This callback send playbook result to Nagios.
|
||||
- Nagios shall use NRDP to recive passive events.
|
||||
- Nagios shall use NRDP to receive passive events.
|
||||
- The passive check is sent to a dedicated host/service for Ansible.
|
||||
options:
|
||||
url:
|
||||
|
||||
@@ -15,7 +15,7 @@ DOCUMENTATION = '''
|
||||
- set as main display callback
|
||||
short_description: Don't display stuff to screen
|
||||
description:
|
||||
- This callback prevents outputing events to screen.
|
||||
- This callback prevents outputting events to screen.
|
||||
'''
|
||||
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
@@ -24,7 +24,7 @@ from ansible.plugins.callback import CallbackBase
|
||||
class CallbackModule(CallbackBase):
|
||||
|
||||
'''
|
||||
This callback wont print messages to stdout when new callback events are received.
|
||||
This callback won't print messages to stdout when new callback events are received.
|
||||
'''
|
||||
|
||||
CALLBACK_VERSION = 2.0
|
||||
|
||||
@@ -115,8 +115,8 @@ class CallbackModule(CallbackBase):
|
||||
line_length = 120
|
||||
if self.last_skipped:
|
||||
print()
|
||||
msg = colorize("# {0} {1}".format(task_name,
|
||||
'*' * (line_length - len(task_name))), 'bold')
|
||||
line = "# {0} ".format(task_name)
|
||||
msg = colorize("{0}{1}".format(line, '*' * (line_length - len(line))), 'bold')
|
||||
print(msg)
|
||||
|
||||
def _indent_text(self, text, indent_level):
|
||||
|
||||
@@ -70,7 +70,7 @@ class Connection(ConnectionBase):
|
||||
if in_data:
|
||||
raise AnsibleError("Internal Error: this module does not support optimized module pipelining")
|
||||
|
||||
# totally ignores privlege escalation
|
||||
# totally ignores privilege escalation
|
||||
display.vvv("EXEC %s" % cmd, host=self.host)
|
||||
p = self.client.command.run(cmd)[self.host]
|
||||
return p[0], p[1], p[2]
|
||||
|
||||
@@ -47,6 +47,6 @@ options:
|
||||
type: str
|
||||
token:
|
||||
description:
|
||||
- ACL token for authentification.
|
||||
- ACL token for authentication.
|
||||
type: str
|
||||
'''
|
||||
|
||||
@@ -70,7 +70,7 @@ DOCUMENTATION = r'''
|
||||
version_added: 4.2.0
|
||||
prefered_instance_network_interface:
|
||||
description:
|
||||
- If an instance has multiple network interfaces, select which one is the prefered as pattern.
|
||||
- If an instance has multiple network interfaces, select which one is the preferred as pattern.
|
||||
- Combined with the first number that can be found e.g. 'eth' + 0.
|
||||
- The option has been renamed from O(prefered_container_network_interface) to O(prefered_instance_network_interface)
|
||||
in community.general 3.8.0. The old name still works as an alias.
|
||||
@@ -80,7 +80,7 @@ DOCUMENTATION = r'''
|
||||
- prefered_container_network_interface
|
||||
prefered_instance_network_family:
|
||||
description:
|
||||
- If an instance has multiple network interfaces, which one is the prefered by family.
|
||||
- If an instance has multiple network interfaces, which one is the preferred by family.
|
||||
- Specify V(inet) for IPv4 and V(inet6) for IPv6.
|
||||
type: str
|
||||
default: inet
|
||||
@@ -376,7 +376,7 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
def get_instance_data(self, names):
|
||||
"""Create Inventory of the instance
|
||||
|
||||
Iterate through the different branches of the instances and collect Informations.
|
||||
Iterate through the different branches of the instances and collect Information.
|
||||
|
||||
Args:
|
||||
list(names): List of instance names
|
||||
@@ -398,7 +398,7 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
def get_network_data(self, names):
|
||||
"""Create Inventory of the instance
|
||||
|
||||
Iterate through the different branches of the instances and collect Informations.
|
||||
Iterate through the different branches of the instances and collect Information.
|
||||
|
||||
Args:
|
||||
list(names): List of instance names
|
||||
@@ -451,9 +451,9 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
return network_configuration
|
||||
|
||||
def get_prefered_instance_network_interface(self, instance_name):
|
||||
"""Helper to get the prefered interface of thr instance
|
||||
"""Helper to get the preferred interface of thr instance
|
||||
|
||||
Helper to get the prefered interface provide by neme pattern from 'prefered_instance_network_interface'.
|
||||
Helper to get the preferred interface provide by neme pattern from 'prefered_instance_network_interface'.
|
||||
|
||||
Args:
|
||||
str(containe_name): name of instance
|
||||
@@ -563,7 +563,7 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
else:
|
||||
path[instance_name][key] = value
|
||||
except KeyError as err:
|
||||
raise AnsibleParserError("Unable to store Informations: {0}".format(to_native(err)))
|
||||
raise AnsibleParserError("Unable to store Information: {0}".format(to_native(err)))
|
||||
|
||||
def extract_information_from_instance_configs(self):
|
||||
"""Process configuration information
|
||||
@@ -683,7 +683,7 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
continue
|
||||
# add instance
|
||||
self.inventory.add_host(instance_name)
|
||||
# add network informations
|
||||
# add network information
|
||||
self.build_inventory_network(instance_name)
|
||||
# add os
|
||||
v = self._get_data_entry('inventory/{0}/os'.format(instance_name))
|
||||
|
||||
@@ -102,7 +102,7 @@ DOCUMENTATION = '''
|
||||
type: bool
|
||||
qemu_extended_statuses:
|
||||
description:
|
||||
- Requires O(want_facts) to be set to V(true) to function. This will allow you to differentiate betweend C(paused) and C(prelaunch)
|
||||
- Requires O(want_facts) to be set to V(true) to function. This will allow you to differentiate between C(paused) and C(prelaunch)
|
||||
statuses of the QEMU VMs.
|
||||
- This introduces multiple groups [prefixed with O(group_prefix)] C(prelaunch) and C(paused).
|
||||
default: false
|
||||
|
||||
@@ -494,7 +494,7 @@ class OnePassCLIv2(OnePassCLIBase):
|
||||
if field.get("id") == field_name:
|
||||
return field.get("value", "")
|
||||
|
||||
# Look at the section data and get an indentifier. The value of 'id' is either a unique ID
|
||||
# Look at the section data and get an identifier. The value of 'id' is either a unique ID
|
||||
# or a human-readable string. If a 'label' field exists, prefer that since
|
||||
# it is the value visible in the 1Password UI when both 'id' and 'label' exist.
|
||||
section = field.get("section", {})
|
||||
|
||||
@@ -72,7 +72,7 @@ DOCUMENTATION = r"""
|
||||
type: int
|
||||
override_special:
|
||||
description:
|
||||
- Overide a list of special characters to use in the string.
|
||||
- Override a list of special characters to use in the string.
|
||||
- If set O(min_special) should be set to a non-default value.
|
||||
type: str
|
||||
override_all:
|
||||
@@ -89,7 +89,7 @@ DOCUMENTATION = r"""
|
||||
version_added: 7.5.0
|
||||
similar_chars:
|
||||
description:
|
||||
- Overide a list of characters not to be use in the string.
|
||||
- Override a list of characters not to be use in the string.
|
||||
default: "il1LoO0"
|
||||
type: str
|
||||
version_added: 7.5.0
|
||||
@@ -116,7 +116,7 @@ EXAMPLES = r"""
|
||||
var: lookup('community.general.random_string', base64=True)
|
||||
# Example result: ['NHZ6eWN5Qk0=']
|
||||
|
||||
- name: Generate a random string with 1 lower, 1 upper, 1 number and 1 special char (atleast)
|
||||
- name: Generate a random string with 1 lower, 1 upper, 1 number and 1 special char (at least)
|
||||
ansible.builtin.debug:
|
||||
var: lookup('community.general.random_string', min_lower=1, min_upper=1, min_special=1, min_numeric=1)
|
||||
# Example result: ['&Qw2|E[-']
|
||||
|
||||
@@ -39,7 +39,7 @@ except ImportError:
|
||||
LIBCLOUD_IMP_ERR = traceback.format_exc()
|
||||
HAS_LIBCLOUD = False
|
||||
|
||||
# MCP 2.x version patten for location (datacenter) names.
|
||||
# MCP 2.x version pattern for location (datacenter) names.
|
||||
#
|
||||
# Note that this is not a totally reliable way of determining MCP version.
|
||||
# Unfortunately, libcloud's NodeLocation currently makes no provision for extended properties.
|
||||
|
||||
@@ -203,7 +203,7 @@ class Config(object):
|
||||
|
||||
if url == "":
|
||||
raise HwcClientException(
|
||||
0, "Can not find the enpoint for %s" % service_type)
|
||||
0, "Cannot find the endpoint for %s" % service_type)
|
||||
|
||||
if url[-1] != "/":
|
||||
url += "/"
|
||||
@@ -351,7 +351,7 @@ def wait_to_finish(target, pending, refresh, timeout, min_interval=1, delay=3):
|
||||
|
||||
if pending and status not in pending:
|
||||
raise HwcModuleException(
|
||||
"unexpect status(%s) occurred" % status)
|
||||
"unexpected status(%s) occurred" % status)
|
||||
|
||||
if not is_last_time:
|
||||
wait *= 2
|
||||
@@ -362,7 +362,7 @@ def wait_to_finish(target, pending, refresh, timeout, min_interval=1, delay=3):
|
||||
|
||||
time.sleep(wait)
|
||||
|
||||
raise HwcModuleException("asycn wait timeout after %d seconds" % timeout)
|
||||
raise HwcModuleException("async wait timeout after %d seconds" % timeout)
|
||||
|
||||
|
||||
def navigate_value(data, index, array_index=None):
|
||||
|
||||
@@ -544,7 +544,7 @@ class KeycloakAPI(object):
|
||||
return None
|
||||
|
||||
def get_client_group_available_rolemappings(self, gid, cid, realm="master"):
|
||||
""" Fetch the available role of a client in a specified goup on the Keycloak server.
|
||||
""" Fetch the available role of a client in a specified group on the Keycloak server.
|
||||
|
||||
:param gid: ID of the group from which to obtain the rolemappings.
|
||||
:param cid: ID of the client from which to obtain the rolemappings.
|
||||
@@ -627,7 +627,7 @@ class KeycloakAPI(object):
|
||||
% (rid, realm, str(e)))
|
||||
|
||||
def add_group_rolemapping(self, gid, cid, role_rep, realm="master"):
|
||||
""" Fetch the composite role of a client in a specified goup on the Keycloak server.
|
||||
""" Fetch the composite role of a client in a specified group on the Keycloak server.
|
||||
|
||||
:param gid: ID of the group from which to obtain the rolemappings.
|
||||
:param cid: ID of the client from which to obtain the rolemappings.
|
||||
@@ -1238,7 +1238,7 @@ class KeycloakAPI(object):
|
||||
|
||||
:param realm: Realm in which the clientscope resides.
|
||||
:param client_id: The client in which the clientscope resides.
|
||||
:return The optinal clientscopes of this realm or client
|
||||
:return The optional clientscopes of this realm or client
|
||||
"""
|
||||
url = URL_OPTIONAL_CLIENTSCOPES if client_id is None else URL_CLIENT_OPTIONAL_CLIENTSCOPES
|
||||
return self._get_clientscopes_of_type(realm, url, 'optional', client_id)
|
||||
@@ -1251,7 +1251,7 @@ class KeycloakAPI(object):
|
||||
|
||||
:param realm: Realm in which the clientscope resides.
|
||||
:param url_template the template for the right type
|
||||
:param scope_type this can be either optinal or default
|
||||
:param scope_type this can be either optional or default
|
||||
:param client_id: The client in which the clientscope resides.
|
||||
:return The clientscopes of the specified type of this realm
|
||||
"""
|
||||
@@ -1273,7 +1273,7 @@ class KeycloakAPI(object):
|
||||
|
||||
def _decide_url_type_clientscope(self, client_id=None, scope_type="default"):
|
||||
"""Decides which url to use.
|
||||
:param scope_type this can be either optinal or default
|
||||
:param scope_type this can be either optional or default
|
||||
:param client_id: The client in which the clientscope resides.
|
||||
"""
|
||||
if client_id is None:
|
||||
@@ -1520,7 +1520,7 @@ class KeycloakAPI(object):
|
||||
def get_subgroup_direct_parent(self, parents, realm="master", children_to_resolve=None):
|
||||
""" Get keycloak direct parent group API object for a given chain of parents.
|
||||
|
||||
To succesfully work the API for subgroups we actually dont need
|
||||
To successfully work the API for subgroups we actually don't need
|
||||
to "walk the whole tree" for nested groups but only need to know
|
||||
the ID for the direct predecessor of current subgroup. This
|
||||
method will guarantee us this information getting there with
|
||||
@@ -2879,7 +2879,7 @@ class KeycloakAPI(object):
|
||||
groups_to_add_and_remove = self.extract_groups_to_add_to_and_remove_from_user(groups)
|
||||
# If group membership need to be changed
|
||||
if not is_struct_included(groups_to_add_and_remove['add'], user_existing_groups):
|
||||
# Get available goups in the realm
|
||||
# Get available groups in the realm
|
||||
realm_groups = self.get_groups(realm=realm)
|
||||
for realm_group in realm_groups:
|
||||
if "name" in realm_group and realm_group["name"] in groups_to_add_and_remove['add']:
|
||||
|
||||
@@ -14,8 +14,9 @@ from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
from ansible.module_utils.six.moves.urllib.parse import urlencode
|
||||
from ansible.module_utils.urls import open_url, urllib_error
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.basic import json
|
||||
import ansible.module_utils.six.moves.urllib.error as urllib_error
|
||||
|
||||
|
||||
class Response(object):
|
||||
@@ -78,7 +79,7 @@ def memset_api_call(api_key, api_method, payload=None):
|
||||
msg = "Memset API returned an error ({0}, {1})." . format(response.json()['error_type'], response.json()['error'])
|
||||
except urllib_error.URLError as e:
|
||||
has_failed = True
|
||||
msg = "An URLError occured ({0})." . format(type(e))
|
||||
msg = "An URLError occurred ({0})." . format(type(e))
|
||||
response.stderr = "{0}" . format(e)
|
||||
|
||||
if msg is None:
|
||||
|
||||
@@ -331,7 +331,7 @@ def pritunl_auth_request(
|
||||
):
|
||||
"""
|
||||
Send an API call to a Pritunl server.
|
||||
Taken from https://pritunl.com/api and adaped work with Ansible open_url
|
||||
Taken from https://pritunl.com/api and adapted to work with Ansible open_url
|
||||
"""
|
||||
auth_timestamp = str(int(time.time()))
|
||||
auth_nonce = uuid.uuid4().hex
|
||||
|
||||
@@ -434,7 +434,7 @@ def check_and_update_attributes(
|
||||
target_instance, attr_name, input_value, existing_value, changed
|
||||
):
|
||||
"""
|
||||
This function checks the difference between two resource attributes of literal types and sets the attrbute
|
||||
This function checks the difference between two resource attributes of literal types and sets the attribute
|
||||
value in the target instance type holding the attribute.
|
||||
:param target_instance: The instance which contains the attribute whose values to be compared
|
||||
:param attr_name: Name of the attribute whose value required to be compared
|
||||
@@ -785,7 +785,7 @@ def _get_attributes_to_consider(exclude_attributes, model, module):
|
||||
attributes_to_consider = list(model.attribute_map)
|
||||
if "freeform_tags" in attributes_to_consider:
|
||||
attributes_to_consider.remove("freeform_tags")
|
||||
# Temporarily removing node_count as the exisiting resource does not reflect it
|
||||
# Temporarily removing node_count as the existing resource does not reflect it
|
||||
if "node_count" in attributes_to_consider:
|
||||
attributes_to_consider.remove("node_count")
|
||||
_debug("attributes to consider: {0}".format(attributes_to_consider))
|
||||
@@ -1771,7 +1771,7 @@ def update_class_type_attr_difference(
|
||||
):
|
||||
"""
|
||||
Checks the difference and updates an attribute which is represented by a class
|
||||
instance. Not aplicable if the attribute type is a primitive value.
|
||||
instance. Not applicable if the attribute type is a primitive value.
|
||||
For example, if a class name is A with an attribute x, then if A.x = X(), then only
|
||||
this method works.
|
||||
:param update_class_details The instance which should be updated if there is change in
|
||||
@@ -1933,7 +1933,7 @@ def get_target_resource_from_list(
|
||||
module, list_resource_fn, target_resource_id=None, **kwargs
|
||||
):
|
||||
"""
|
||||
Returns a resource filtered by identifer from a list of resources. This method should be
|
||||
Returns a resource filtered by identifier from a list of resources. This method should be
|
||||
used as an alternative of 'get resource' method when 'get resource' is nor provided by
|
||||
resource api. This method returns a wrapper of response object but that should not be
|
||||
used as an input to 'wait_until' utility as this is only a partial wrapper of response object.
|
||||
|
||||
@@ -327,7 +327,7 @@ class RedfishUtils(object):
|
||||
found in ansible.module_utils.urls, but it takes files and encodes them
|
||||
as Base64 strings, which is not expected by Redfish services. It also
|
||||
adds escaping of certain bytes in the payload, such as inserting '\r'
|
||||
any time it finds a standlone '\n', which corrupts the image payload
|
||||
any time it finds a standalone '\n', which corrupts the image payload
|
||||
send to the service. This implementation is simplified to Redfish's
|
||||
usage and doesn't necessarily represent an exhaustive method of
|
||||
building multipart requests.
|
||||
@@ -1658,7 +1658,10 @@ class RedfishUtils(object):
|
||||
|
||||
# Scan the messages to see if next steps are needed
|
||||
for message in operation_results['messages']:
|
||||
message_id = message['MessageId']
|
||||
message_id = message.get('MessageId')
|
||||
if message_id is None:
|
||||
# While this is invalid, treat the lack of a MessageId as "no message"
|
||||
continue
|
||||
|
||||
if message_id.startswith('Update.1.') and message_id.endswith('.OperationTransitionedToJob'):
|
||||
# Operation rerouted to a job; update the status and handle
|
||||
@@ -3703,12 +3706,12 @@ class RedfishUtils(object):
|
||||
rsp_uri = loc['Uri']
|
||||
if vendor == 'HPE':
|
||||
# WORKAROUND
|
||||
# HPE systems with iLO 4 will have BIOS Atrribute Registries location URI as a dictonary with key 'extref'
|
||||
# HPE systems with iLO 4 will have BIOS Attribute Registries location URI as a dictionary with key 'extref'
|
||||
# Hence adding condition to fetch the Uri
|
||||
if type(loc['Uri']) is dict and "extref" in loc['Uri'].keys():
|
||||
rsp_uri = loc['Uri']['extref']
|
||||
if not rsp_uri:
|
||||
msg = "Language 'en' not found in BIOS Atrribute Registries location, URI: %s, response: %s"
|
||||
msg = "Language 'en' not found in BIOS Attribute Registries location, URI: %s, response: %s"
|
||||
return {
|
||||
"ret": False,
|
||||
"msg": msg % (resp_uri, str(resp_data))
|
||||
|
||||
@@ -303,7 +303,7 @@ class Scaleway(object):
|
||||
wait_timeout = self.module.params["wait_timeout"]
|
||||
wait_sleep_time = self.module.params["wait_sleep_time"]
|
||||
|
||||
# Prevent requesting the ressource status too soon
|
||||
# Prevent requesting the resource status too soon
|
||||
time.sleep(wait_sleep_time)
|
||||
|
||||
start = datetime.datetime.utcnow()
|
||||
|
||||
@@ -49,7 +49,7 @@ class _Variable(object):
|
||||
output (bool, optional): flag indicating whether the variable should be in the output of the module. Defaults to None.
|
||||
diff (bool, optional): flag indicating whether to generate diff mode output for this variable. Defaults to None.
|
||||
change (bool, optional): flag indicating whether to track if changes happened to this variable. Defaults to None.
|
||||
fact (bool, optional): flag indicating whether the varaiable should be exposed as a fact of the module. Defaults to None.
|
||||
fact (bool, optional): flag indicating whether the variable should be exposed as a fact of the module. Defaults to None.
|
||||
initial_value (any, optional): initial value of the variable, to be used with `change`. Defaults to NOTHING.
|
||||
verbosity (int, optional): level of verbosity in which this variable is reported by the module as `output`, `fact` or `diff`. Defaults to None.
|
||||
"""
|
||||
@@ -127,7 +127,7 @@ class VarDict(object):
|
||||
output (bool, optional): flag indicating whether the variable should be in the output of the module. Defaults to None.
|
||||
diff (bool, optional): flag indicating whether to generate diff mode output for this variable. Defaults to None.
|
||||
change (bool, optional): flag indicating whether to track if changes happened to this variable. Defaults to None.
|
||||
fact (bool, optional): flag indicating whether the varaiable should be exposed as a fact of the module. Defaults to None.
|
||||
fact (bool, optional): flag indicating whether the variable should be exposed as a fact of the module. Defaults to None.
|
||||
initial_value (any, optional): initial value of the variable, to be used with `change`. Defaults to NOTHING.
|
||||
verbosity (int, optional): level of verbosity in which this variable is reported by the module as `output`, `fact` or `diff`. Defaults to None.
|
||||
"""
|
||||
|
||||
@@ -182,7 +182,7 @@ class WdcRedfishUtils(RedfishUtils):
|
||||
|
||||
:param str bundle_uri: HTTP URI of the firmware bundle.
|
||||
:return: Firmware version number contained in the bundle, and whether or not the bundle is multi-tenant.
|
||||
Either value will be None if unable to deterine.
|
||||
Either value will be None if unable to determine.
|
||||
:rtype: str or None, bool or None
|
||||
"""
|
||||
bundle_temp_filename = fetch_file(module=self.module,
|
||||
|
||||
@@ -204,7 +204,7 @@ def main():
|
||||
":" + module.params['action'] + ":" + module.params['command']
|
||||
|
||||
# If current entry exists or fields are different(if the entry does not
|
||||
# exists, then the entry wil be created
|
||||
# exists, then the entry will be created
|
||||
if (not current_entry['exist']) or (
|
||||
module.params['runlevel'] != current_entry['runlevel'] or
|
||||
module.params['action'] != current_entry['action'] or
|
||||
|
||||
@@ -1501,7 +1501,7 @@ class ClcServer:
|
||||
return aa_policy_id
|
||||
|
||||
#
|
||||
# This is the function that gets patched to the Request.server object using a lamda closure
|
||||
# This is the function that gets patched to the Request.server object using a lambda closure
|
||||
#
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -170,10 +170,15 @@ def get_available_options(module, command='install'):
|
||||
return command_help_json['definition']['options']
|
||||
|
||||
|
||||
def composer_command(module, command, arguments="", options=None, global_command=False):
|
||||
def composer_command(module, command, arguments="", options=None):
|
||||
if options is None:
|
||||
options = []
|
||||
|
||||
global_command = module.params['global_command']
|
||||
|
||||
if not global_command:
|
||||
options.extend(['--working-dir', "'%s'" % module.params['working_dir']])
|
||||
|
||||
if module.params['executable'] is None:
|
||||
php_path = module.get_bin_path("php", True, ["/usr/local/bin"])
|
||||
else:
|
||||
@@ -217,7 +222,6 @@ def main():
|
||||
module.fail_json(msg="Use the 'arguments' param for passing arguments with the 'command'")
|
||||
|
||||
arguments = module.params['arguments']
|
||||
global_command = module.params['global_command']
|
||||
available_options = get_available_options(module=module, command=command)
|
||||
|
||||
options = []
|
||||
@@ -234,9 +238,6 @@ def main():
|
||||
option = "--%s" % option
|
||||
options.append(option)
|
||||
|
||||
if not global_command:
|
||||
options.extend(['--working-dir', "'%s'" % module.params['working_dir']])
|
||||
|
||||
option_params = {
|
||||
'prefer_source': 'prefer-source',
|
||||
'prefer_dist': 'prefer-dist',
|
||||
@@ -260,7 +261,7 @@ def main():
|
||||
else:
|
||||
module.exit_json(skipped=True, msg="command '%s' does not support check mode, skipping" % command)
|
||||
|
||||
rc, out, err = composer_command(module, command, arguments, options, global_command)
|
||||
rc, out, err = composer_command(module, command, arguments, options)
|
||||
|
||||
if rc != 0:
|
||||
output = parse_out(err)
|
||||
|
||||
@@ -401,7 +401,7 @@ def create_role(configuration):
|
||||
if len(configuration.node_identities) == 1 and configuration.node_identities[0] is None:
|
||||
node_id_specified = False
|
||||
|
||||
# get rid of None item so we can set an emtpy list for policies, service identities and node identities
|
||||
# get rid of None item so we can set an empty list for policies, service identities and node identities
|
||||
if not policy_specified:
|
||||
configuration.policies.pop()
|
||||
|
||||
|
||||
@@ -400,7 +400,7 @@ class DconfPreference(object):
|
||||
rc, out, err = dbus_wrapper.run_command(command)
|
||||
|
||||
if rc != 0:
|
||||
self.module.fail_json(msg='dconf failed while reseting the value with error: %s' % err,
|
||||
self.module.fail_json(msg='dconf failed while resetting the value with error: %s' % err,
|
||||
out=out,
|
||||
err=err)
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ class DNSimpleV2():
|
||||
client = Client(sandbox=self.sandbox, email=self.account_email, access_token=self.account_api_token, user_agent="ansible/community.general")
|
||||
else:
|
||||
msg = "Option account_email or account_api_token not provided. " \
|
||||
"Dnsimple authentiction with a .dnsimple config file is not " \
|
||||
"Dnsimple authentication with a .dnsimple config file is not " \
|
||||
"supported with dnsimple-python>=2.0.0"
|
||||
raise DNSimpleException(msg)
|
||||
client.identity.whoami()
|
||||
@@ -225,24 +225,24 @@ class DNSimpleV2():
|
||||
self.client.domains.delete_domain(self.account.id, domain)
|
||||
|
||||
def get_records(self, zone, dnsimple_filter=None):
|
||||
"""return dns ressource records which match a specified filter"""
|
||||
"""return dns resource records which match a specified filter"""
|
||||
records_list = self._get_paginated_result(self.client.zones.list_records,
|
||||
account_id=self.account.id,
|
||||
zone=zone, filter=dnsimple_filter)
|
||||
return [d.__dict__ for d in records_list]
|
||||
|
||||
def delete_record(self, domain, rid):
|
||||
"""delete a single dns ressource record"""
|
||||
"""delete a single dns resource record"""
|
||||
self.client.zones.delete_record(self.account.id, domain, rid)
|
||||
|
||||
def update_record(self, domain, rid, ttl=None, priority=None):
|
||||
"""update a single dns ressource record"""
|
||||
"""update a single dns resource record"""
|
||||
zr = ZoneRecordUpdateInput(ttl=ttl, priority=priority)
|
||||
result = self.client.zones.update_record(self.account.id, str(domain), str(rid), zr).data.__dict__
|
||||
return result
|
||||
|
||||
def create_record(self, domain, name, record_type, content, ttl=None, priority=None):
|
||||
"""create a single dns ressource record"""
|
||||
"""create a single dns resource record"""
|
||||
zr = ZoneRecordInput(name=name, type=record_type, content=content, ttl=ttl, priority=priority)
|
||||
return self.client.zones.create_record(self.account.id, str(domain), zr).data.__dict__
|
||||
|
||||
|
||||
@@ -509,15 +509,15 @@ class DME2(object):
|
||||
return json.dumps(data, separators=(',', ':'))
|
||||
|
||||
def createRecord(self, data):
|
||||
# @TODO update the cache w/ resultant record + id when impleneted
|
||||
# @TODO update the cache w/ resultant record + id when implemented
|
||||
return self.query(self.record_url, 'POST', data)
|
||||
|
||||
def updateRecord(self, record_id, data):
|
||||
# @TODO update the cache w/ resultant record + id when impleneted
|
||||
# @TODO update the cache w/ resultant record + id when implemented
|
||||
return self.query(self.record_url + '/' + str(record_id), 'PUT', data)
|
||||
|
||||
def deleteRecord(self, record_id):
|
||||
# @TODO remove record from the cache when impleneted
|
||||
# @TODO remove record from the cache when implemented
|
||||
return self.query(self.record_url + '/' + str(record_id), 'DELETE')
|
||||
|
||||
def getMonitor(self, record_id):
|
||||
|
||||
@@ -227,7 +227,7 @@ class GithubDeployKey(object):
|
||||
yield self.module.from_json(resp.read())
|
||||
|
||||
links = {}
|
||||
for x, y in findall(r'<([^>]+)>;\s*rel="(\w+)"', info["link"]):
|
||||
for x, y in findall(r'<([^>]+)>;\s*rel="(\w+)"', info.get("link", '')):
|
||||
links[y] = x
|
||||
|
||||
url = links.get('next')
|
||||
|
||||
@@ -276,11 +276,11 @@ def main():
|
||||
ensure_gitlab_package(module)
|
||||
|
||||
access_level_int = {
|
||||
'guest': gitlab.GUEST_ACCESS,
|
||||
'reporter': gitlab.REPORTER_ACCESS,
|
||||
'developer': gitlab.DEVELOPER_ACCESS,
|
||||
'maintainer': gitlab.MAINTAINER_ACCESS,
|
||||
'owner': gitlab.OWNER_ACCESS,
|
||||
'guest': gitlab.const.GUEST_ACCESS,
|
||||
'reporter': gitlab.const.REPORTER_ACCESS,
|
||||
'developer': gitlab.const.DEVELOPER_ACCESS,
|
||||
'maintainer': gitlab.const.MAINTAINER_ACCESS,
|
||||
'owner': gitlab.const.OWNER_ACCESS,
|
||||
}
|
||||
|
||||
gitlab_group = module.params['gitlab_group']
|
||||
|
||||
@@ -71,7 +71,7 @@ options:
|
||||
version_added: 4.5.0
|
||||
description:
|
||||
- A list of dictionaries that represents CI/CD variables.
|
||||
- This modules works internal with this sructure, even if the older O(vars) parameter is used.
|
||||
- This modules works internal with this structure, even if the older O(vars) parameter is used.
|
||||
default: []
|
||||
type: list
|
||||
elements: dict
|
||||
@@ -88,24 +88,24 @@ options:
|
||||
type: str
|
||||
masked:
|
||||
description:
|
||||
- Wether variable value is masked or not.
|
||||
- Whether variable value is masked or not.
|
||||
type: bool
|
||||
default: false
|
||||
protected:
|
||||
description:
|
||||
- Wether variable value is protected or not.
|
||||
- Whether variable value is protected or not.
|
||||
type: bool
|
||||
default: false
|
||||
raw:
|
||||
description:
|
||||
- Wether variable value is raw or not.
|
||||
- Whether variable value is raw or not.
|
||||
- Support for raw values requires GitLab >= 15.7.
|
||||
type: bool
|
||||
default: false
|
||||
version_added: '7.4.0'
|
||||
variable_type:
|
||||
description:
|
||||
- Wether a variable is an environment variable (V(env_var)) or a file (V(file)).
|
||||
- Whether a variable is an environment variable (V(env_var)) or a file (V(file)).
|
||||
type: str
|
||||
choices: [ "env_var", "file" ]
|
||||
default: env_var
|
||||
|
||||
@@ -67,17 +67,17 @@ options:
|
||||
type: str
|
||||
masked:
|
||||
description:
|
||||
- Wether variable value is masked or not.
|
||||
- Whether variable value is masked or not.
|
||||
type: bool
|
||||
default: false
|
||||
protected:
|
||||
description:
|
||||
- Wether variable value is protected or not.
|
||||
- Whether variable value is protected or not.
|
||||
type: bool
|
||||
default: false
|
||||
variable_type:
|
||||
description:
|
||||
- Wether a variable is an environment variable (V(env_var)) or a file (V(file)).
|
||||
- Whether a variable is an environment variable (V(env_var)) or a file (V(file)).
|
||||
type: str
|
||||
choices: [ "env_var", "file" ]
|
||||
default: env_var
|
||||
|
||||
@@ -70,7 +70,7 @@ options:
|
||||
description:
|
||||
description:
|
||||
- A description for the merge request.
|
||||
- Gets overriden by a content of file specified at O(description_path), if found.
|
||||
- Gets overridden by a content of file specified at O(description_path), if found.
|
||||
type: str
|
||||
description_path:
|
||||
description:
|
||||
|
||||
@@ -282,10 +282,10 @@ def main():
|
||||
ensure_gitlab_package(module)
|
||||
|
||||
access_level_int = {
|
||||
'guest': gitlab.GUEST_ACCESS,
|
||||
'reporter': gitlab.REPORTER_ACCESS,
|
||||
'developer': gitlab.DEVELOPER_ACCESS,
|
||||
'maintainer': gitlab.MAINTAINER_ACCESS,
|
||||
'guest': gitlab.const.GUEST_ACCESS,
|
||||
'reporter': gitlab.const.REPORTER_ACCESS,
|
||||
'developer': gitlab.const.DEVELOPER_ACCESS,
|
||||
'maintainer': gitlab.const.MAINTAINER_ACCESS,
|
||||
}
|
||||
|
||||
gitlab_project = module.params['project']
|
||||
|
||||
@@ -87,26 +87,26 @@ options:
|
||||
type: str
|
||||
masked:
|
||||
description:
|
||||
- Wether variable value is masked or not.
|
||||
- Whether variable value is masked or not.
|
||||
- Support for masked values requires GitLab >= 11.10.
|
||||
type: bool
|
||||
default: false
|
||||
protected:
|
||||
description:
|
||||
- Wether variable value is protected or not.
|
||||
- Whether variable value is protected or not.
|
||||
- Support for protected values requires GitLab >= 9.3.
|
||||
type: bool
|
||||
default: false
|
||||
raw:
|
||||
description:
|
||||
- Wether variable value is raw or not.
|
||||
- Whether variable value is raw or not.
|
||||
- Support for raw values requires GitLab >= 15.7.
|
||||
type: bool
|
||||
default: false
|
||||
version_added: '7.4.0'
|
||||
variable_type:
|
||||
description:
|
||||
- Wether a variable is an environment variable (V(env_var)) or a file (V(file)).
|
||||
- Whether a variable is an environment variable (V(env_var)) or a file (V(file)).
|
||||
- Support for O(variables[].variable_type) requires GitLab >= 11.11.
|
||||
type: str
|
||||
choices: ["env_var", "file"]
|
||||
|
||||
@@ -94,9 +94,9 @@ class GitlabProtectedBranch(object):
|
||||
self._module = module
|
||||
self.project = self.get_project(project)
|
||||
self.ACCESS_LEVEL = {
|
||||
'nobody': gitlab.NO_ACCESS,
|
||||
'developer': gitlab.DEVELOPER_ACCESS,
|
||||
'maintainer': gitlab.MAINTAINER_ACCESS
|
||||
'nobody': gitlab.const.NO_ACCESS,
|
||||
'developer': gitlab.const.DEVELOPER_ACCESS,
|
||||
'maintainer': gitlab.const.MAINTAINER_ACCESS
|
||||
}
|
||||
|
||||
def get_project(self, project_name):
|
||||
|
||||
@@ -244,12 +244,12 @@ class GitLabUser(object):
|
||||
self._gitlab = gitlab_instance
|
||||
self.user_object = None
|
||||
self.ACCESS_LEVEL = {
|
||||
'guest': gitlab.GUEST_ACCESS,
|
||||
'reporter': gitlab.REPORTER_ACCESS,
|
||||
'developer': gitlab.DEVELOPER_ACCESS,
|
||||
'master': gitlab.MAINTAINER_ACCESS,
|
||||
'maintainer': gitlab.MAINTAINER_ACCESS,
|
||||
'owner': gitlab.OWNER_ACCESS,
|
||||
'guest': gitlab.const.GUEST_ACCESS,
|
||||
'reporter': gitlab.const.REPORTER_ACCESS,
|
||||
'developer': gitlab.const.DEVELOPER_ACCESS,
|
||||
'master': gitlab.const.MAINTAINER_ACCESS,
|
||||
'maintainer': gitlab.const.MAINTAINER_ACCESS,
|
||||
'owner': gitlab.const.OWNER_ACCESS,
|
||||
}
|
||||
|
||||
'''
|
||||
@@ -485,7 +485,7 @@ class GitLabUser(object):
|
||||
|
||||
'''
|
||||
@param user User object
|
||||
@param identites List of identities to be added/updated
|
||||
@param identities List of identities to be added/updated
|
||||
@param overwrite_identities Overwrite user identities with identities passed to this module
|
||||
'''
|
||||
def add_identities(self, user, identities, overwrite_identities=False):
|
||||
@@ -504,7 +504,7 @@ class GitLabUser(object):
|
||||
|
||||
'''
|
||||
@param user User object
|
||||
@param identites List of identities to be added/updated
|
||||
@param identities List of identities to be added/updated
|
||||
'''
|
||||
def delete_identities(self, user, identities):
|
||||
changed = False
|
||||
|
||||
@@ -393,7 +393,7 @@ class Homectl(object):
|
||||
user_metadata.pop('status', None)
|
||||
# Let last change Usec be updated by homed when command runs.
|
||||
user_metadata.pop('lastChangeUSec', None)
|
||||
# Now only change fields that are called on leaving whats currently in the record intact.
|
||||
# Now only change fields that are called on leaving what's currently in the record intact.
|
||||
record = user_metadata
|
||||
|
||||
record['userName'] = self.name
|
||||
@@ -439,7 +439,7 @@ class Homectl(object):
|
||||
self.result['changed'] = True
|
||||
|
||||
if self.disksize:
|
||||
# convert humand readble to bytes
|
||||
# convert human readable to bytes
|
||||
if self.disksize != record.get('diskSize'):
|
||||
record['diskSize'] = human_to_bytes(self.disksize)
|
||||
self.result['changed'] = True
|
||||
|
||||
@@ -84,7 +84,7 @@ ilo_redfish_command:
|
||||
type: dict
|
||||
contains:
|
||||
ret:
|
||||
description: Return True/False based on whether the operation was performed succesfully.
|
||||
description: Return True/False based on whether the operation was performed successfully.
|
||||
type: bool
|
||||
msg:
|
||||
description: Status of the operation performed on the iLO.
|
||||
|
||||
@@ -142,7 +142,7 @@ class Imgadm(object):
|
||||
self.uuid = module.params['uuid']
|
||||
|
||||
# Since there are a number of (natural) aliases, prevent having to look
|
||||
# them up everytime we operate on `state`.
|
||||
# them up every time we operate on `state`.
|
||||
if self.params['state'] in ['present', 'imported', 'updated']:
|
||||
self.present = True
|
||||
else:
|
||||
@@ -174,7 +174,7 @@ class Imgadm(object):
|
||||
|
||||
# There is no feedback from imgadm(1M) to determine if anything
|
||||
# was actually changed. So treat this as an 'always-changes' operation.
|
||||
# Note that 'imgadm -v' produces unparseable JSON...
|
||||
# Note that 'imgadm -v' produces unparsable JSON...
|
||||
self.changed = True
|
||||
|
||||
def manage_sources(self):
|
||||
|
||||
@@ -133,7 +133,7 @@ def _check_new_pkg(module, package, repository_path):
|
||||
def _check_installed_pkg(module, package, repository_path):
|
||||
"""
|
||||
Check the package on AIX.
|
||||
It verifies if the package is installed and informations
|
||||
It verifies if the package is installed and information
|
||||
|
||||
:param module: Ansible module parameters spec.
|
||||
:param package: Package/fileset name.
|
||||
|
||||
@@ -69,7 +69,7 @@ EXAMPLES = '''
|
||||
|
||||
RETURN = '''
|
||||
data:
|
||||
description: "JSON parsed response from ipbase.com. Please refer to U(https://ipbase.com/docs/info) for the detailled structure of the response."
|
||||
description: "JSON parsed response from ipbase.com. Please refer to U(https://ipbase.com/docs/info) for the detailed structure of the response."
|
||||
returned: success
|
||||
type: dict
|
||||
sample: {
|
||||
|
||||
@@ -458,7 +458,7 @@ def main():
|
||||
# The issue comes when wanting to restore state from empty iptable-save's
|
||||
# output... what happens when, say:
|
||||
# - no table is specified, and iptables-save's output is only nat table;
|
||||
# - we give filter's ruleset to iptables-restore, that locks ourselve out
|
||||
# - we give filter's ruleset to iptables-restore, that locks ourselves out
|
||||
# of the host;
|
||||
# then trying to roll iptables state back to the previous (working) setup
|
||||
# doesn't override current filter table because no filter table is stored
|
||||
|
||||
@@ -44,7 +44,7 @@ options:
|
||||
choices: [ attach, comment, create, edit, fetch, link, search, transition, update, worklog ]
|
||||
description:
|
||||
- The operation to perform.
|
||||
- V(worklog) was added in community.genereal 6.5.0.
|
||||
- V(worklog) was added in community.general 6.5.0.
|
||||
|
||||
username:
|
||||
type: str
|
||||
@@ -799,7 +799,7 @@ class JIRA(StateModuleHelper):
|
||||
if msg:
|
||||
self.module.fail_json(msg=', '.join(msg))
|
||||
self.module.fail_json(msg=to_native(error))
|
||||
# Fallback print body, if it cant be decoded
|
||||
# Fallback print body, if it can't be decoded
|
||||
self.module.fail_json(msg=to_native(info['body']))
|
||||
|
||||
body = response.read()
|
||||
|
||||
@@ -53,7 +53,6 @@ EXAMPLES = '''
|
||||
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper
|
||||
|
||||
@@ -106,16 +105,10 @@ class Blacklist(StateModuleHelper):
|
||||
|
||||
def __quit_module__(self):
|
||||
if self.has_changed() and not self.module.check_mode:
|
||||
dummy, tmpfile = tempfile.mkstemp()
|
||||
try:
|
||||
os.remove(tmpfile)
|
||||
self.module.preserved_copy(self.vars.filename, tmpfile) # ensure right perms/ownership
|
||||
with open(tmpfile, 'w') as fd:
|
||||
fd.writelines(["{0}\n".format(x) for x in self.vars.lines])
|
||||
self.module.atomic_move(tmpfile, self.vars.filename)
|
||||
finally:
|
||||
if os.path.exists(tmpfile):
|
||||
os.remove(tmpfile)
|
||||
bkp = self.module.backup_local(self.vars.filename)
|
||||
with open(self.vars.filename, "w") as fd:
|
||||
fd.writelines(["{0}\n".format(x) for x in self.vars.lines])
|
||||
self.module.add_cleanup_file(bkp)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
@@ -17,7 +17,7 @@ short_description: Allows administration of Keycloak authentication required act
|
||||
|
||||
description:
|
||||
- This module can register, update and delete required actions.
|
||||
- It also filters out any duplicate required actions by their alias. The first ocurrence is preserved.
|
||||
- It also filters out any duplicate required actions by their alias. The first occurrence is preserved.
|
||||
|
||||
version_added: 7.1.0
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ options:
|
||||
description:
|
||||
- An URL of the alternative overlays list that defines the overlay to install.
|
||||
This list will be fetched and saved under C(${overlay_defs}/${name}.xml), where
|
||||
C(overlay_defs) is readed from the Layman's configuration.
|
||||
C(overlay_defs) is read from the Layman's configuration.
|
||||
aliases: [url]
|
||||
type: str
|
||||
state:
|
||||
|
||||
@@ -207,7 +207,7 @@ class LdapAttrs(LdapGeneric):
|
||||
self.ordered = self.module.params['ordered']
|
||||
|
||||
def _order_values(self, values):
|
||||
""" Preprend X-ORDERED index numbers to attribute's values. """
|
||||
""" Prepend X-ORDERED index numbers to attribute's values. """
|
||||
ordered_values = []
|
||||
|
||||
if isinstance(values, list):
|
||||
|
||||
@@ -213,7 +213,7 @@ class LdapEntry(LdapGeneric):
|
||||
self.connection.delete_s(self.dn)
|
||||
|
||||
def _delete_recursive():
|
||||
""" Attempt recurive deletion using the subtree-delete control.
|
||||
""" Attempt recursive deletion using the subtree-delete control.
|
||||
If that fails, do it manually. """
|
||||
try:
|
||||
subtree_delete = ldap.controls.ValueLessRequestControl('1.2.840.113556.1.4.805')
|
||||
|
||||
@@ -200,7 +200,7 @@ from ansible.module_utils.basic import AnsibleModule
|
||||
def split_pid_name(pid_name):
|
||||
"""
|
||||
Split the entry PID/Program name into the PID (int) and the name (str)
|
||||
:param pid_name: PID/Program String seperated with a dash. E.g 51/sshd: returns pid = 51 and name = sshd
|
||||
:param pid_name: PID/Program String separated with a dash. E.g 51/sshd: returns pid = 51 and name = sshd
|
||||
:return: PID (int) and the program name (str)
|
||||
"""
|
||||
try:
|
||||
|
||||
@@ -480,7 +480,7 @@ def main():
|
||||
module.fail_json(msg="Failed to remove volume group %s" % (vg), rc=rc, err=err)
|
||||
else:
|
||||
module.fail_json(msg="Refuse to remove non-empty volume group %s without force=true" % (vg))
|
||||
# activate/inactivate existing VG
|
||||
# activate/deactivate existing VG
|
||||
elif state == 'active':
|
||||
changed = activate_vg(module=module, vg=vg, active=True)
|
||||
elif state == 'inactive':
|
||||
|
||||
@@ -1277,7 +1277,7 @@ class LxcContainerManagement(object):
|
||||
"""
|
||||
|
||||
vg = self._get_lxc_vg()
|
||||
free_space, messurement = self._get_vg_free_pe(vg_name=vg)
|
||||
free_space, measurement = self._get_vg_free_pe(vg_name=vg)
|
||||
|
||||
if free_space < float(snapshot_size_gb):
|
||||
message = (
|
||||
|
||||
@@ -420,7 +420,7 @@ class LXDProfileManagement(object):
|
||||
Rebuild the Profile by the configuration provided in the play.
|
||||
Existing configurations are discarded.
|
||||
|
||||
This ist the default behavior.
|
||||
This is the default behavior.
|
||||
|
||||
Args:
|
||||
dict(config): Dict with the old config in 'metadata' and new config in 'config'
|
||||
|
||||
@@ -382,7 +382,7 @@ def main():
|
||||
part = MIMEText(body + "\n\n", _subtype=subtype, _charset=charset)
|
||||
msg.attach(part)
|
||||
|
||||
# NOTE: Backware compatibility with old syntax using space as delimiter is not retained
|
||||
# NOTE: Backward compatibility with old syntax using space as delimiter is not retained
|
||||
# This breaks files with spaces in it :-(
|
||||
for filename in attach_files:
|
||||
try:
|
||||
|
||||
@@ -169,7 +169,7 @@ records:
|
||||
sample: fancy-hostname
|
||||
type:
|
||||
description: the record type
|
||||
returned: succcess
|
||||
returned: success
|
||||
type: str
|
||||
sample: A
|
||||
value:
|
||||
|
||||
@@ -169,7 +169,7 @@ options:
|
||||
version_added: 2.0.0
|
||||
routing_rules4:
|
||||
description:
|
||||
- Is the same as in an C(ip route add) command, except always requires specifying a priority.
|
||||
- Is the same as in an C(ip rule add) command, except always requires specifying a priority.
|
||||
type: list
|
||||
elements: str
|
||||
version_added: 3.3.0
|
||||
@@ -1489,6 +1489,22 @@ EXAMPLES = r'''
|
||||
vlandev: eth0
|
||||
vlanid: 5
|
||||
state: present
|
||||
|
||||
## Defining ip rules while setting a static IP
|
||||
## table 'production' is set with id 200 in this example.
|
||||
- name: Set Static ips for interface with ip rules and routes
|
||||
community.general.nmcli:
|
||||
type: ethernet
|
||||
conn_name: 'eth0'
|
||||
ip4: '192.168.1.50'
|
||||
gw4: '192.168.1.1'
|
||||
state: present
|
||||
routes4_extended:
|
||||
- ip: "0.0.0.0/0"
|
||||
next_hop: "192.168.1.1"
|
||||
table: "production"
|
||||
routing_rules4:
|
||||
- "priority 0 from 192.168.1.50 table 200"
|
||||
'''
|
||||
|
||||
RETURN = r"""#
|
||||
@@ -1743,7 +1759,7 @@ class Nmcli(object):
|
||||
'bridge.priority': self.priority,
|
||||
'bridge.stp': self.stp,
|
||||
})
|
||||
# priority make sense when stp enabed, otherwise nmcli keeps bridge-priority to 32768 regrdless of input.
|
||||
# priority make sense when stp enabled, otherwise nmcli keeps bridge-priority to 32768 regrdless of input.
|
||||
# force ignoring to save idempotency
|
||||
if self.stp:
|
||||
options.update({'bridge.priority': self.priority})
|
||||
|
||||
@@ -47,7 +47,7 @@ options:
|
||||
type: str
|
||||
template_name:
|
||||
description:
|
||||
- Name of VM template to use to create a new instace
|
||||
- Name of VM template to use to create a new instance
|
||||
type: str
|
||||
template_id:
|
||||
description:
|
||||
@@ -195,12 +195,12 @@ options:
|
||||
version_added: '0.2.0'
|
||||
datastore_id:
|
||||
description:
|
||||
- Name of Datastore to use to create a new instace
|
||||
- Name of Datastore to use to create a new instance
|
||||
version_added: '0.2.0'
|
||||
type: int
|
||||
datastore_name:
|
||||
description:
|
||||
- Name of Datastore to use to create a new instace
|
||||
- Name of Datastore to use to create a new instance
|
||||
version_added: '0.2.0'
|
||||
type: str
|
||||
updateconf:
|
||||
@@ -1390,7 +1390,7 @@ def check_name_attribute(module, attributes):
|
||||
if attributes.get("NAME"):
|
||||
import re
|
||||
if re.match(r'^[^#]+#*$', attributes.get("NAME")) is None:
|
||||
module.fail_json(msg="Ilegal 'NAME' attribute: '" + attributes.get("NAME") +
|
||||
module.fail_json(msg="Illegal 'NAME' attribute: '" + attributes.get("NAME") +
|
||||
"' .Signs '#' are allowed only at the end of the name and the name cannot contain only '#'.")
|
||||
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ EXAMPLES = '''
|
||||
delegate_to: localhost
|
||||
register: result
|
||||
|
||||
- name: Print fetched information about paginated, filtered ans sorted list of Enclosures
|
||||
- name: Print fetched information about paginated, filtered and sorted list of Enclosures
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ result.enclosures }}"
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ description:
|
||||
author: "Pascal HERAUD (@pascalheraud)"
|
||||
notes:
|
||||
- Uses the python OVH Api U(https://github.com/ovh/python-ovh).
|
||||
You have to create an application (a key and secret) with a consummer
|
||||
You have to create an application (a key and secret) with a consumer
|
||||
key as described into U(https://docs.ovh.com/gb/en/customer/first-steps-with-ovh-api/)
|
||||
requirements:
|
||||
- ovh >= 0.4.8
|
||||
|
||||
@@ -16,7 +16,7 @@ author: Francois Lallart (@fraff)
|
||||
version_added: '0.2.0'
|
||||
short_description: Manage OVH monthly billing
|
||||
description:
|
||||
- Enable monthly billing on OVH cloud intances (be aware OVH does not allow to disable it).
|
||||
- Enable monthly billing on OVH cloud instances (be aware OVH does not allow to disable it).
|
||||
requirements: [ "ovh" ]
|
||||
extends_documentation_fragment:
|
||||
- community.general.attributes
|
||||
|
||||
@@ -127,7 +127,7 @@ options:
|
||||
link_text:
|
||||
type: str
|
||||
description:
|
||||
- A short decription of the link_url.
|
||||
- A short description of the link_url.
|
||||
required: false
|
||||
version_added: 7.4.0
|
||||
source:
|
||||
|
||||
@@ -42,7 +42,7 @@ options:
|
||||
required: true
|
||||
align:
|
||||
description:
|
||||
- Set alignment for newly created partitions. Use V(undefined) for parted default aligment.
|
||||
- Set alignment for newly created partitions. Use V(undefined) for parted default alignment.
|
||||
type: str
|
||||
choices: [ cylinder, minimal, none, optimal, undefined ]
|
||||
default: optimal
|
||||
|
||||
@@ -48,7 +48,7 @@ options:
|
||||
description:
|
||||
- List of regular expressions that can be used to detect prompts during pear package installation to answer the expected question.
|
||||
- Prompts will be processed in the same order as the packages list.
|
||||
- You can optionnally specify an answer to any question in the list.
|
||||
- You can optionally specify an answer to any question in the list.
|
||||
- If no answer is provided, the list item will only contain the regular expression.
|
||||
- "To specify an answer, the item will be a dict with the regular expression as key and the answer as value C(my_regular_expression: 'an_answer')."
|
||||
- You can provide a list containing items with or without answer.
|
||||
@@ -87,7 +87,7 @@ EXAMPLES = r'''
|
||||
- name: Install multiple pear/pecl packages at once with prompts.
|
||||
Prompts will be processed on the same order as the packages order.
|
||||
If there is more prompts than packages, packages without prompts will be installed without any prompt expected.
|
||||
If there is more packages than prompts, additionnal prompts will be ignored.
|
||||
If there is more packages than prompts, additional prompts will be ignored.
|
||||
community.general.pear:
|
||||
name: pecl/gnupg, pecl/apcu
|
||||
state: present
|
||||
@@ -98,7 +98,7 @@ EXAMPLES = r'''
|
||||
- name: Install multiple pear/pecl packages at once skipping the first prompt.
|
||||
Prompts will be processed on the same order as the packages order.
|
||||
If there is more prompts than packages, packages without prompts will be installed without any prompt expected.
|
||||
If there is more packages than prompts, additionnal prompts will be ignored.
|
||||
If there is more packages than prompts, additional prompts will be ignored.
|
||||
community.general.pear:
|
||||
name: pecl/gnupg, pecl/apcu
|
||||
state: present
|
||||
|
||||
@@ -47,27 +47,27 @@ options:
|
||||
comma-delimited list C([volume=]<volume> [,acl=<1|0>] [,mountoptions=<opt[;opt...]>] [,quota=<1|0>]
|
||||
[,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>])."
|
||||
- See U(https://pve.proxmox.com/wiki/Linux_Container) for a full description.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(3).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(3).
|
||||
type: str
|
||||
cores:
|
||||
description:
|
||||
- Specify number of cores per socket.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(1).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(1).
|
||||
type: int
|
||||
cpus:
|
||||
description:
|
||||
- numbers of allocated cpus for instance
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(1).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(1).
|
||||
type: int
|
||||
memory:
|
||||
description:
|
||||
- memory size in MB for instance
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(512).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(512).
|
||||
type: int
|
||||
swap:
|
||||
description:
|
||||
- swap memory size in MB for instance
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(0).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(0).
|
||||
type: int
|
||||
netif:
|
||||
description:
|
||||
@@ -91,7 +91,7 @@ options:
|
||||
onboot:
|
||||
description:
|
||||
- specifies whether a VM will be started during system bootup
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(false).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(false).
|
||||
type: bool
|
||||
storage:
|
||||
description:
|
||||
@@ -101,7 +101,7 @@ options:
|
||||
cpuunits:
|
||||
description:
|
||||
- CPU weight for a VM
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(1000).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(1000).
|
||||
type: int
|
||||
nameserver:
|
||||
description:
|
||||
|
||||
@@ -30,7 +30,7 @@ options:
|
||||
acpi:
|
||||
description:
|
||||
- Specify if ACPI should be enabled/disabled.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(true).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(true).
|
||||
type: bool
|
||||
agent:
|
||||
description:
|
||||
@@ -42,19 +42,19 @@ options:
|
||||
description:
|
||||
- Pass arbitrary arguments to kvm.
|
||||
- This option is for experts only!
|
||||
- If O(proxmox_default_behavior) is set to V(compatiblity), this option has a default of
|
||||
- If O(proxmox_default_behavior) is set to V(compatibility), this option has a default of
|
||||
V(-serial unix:/var/run/qemu-server/<vmid>.serial,server,nowait).
|
||||
type: str
|
||||
autostart:
|
||||
description:
|
||||
- Specify if the VM should be automatically restarted after crash (currently ignored in PVE API).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(false).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(false).
|
||||
type: bool
|
||||
balloon:
|
||||
description:
|
||||
- Specify the amount of RAM for the VM in MB.
|
||||
- Using zero disables the balloon driver.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(0).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(0).
|
||||
type: int
|
||||
bios:
|
||||
description:
|
||||
@@ -66,7 +66,7 @@ options:
|
||||
- Specify the boot order -> boot on floppy V(a), hard disk V(c), CD-ROM V(d), or network V(n).
|
||||
- For newer versions of Proxmox VE, use a boot order like V(order=scsi0;net0;hostpci0).
|
||||
- You can combine to set order.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(cnd).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(cnd).
|
||||
type: str
|
||||
bootdisk:
|
||||
description:
|
||||
@@ -102,12 +102,12 @@ options:
|
||||
cores:
|
||||
description:
|
||||
- Specify number of cores per socket.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(1).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(1).
|
||||
type: int
|
||||
cpu:
|
||||
description:
|
||||
- Specify emulated CPU type.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(kvm64).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(kvm64).
|
||||
type: str
|
||||
cpulimit:
|
||||
description:
|
||||
@@ -118,7 +118,7 @@ options:
|
||||
description:
|
||||
- Specify CPU weight for a VM.
|
||||
- You can disable fair-scheduler configuration by setting this to 0
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(1000).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(1000).
|
||||
type: int
|
||||
delete:
|
||||
description:
|
||||
@@ -171,7 +171,7 @@ options:
|
||||
description:
|
||||
- Allow to force stop VM.
|
||||
- Can be used with states V(stopped), V(restarted), and V(absent).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(false).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(false).
|
||||
type: bool
|
||||
format:
|
||||
description:
|
||||
@@ -181,7 +181,7 @@ options:
|
||||
- Please refer to the Proxmox VE Administrator Guide, section Proxmox VE Storage (see
|
||||
U(https://pve.proxmox.com/pve-docs/chapter-pvesm.html) for the latest version, tables 3 to 14) to find out format
|
||||
supported by the provided storage backend.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(qcow2).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(qcow2).
|
||||
If O(proxmox_default_behavior) is set to V(no_defaults), not specifying this option is equivalent to setting it to V(unspecified).
|
||||
type: str
|
||||
choices: [ "cloop", "cow", "qcow", "qcow2", "qed", "raw", "vmdk", "unspecified" ]
|
||||
@@ -249,7 +249,7 @@ options:
|
||||
kvm:
|
||||
description:
|
||||
- Enable/disable KVM hardware virtualization.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(true).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(true).
|
||||
type: bool
|
||||
localtime:
|
||||
description:
|
||||
@@ -269,7 +269,7 @@ options:
|
||||
memory:
|
||||
description:
|
||||
- Memory size in MB for instance.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(512).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(512).
|
||||
type: int
|
||||
migrate:
|
||||
description:
|
||||
@@ -332,13 +332,13 @@ options:
|
||||
onboot:
|
||||
description:
|
||||
- Specifies whether a VM will be started during system bootup.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(true).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(true).
|
||||
type: bool
|
||||
ostype:
|
||||
description:
|
||||
- Specifies guest operating system. This is used to enable special optimization/features for specific operating systems.
|
||||
- The l26 is Linux 2.6/3.X Kernel.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(l26).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(l26).
|
||||
type: str
|
||||
choices: ['other', 'wxp', 'w2k', 'w2k3', 'w2k8', 'wvista', 'win7', 'win8', 'win10', 'win11', 'l24', 'l26', 'solaris']
|
||||
parallel:
|
||||
@@ -431,7 +431,7 @@ options:
|
||||
sockets:
|
||||
description:
|
||||
- Sets the number of CPU sockets. (1 - N).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(1).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(1).
|
||||
type: int
|
||||
sshkeys:
|
||||
description:
|
||||
@@ -463,7 +463,7 @@ options:
|
||||
tablet:
|
||||
description:
|
||||
- Enables/disables the USB tablet device.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(false).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(false).
|
||||
type: bool
|
||||
tags:
|
||||
description:
|
||||
@@ -485,7 +485,7 @@ options:
|
||||
template:
|
||||
description:
|
||||
- Enables/disables the template.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(false).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(false).
|
||||
type: bool
|
||||
timeout:
|
||||
description:
|
||||
@@ -526,7 +526,7 @@ options:
|
||||
vga:
|
||||
description:
|
||||
- Select VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use option 'std' or 'vmware'.
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatiblity); then the default is V(std).
|
||||
- This option has no default unless O(proxmox_default_behavior) is set to V(compatibility); then the default is V(std).
|
||||
type: str
|
||||
choices: ['std', 'cirrus', 'vmware', 'qxl', 'serial0', 'serial1', 'serial2', 'serial3', 'qxl2', 'qxl3', 'qxl4']
|
||||
virtio:
|
||||
@@ -949,7 +949,7 @@ class ProxmoxKvmAnsible(ProxmoxAnsible):
|
||||
only_v4 = ['force', 'protection', 'skiplock']
|
||||
only_v6 = ['ciuser', 'cipassword', 'sshkeys', 'ipconfig', 'tags']
|
||||
|
||||
# valide clone parameters
|
||||
# valid clone parameters
|
||||
valid_clone_params = ['format', 'full', 'pool', 'snapname', 'storage', 'target']
|
||||
clone_params = {}
|
||||
# Default args for vm. Note: -args option is for experts only. It allows you to pass arbitrary arguments to kvm.
|
||||
@@ -1011,7 +1011,7 @@ class ProxmoxKvmAnsible(ProxmoxAnsible):
|
||||
# Flatten efidisk0 option to a string so that it's a string which is what Proxmoxer and the API expect
|
||||
if 'efidisk0' in kwargs:
|
||||
efidisk0_str = ''
|
||||
# Regexp to catch underscores in keys name, to replace them after by hypens
|
||||
# Regexp to catch underscores in keys name, to replace them after by hyphens
|
||||
hyphen_re = re.compile(r'_')
|
||||
# If present, the storage definition should be the first argument
|
||||
if 'storage' in kwargs['efidisk0']:
|
||||
|
||||
@@ -192,7 +192,7 @@ class ProxmoxPoolMemberAnsible(ProxmoxAnsible):
|
||||
self.module.exit_json(changed=False, poolid=poolid, member=member,
|
||||
diff=diff, msg="VM {0} is not part of the pool {1}".format(member, poolid))
|
||||
|
||||
all_members_after.remove(member)
|
||||
all_members_after.remove(vmid)
|
||||
|
||||
if not self.module.check_mode:
|
||||
self.proxmox_api.pools(poolid).put(vms=[vmid], delete=1)
|
||||
|
||||
@@ -19,12 +19,12 @@ description:
|
||||
options:
|
||||
storage:
|
||||
description:
|
||||
- Only return informations on a specific storage.
|
||||
- Only return information on a specific storage.
|
||||
aliases: ['name']
|
||||
type: str
|
||||
type:
|
||||
description:
|
||||
- Filter on a specifc storage type.
|
||||
- Filter on a specific storage type.
|
||||
type: str
|
||||
author: Tristan Le Guern (@tleguern)
|
||||
extends_documentation_fragment:
|
||||
|
||||
@@ -26,7 +26,7 @@ notes:
|
||||
C(subscription-manager) itself gets credentials only as arguments of command line
|
||||
parameters, which is I(not) secure, as they can be easily stolen by checking the
|
||||
process listing on the system. Due to limitations of the D-Bus interface of C(rhsm),
|
||||
the module will I(not) use D-Bus for registation when trying either to register
|
||||
the module will I(not) use D-Bus for registration when trying either to register
|
||||
using O(token), or when specifying O(environment), or when the system is old
|
||||
(typically RHEL 6 and older).
|
||||
- In order to register a system, subscription-manager requires either a username and password, or an activationkey and an Organization ID.
|
||||
@@ -572,7 +572,34 @@ class Rhsm(object):
|
||||
|
||||
register_opts = {}
|
||||
if consumer_type:
|
||||
register_opts['consumer_type'] = consumer_type
|
||||
# The option for the consumer type used to be 'type' in versions
|
||||
# of RHEL before 9 & in RHEL 9 before 9.2, and then it changed to
|
||||
# 'consumer_type'; since the Register*() D-Bus functions reject
|
||||
# unknown options, we have to pass the right option depending on
|
||||
# the version -- funky.
|
||||
def supports_option_consumer_type():
|
||||
# subscription-manager in any supported Fedora version
|
||||
# has the new option.
|
||||
if distro_id == 'fedora':
|
||||
return True
|
||||
# Check for RHEL 9 >= 9.2, or RHEL >= 10.
|
||||
if distro_id == 'rhel' and \
|
||||
((distro_version[0] == 9 and distro_version[1] >= 2) or
|
||||
distro_version[0] >= 10):
|
||||
return True
|
||||
# CentOS: since the change was only done in EL 9, then there is
|
||||
# only CentOS Stream for 9, and thus we can assume it has the
|
||||
# latest version of subscription-manager.
|
||||
if distro_id == 'centos' and distro_version[0] >= 9:
|
||||
return True
|
||||
# Unknown or old distro: assume it does not support
|
||||
# the new option.
|
||||
return False
|
||||
|
||||
consumer_type_key = 'type'
|
||||
if supports_option_consumer_type():
|
||||
consumer_type_key = 'consumer_type'
|
||||
register_opts[consumer_type_key] = consumer_type
|
||||
if consumer_name:
|
||||
register_opts['name'] = consumer_name
|
||||
if consumer_id:
|
||||
|
||||
@@ -75,7 +75,7 @@ options:
|
||||
value:
|
||||
description:
|
||||
- A redis config value. When memory size is needed, it is possible
|
||||
to specify it in the usal form of 1KB, 2M, 400MB where the base is 1024.
|
||||
to specify it in the usual form of 1KB, 2M, 400MB where the base is 1024.
|
||||
Units are case insensitive i.e. 1m = 1mb = 1M = 1MB.
|
||||
type: str
|
||||
|
||||
|
||||
@@ -108,11 +108,11 @@ rundeck_response:
|
||||
returned: failed
|
||||
type: str
|
||||
before:
|
||||
description: Dictionary containing ACL policy informations before modification.
|
||||
description: Dictionary containing ACL policy information before modification.
|
||||
returned: success
|
||||
type: dict
|
||||
after:
|
||||
description: Dictionary containing ACL policy informations after modification.
|
||||
description: Dictionary containing ACL policy information after modification.
|
||||
returned: success
|
||||
type: dict
|
||||
'''
|
||||
|
||||
@@ -90,7 +90,7 @@ options:
|
||||
secret_environment_variables:
|
||||
description:
|
||||
- Secret environment variables of the container namespace.
|
||||
- Updating thoses values will not output a C(changed) state in Ansible.
|
||||
- Updating those values will not output a C(changed) state in Ansible.
|
||||
- Injected in container at runtime.
|
||||
type: dict
|
||||
default: {}
|
||||
|
||||
@@ -80,7 +80,7 @@ options:
|
||||
secret_environment_variables:
|
||||
description:
|
||||
- Secret environment variables of the container namespace.
|
||||
- Updating thoses values will not output a C(changed) state in Ansible.
|
||||
- Updating those values will not output a C(changed) state in Ansible.
|
||||
- Injected in containers at runtime.
|
||||
type: dict
|
||||
default: {}
|
||||
|
||||
@@ -34,7 +34,7 @@ options:
|
||||
state:
|
||||
type: str
|
||||
description:
|
||||
- Indicate desired state of the container regitry.
|
||||
- Indicate desired state of the container registry.
|
||||
default: present
|
||||
choices:
|
||||
- present
|
||||
|
||||
@@ -90,7 +90,7 @@ options:
|
||||
secret_environment_variables:
|
||||
description:
|
||||
- Secret environment variables of the function.
|
||||
- Updating thoses values will not output a C(changed) state in Ansible.
|
||||
- Updating those values will not output a C(changed) state in Ansible.
|
||||
- Injected in function at runtime.
|
||||
type: dict
|
||||
default: {}
|
||||
|
||||
@@ -80,7 +80,7 @@ options:
|
||||
secret_environment_variables:
|
||||
description:
|
||||
- Secret environment variables of the function namespace.
|
||||
- Updating thoses values will not output a C(changed) state in Ansible.
|
||||
- Updating those values will not output a C(changed) state in Ansible.
|
||||
- Injected in functions at runtime.
|
||||
type: dict
|
||||
default: {}
|
||||
|
||||
@@ -46,8 +46,8 @@ options:
|
||||
description:
|
||||
- Zone name.
|
||||
- A zone name must be unique name.
|
||||
- A zone name must begin with an alpha-numeric character.
|
||||
- The name can contain alpha-numeric characters, underscores V(_), hyphens V(-), and periods V(.).
|
||||
- A zone name must begin with an alphanumeric character.
|
||||
- The name can contain alphanumeric characters, underscores V(_), hyphens V(-), and periods V(.).
|
||||
- The name cannot be longer than 64 characters.
|
||||
type: str
|
||||
required: true
|
||||
|
||||
@@ -266,14 +266,14 @@ options:
|
||||
|
||||
opsworks:
|
||||
description:
|
||||
- The elastigroup OpsWorks integration configration.;
|
||||
- The elastigroup OpsWorks integration configuration.;
|
||||
Expects the following key -
|
||||
layer_id (String)
|
||||
type: dict
|
||||
|
||||
persistence:
|
||||
description:
|
||||
- The Stateful elastigroup configration.;
|
||||
- The Stateful elastigroup configuration.;
|
||||
Accepts the following keys -
|
||||
should_persist_root_device (Boolean),
|
||||
should_persist_block_devices (Boolean),
|
||||
|
||||
@@ -72,7 +72,7 @@ options:
|
||||
default: present
|
||||
appliance:
|
||||
description:
|
||||
- Applicance to be used in host creation.
|
||||
- Appliance to be used in host creation.
|
||||
- Required if O(state=present) and host does not yet exist.
|
||||
type: str
|
||||
default: backend
|
||||
|
||||
@@ -222,7 +222,7 @@ def main():
|
||||
# OID style names are not supported
|
||||
if not re.match('^[a-zA-Z0-9_]+$', name):
|
||||
module.fail_json(
|
||||
msg="Name may only contain alpha-numeric and underscore characters"
|
||||
msg="Name may only contain alphanumeric and underscore characters"
|
||||
)
|
||||
|
||||
value = module.params.pop('value')
|
||||
|
||||
@@ -53,7 +53,7 @@ options:
|
||||
choices: [ local, UTC ]
|
||||
notes:
|
||||
- On SmartOS the C(sm-set-timezone) utility (part of the smtools package) is required to set the zone timezone
|
||||
- On AIX only Olson/tz database timezones are useable (POSIX is not supported).
|
||||
- On AIX only Olson/tz database timezones are usable (POSIX is not supported).
|
||||
- An OS reboot is also required on AIX for the new timezone setting to take effect.
|
||||
author:
|
||||
- Shinichi TAMURA (@tmshn)
|
||||
@@ -447,7 +447,7 @@ class NosystemdTimezone(Timezone):
|
||||
filename: The name of the file to edit.
|
||||
regexp: The regular expression to search with.
|
||||
value: The line which will be inserted.
|
||||
key: For what key the file is being editted.
|
||||
key: For what key the file is being edited.
|
||||
"""
|
||||
# Read the file
|
||||
try:
|
||||
@@ -725,7 +725,7 @@ class BSDTimezone(Timezone):
|
||||
localtime_file = '/etc/localtime'
|
||||
|
||||
# Strategy 1:
|
||||
# If /etc/localtime does not exist, assum the timezone is UTC.
|
||||
# If /etc/localtime does not exist, assume the timezone is UTC.
|
||||
if not os.path.exists(localtime_file):
|
||||
self.module.warn('Could not read /etc/localtime. Assuming UTC.')
|
||||
return 'UTC'
|
||||
|
||||
@@ -170,7 +170,7 @@ result:
|
||||
description: The list of the denied network names
|
||||
type: list
|
||||
hot_standby:
|
||||
description: Use hot standy
|
||||
description: Use hot standby
|
||||
type: bool
|
||||
path:
|
||||
description: Path name
|
||||
|
||||
@@ -88,7 +88,7 @@ result:
|
||||
description: The list of the denied network names
|
||||
type: list
|
||||
hot_standby:
|
||||
description: Use hot standy
|
||||
description: Use hot standby
|
||||
type: bool
|
||||
path:
|
||||
description: Path name
|
||||
|
||||
@@ -135,7 +135,7 @@ def change_keys(recs, key='uuid', filter_func=None):
|
||||
|
||||
for param_name, param_value in rec.items():
|
||||
# param_value may be of type xmlrpc.client.DateTime,
|
||||
# which is not simply convertable to str.
|
||||
# which is not simply convertible to str.
|
||||
# Use 'value' attr to get the str value,
|
||||
# following an example in xmlrpc.client.DateTime document
|
||||
if hasattr(param_value, "value"):
|
||||
|
||||
@@ -36,12 +36,12 @@ notes:
|
||||
values V(none) and V(dhcp) have same effect. More info here:
|
||||
U(https://www.citrix.com/community/citrix-developer/citrix-hypervisor-developer/citrix-hypervisor-developing-products/citrix-hypervisor-staticip.html)'
|
||||
- 'On platforms without official support for network configuration inside a guest OS, network parameters will be written to xenstore
|
||||
C(vm-data/networks/<vif_device>) key. Parameters can be inspected by using C(xenstore ls) and C(xenstore read) tools on \*nix guests or trough
|
||||
C(vm-data/networks/<vif_device>) key. Parameters can be inspected by using C(xenstore ls) and C(xenstore read) tools on \*nix guests or through
|
||||
WMI interface on Windows guests. They can also be found in VM facts C(instance.xenstore_data) key as returned by the module. It is up to the user
|
||||
to implement a boot time scripts or custom agent that will read the parameters from xenstore and configure network with given parameters.
|
||||
Take note that for xenstore data to become available inside a guest, a VM restart is needed hence module will require VM restart if any
|
||||
parameter is changed. This is a limitation of XenAPI and xenstore. Considering these limitations, network configuration trough xenstore is most
|
||||
useful for bootstraping newly deployed VMs, much less for reconfiguring existing ones. More info here:
|
||||
parameter is changed. This is a limitation of XenAPI and xenstore. Considering these limitations, network configuration through xenstore is most
|
||||
useful for bootstrapping newly deployed VMs, much less for reconfiguring existing ones. More info here:
|
||||
U(https://support.citrix.com/article/CTX226713)'
|
||||
requirements:
|
||||
- python >= 2.6
|
||||
@@ -249,7 +249,7 @@ options:
|
||||
custom_params:
|
||||
description:
|
||||
- Define a list of custom VM params to set on VM.
|
||||
- Useful for advanced users familiar with managing VM params trough xe CLI.
|
||||
- Useful for advanced users familiar with managing VM params through xe CLI.
|
||||
- A custom value object takes two fields O(custom_params[].key) and O(custom_params[].value) (see example below).
|
||||
type: list
|
||||
elements: dict
|
||||
@@ -272,7 +272,7 @@ options:
|
||||
default: false
|
||||
state_change_timeout:
|
||||
description:
|
||||
- 'By default, module will wait indefinitely for VM to accquire an IP address if O(wait_for_ip_address=true).'
|
||||
- 'By default, module will wait indefinitely for VM to acquire an IP address if O(wait_for_ip_address=true).'
|
||||
- If this parameter is set to positive value, the module will instead wait specified number of seconds for the state change.
|
||||
- In case of timeout, module will generate an error message.
|
||||
type: int
|
||||
@@ -990,7 +990,7 @@ class XenServerVM(XenServerObject):
|
||||
vif_device = vm_vif_params['device']
|
||||
|
||||
# A user could have manually changed network
|
||||
# or mac e.g. trough XenCenter and then also
|
||||
# or mac e.g. through XenCenter and then also
|
||||
# make those changes in playbook manually.
|
||||
# In that case, module will not detect any
|
||||
# changes and info in xenstore_data will
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user