ansible/test/units
Ganesh Nalawade 97a34cf008 Add options sub spec validation (#27119)
* Add aggregate parameter validation

aggregate parameter validation will support checking each individual dict
to resolve conditions for aliases, no_log, mutually_exclusive,
required, type check, values, required_together, required_one_of
and required_if conditions in argspec. It will also set default values.

eg:
tasks:
  - name: Configure interface attribute with aggregate
    net_interface:
      aggregate:
        - {name: ge-0/0/1, description: test-interface-1, duplex: full, state: present}
        - {name: ge-0/0/2, description: test-interface-2, active: False}
    register: response
    purge: Yes

Usage:
```
from ansible.module_utils.network_common import AggregateCollection

transform = AggregateCollection(module)
param = transform(module.params.get('aggregate'))
```

Aggregate allows supports for `purge` parameter, it will instruct the module
to remove resources from remote device that hasn’t been explicitly
defined in aggregate. This is not supported by with_* iterators

Also, it improves performace as compared to with_* iterator for network device
that has seperate candidate and running datastore.
For with_* iteration the sequence of operartion is
load-config-1 (candidate db) -> commit (running db) -> load_config-2
(candidate db) -> commit (running db) ...

With aggregate the sequence of operation is
load-config-1 (candidate db) -> load-config-2 (candidate db) -> commit
(running db)

As commit is executed only once per task for aggregate it has
huge perfomance benefit for large configurations.

* Fix CI issues

* Fix review comments

*  Add support for options validation for aliases, no_log,
   mutually_exclusive, required, type check, value check,
   required_together, required_one_of and required_if
   conditions in sub-argspec.
*  Add unit test for options in argspec.
*  Reverted aggregate implementaion.

* Minor change

* Add multi-level argspec support

*  Multi-level argspec support with module's top most
   conditionals options.

* Fix unit test failure

* Add parent context in errors for sub options

* Resolve merge conflict

* Fix CI issue
2017-08-01 09:32:18 -07:00
..
cli Support multiple vault passwords (#22756) 2017-07-28 15:20:58 -04:00
contrib Update vmware_inventory (#26308) 2017-07-18 07:20:23 -04:00
errors test/: PEP8 compliancy (#24803) 2017-05-30 18:05:19 +01:00
executor Remove automatic use of system six 2017-07-25 15:58:23 -07:00
inventory INI inventory plugin: add documentation about variable types (#25798) 2017-07-13 12:04:20 -07:00
inventory_test_data/group_vars Merge branch 'v2_final' into devel_switch_v2 2015-05-28 15:26:03 -05:00
mock Support multiple vault passwords (#22756) 2017-07-28 15:20:58 -04:00
module_utils Add options sub spec validation (#27119) 2017-08-01 09:32:18 -07:00
modules ACI module_utils library for ACI modules (#27070) 2017-07-31 12:44:27 +01:00
parsing Support multiple vault passwords (#22756) 2017-07-28 15:20:58 -04:00
playbook Fix undefined variables, basestring usage, and some associated python3 issues 2017-07-25 15:58:23 -07:00
plugins Disable abstract-class-instantiated for smoketests 2017-07-25 15:58:23 -07:00
template test/: PEP8 compliancy (#24803) 2017-05-30 18:05:19 +01:00
utils test/: PEP8 compliancy (#24803) 2017-05-30 18:05:19 +01:00
vars Fix spelling mistakes (comments only) (#25564) 2017-06-12 07:55:19 +01:00
__init__.py Add empty-init code-smell script. (#18406) 2016-11-07 15:02:13 -08:00
conftest.py Fix bugs in ansible-test units command. (#24044) 2017-04-27 11:21:11 +08:00
test_constants.py 1st part of ansible config, adds ansible-config to view/manage configs (#12797) 2017-06-14 11:08:34 -04:00