summaryrefslogtreecommitdiffstats
path: root/ansible_collections/awx
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-05 16:18:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-05 16:18:34 +0000
commit3667197efb7b18ec842efd504785965911f8ac4b (patch)
tree0b986a4bc6879d080b100666a97cdabbc9ca1f28 /ansible_collections/awx
parentAdding upstream version 9.5.1+dfsg. (diff)
downloadansible-upstream/10.0.0+dfsg.tar.xz
ansible-upstream/10.0.0+dfsg.zip
Adding upstream version 10.0.0+dfsg.upstream/10.0.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/awx')
-rw-r--r--ansible_collections/awx/awx/FILES.json1011
-rw-r--r--ansible_collections/awx/awx/MANIFEST.json4
-rw-r--r--ansible_collections/awx/awx/meta/runtime.yml3
-rw-r--r--ansible_collections/awx/awx/plugins/module_utils/controller_api.py19
-rw-r--r--ansible_collections/awx/awx/plugins/modules/application.py8
-rw-r--r--ansible_collections/awx/awx/plugins/modules/role_definition.py114
-rw-r--r--ansible_collections/awx/awx/plugins/modules/role_team_assignment.py123
-rw-r--r--ansible_collections/awx/awx/plugins/modules/role_user_assignment.py124
-rw-r--r--ansible_collections/awx/awx/plugins/modules/workflow_launch.py22
-rw-r--r--ansible_collections/awx/awx/test/awx/conftest.py17
-rw-r--r--ansible_collections/awx/awx/test/awx/test_notification_template.py2
-rw-r--r--ansible_collections/awx/awx/test/awx/test_role.py4
-rw-r--r--ansible_collections/awx/awx/test/awx/test_role_definition.py122
-rw-r--r--ansible_collections/awx/awx/test/awx/test_role_team_assignment.py70
-rw-r--r--ansible_collections/awx/awx/test/awx/test_role_user_assignment.py70
-rw-r--r--ansible_collections/awx/awx/test/awx/test_workflow_job_template.py33
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml40
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/application/tasks/main.yml1
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/instance/tasks/main.yml22
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/lookup_api_plugin/tasks/main.yml68
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/role_definition/tasks/main.yml30
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/role_team_assignment/tasks/main.yml62
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/role_user_assignment/tasks/main.yml63
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/schedule_rrule/tasks/main.yml20
-rw-r--r--ansible_collections/awx/awx/tests/integration/targets/settings/tasks/main.yml40
25 files changed, 1529 insertions, 563 deletions
diff --git a/ansible_collections/awx/awx/FILES.json b/ansible_collections/awx/awx/FILES.json
index 9fba1d572..c006332f0 100644
--- a/ansible_collections/awx/awx/FILES.json
+++ b/ansible_collections/awx/awx/FILES.json
@@ -8,31 +8,59 @@
"format": 1
},
{
- "name": "README.md",
+ "name": "COPYING",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "41997bded547ba6a168ee41fd5379a44f20dcd155979067564b79d14af6e3fd3",
+ "chksum_sha256": "7c50cd9b85e2b7eebaea2b5618b402862b01d5a66befff8e41401ef3f14e471a",
"format": 1
},
{
- "name": "meta",
+ "name": "TESTING.md",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4691e79c8038d8e985610fb613cd2f4799d4740b0a6ca1b72d3266528088a272",
+ "format": 1
+ },
+ {
+ "name": "bindep.txt",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7205dda85d2cd5501b3344e9f18e4acd09583056aab5e8a05554ba29a3b8fad8",
+ "format": 1
+ },
+ {
+ "name": "images",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "meta/runtime.yml",
+ "name": "images/completeness_test_output.png",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6c63b75e8e4c9b744914c111d3ff8b54f0e973b78ce444815acfb4aa254a9ad6",
+ "chksum_sha256": "6367684c4b5edd3e1e8fdcb9270d68ca54040d5d17108734f3d3a2b9df5878ba",
"format": 1
},
{
- "name": "bindep.txt",
+ "name": "requirements.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7205dda85d2cd5501b3344e9f18e4acd09583056aab5e8a05554ba29a3b8fad8",
+ "chksum_sha256": "2eb11923e1347afc5075a7871e206a8f15a68471c90012f7386e9db0875e70bf",
+ "format": 1
+ },
+ {
+ "name": "meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "meta/runtime.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3bf2312f22f63103185491d64c013cc23cb829f9600b8e6876c98a16e7d4a0c1",
"format": 1
},
{
@@ -50,10 +78,10 @@
"format": 1
},
{
- "name": "plugins/doc_fragments/auth_plugin.py",
+ "name": "plugins/doc_fragments/auth_legacy.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f1c61a9880edca852582f58c635c32264b0d1b3218ebdeb9db9d23081267c070",
+ "chksum_sha256": "c2f10b81ecb89088c7c295430d4a71de26e3700b26e8344cdc7950908a738fd3",
"format": 1
},
{
@@ -64,10 +92,10 @@
"format": 1
},
{
- "name": "plugins/doc_fragments/auth_legacy.py",
+ "name": "plugins/doc_fragments/auth_plugin.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c2f10b81ecb89088c7c295430d4a71de26e3700b26e8344cdc7950908a738fd3",
+ "chksum_sha256": "f1c61a9880edca852582f58c635c32264b0d1b3218ebdeb9db9d23081267c070",
"format": 1
},
{
@@ -85,59 +113,73 @@
"format": 1
},
{
- "name": "plugins/modules",
+ "name": "plugins/lookup",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/job_cancel.py",
+ "name": "plugins/lookup/controller_api.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d64f698909919b05c9c47a65f24c861c3cabe33c039944f6120d49a2ac7d40da",
+ "chksum_sha256": "5e79f19c9dee4fa0c3a88126a630fa6163249c332d73a44370f64836e22d4b27",
"format": 1
},
{
- "name": "plugins/modules/ad_hoc_command_cancel.py",
+ "name": "plugins/lookup/schedule_rrule.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3338e10af9ccd0e4178b8e1ec1e7064b00ab90e64665f846a2123f10d9d151f4",
+ "chksum_sha256": "c3ec7b8f134eca3a9f04156213b584792fc4e3397e3b9f82b5044e9ec662c7a2",
"format": 1
},
{
- "name": "plugins/modules/workflow_approval.py",
+ "name": "plugins/lookup/schedule_rruleset.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "533e52fc20ca99e935154f5ba3ec30c2055f42d1c51c3bc2cf1570af7f951c33",
+ "chksum_sha256": "0141249f5cbe0651f96d3ba0a627a4d7e7376bd0e5b2b29e63ef44f9c243feb3",
"format": 1
},
{
- "name": "plugins/modules/job_list.py",
+ "name": "plugins/module_utils",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/awxkit.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2ea8024bfc9612c005745a13a508c40d320b4c204bf18fcd495f72789d9adb40",
+ "chksum_sha256": "8b2398e4e7893f203b26f6c85d510cc4c41a79c53e1937710807233e62e35f58",
"format": 1
},
{
- "name": "plugins/modules/bulk_host_delete.py",
+ "name": "plugins/module_utils/controller_api.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "546fb1eb2104db87c1d608144590e38d361af2ba734caa62fc61586e49a124ad",
+ "chksum_sha256": "a5b5a041efc42a832ebef422bac6283da1e846a7d6f3d8dcdcd5ad797de50747",
"format": 1
},
{
- "name": "plugins/modules/inventory_source_update.py",
+ "name": "plugins/modules",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e0b79d76d7d9f817f709a8dacbcb2a105a214c33e63449decaec65adebac6d74",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/modules/workflow_launch.py",
+ "name": "plugins/modules/ad_hoc_command_wait.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3aff0ecdf76b65df3e17f7c8a34eddae8a1bc4d35c304619f7c2054927584d35",
+ "chksum_sha256": "67bc716ec04dfc77cb751cda6013ee54fa0cd3ed3afabc5ba0d146cc9712c996",
"format": 1
},
{
@@ -148,129 +190,150 @@
"format": 1
},
{
- "name": "plugins/modules/credential.py",
+ "name": "plugins/modules/import.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e6d52d95b7e59a41b5d3715c3b55857c1b70baf7a0e8e44e9cc66db67b87685f",
+ "chksum_sha256": "a7a03186251ef644ba03c49e7e23a799f8046abddb9ea20fff68dd09fe759680",
"format": 1
},
{
- "name": "plugins/modules/team.py",
+ "name": "plugins/modules/job_cancel.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e53a544c12fc2de705bce163e3babf6d95fae6d088f1415a61debeb07d60f991",
+ "chksum_sha256": "d64f698909919b05c9c47a65f24c861c3cabe33c039944f6120d49a2ac7d40da",
"format": 1
},
{
- "name": "plugins/modules/host.py",
+ "name": "plugins/modules/job_list.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b973c5f3790dc0c084e97a6f6b0c87209632f1ff348bc36466cc13392e774c79",
+ "chksum_sha256": "2ea8024bfc9612c005745a13a508c40d320b4c204bf18fcd495f72789d9adb40",
"format": 1
},
{
- "name": "plugins/modules/job_launch.py",
+ "name": "plugins/modules/job_wait.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c26e876232d5658537b9d041879f93e024e52c901551b5e6ad89354d6023d71",
+ "chksum_sha256": "7e7459abf351f6c172401eec4ba579dc8566f8a55fd022cc8eec9fa5a3399067",
"format": 1
},
{
- "name": "plugins/modules/credential_input_source.py",
+ "name": "plugins/modules/workflow_node_wait.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "78ce109c0cc51aa8d66f0146ac9f448559b186cc2b155ee2a8ed96cebe65909d",
+ "chksum_sha256": "5b19778b005fbaa3e0a3abc645a6d6452bc0ad52e89fe04141d051f6ddafbb73",
"format": 1
},
{
- "name": "plugins/modules/instance_group.py",
+ "name": "plugins/modules/ad_hoc_command_cancel.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "14c7f97d44a266a9d73d8ef1fc85f8c15ecbab611ff8133026ef943e211ba7c2",
+ "chksum_sha256": "3338e10af9ccd0e4178b8e1ec1e7064b00ab90e64665f846a2123f10d9d151f4",
"format": 1
},
{
- "name": "plugins/modules/inventory_source.py",
+ "name": "plugins/modules/subscriptions.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "279efe4103630b4961baeb468c43f9d75c657c0beb36ece73982d31080931403",
+ "chksum_sha256": "f497ab9ada8f89650422bf85deef386e32b774dfff9e1de07b387fba32d890a8",
"format": 1
},
{
- "name": "plugins/modules/application.py",
+ "name": "plugins/modules/workflow_approval.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e1b39c7cd3d608245b7d419547d6582fca5143bf8f72ff39fa89cb67d4ee8ac0",
+ "chksum_sha256": "533e52fc20ca99e935154f5ba3ec30c2055f42d1c51c3bc2cf1570af7f951c33",
"format": 1
},
{
- "name": "plugins/modules/role.py",
+ "name": "plugins/modules/bulk_host_create.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "31aebaae562881a3a9ecea61f5d26747559cbed69dcf45fbe21d9a65412ea56c",
+ "chksum_sha256": "9398fec791845d1ddb304cd344d308127f89ce6ed5a8341f2c6047b4e2d22ed4",
"format": 1
},
{
- "name": "plugins/modules/token.py",
+ "name": "plugins/modules/bulk_job_launch.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cc35a007403827d4994793d9bb4a5d573d9b532c605feee6d97b119037ead203",
+ "chksum_sha256": "f19617e62f57b0a81fb9ebbf209583fbd9c74d3e2b85ca0102b2fd1b2bd77b81",
"format": 1
},
{
- "name": "plugins/modules/export.py",
+ "name": "plugins/modules/credential_input_source.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b62aa153c8a819461f3bcbd27a4de731e477dffc4d05def8829687901b71aec9",
+ "chksum_sha256": "78ce109c0cc51aa8d66f0146ac9f448559b186cc2b155ee2a8ed96cebe65909d",
"format": 1
},
{
- "name": "plugins/modules/import.py",
+ "name": "plugins/modules/credential_type.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a7a03186251ef644ba03c49e7e23a799f8046abddb9ea20fff68dd09fe759680",
+ "chksum_sha256": "1867c68c3b43c0f27a8e87dcbb66b22fdfc1cd659cc1747a6686573f6a7d6be9",
"format": 1
},
{
- "name": "plugins/modules/credential_type.py",
+ "name": "plugins/modules/group.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1867c68c3b43c0f27a8e87dcbb66b22fdfc1cd659cc1747a6686573f6a7d6be9",
+ "chksum_sha256": "7dc98af3cbdfc5ea0cf4cffe0c86c846837dfebe15c16939ed863b730cb05578",
"format": 1
},
{
- "name": "plugins/modules/workflow_job_template_node.py",
+ "name": "plugins/modules/host.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "023e170fb1db59ec4d4acecee21befc2aa03199110368d4bd0682ad4adf84092",
+ "chksum_sha256": "b973c5f3790dc0c084e97a6f6b0c87209632f1ff348bc36466cc13392e774c79",
"format": 1
},
{
- "name": "plugins/modules/job_wait.py",
+ "name": "plugins/modules/instance_group.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7e7459abf351f6c172401eec4ba579dc8566f8a55fd022cc8eec9fa5a3399067",
+ "chksum_sha256": "14c7f97d44a266a9d73d8ef1fc85f8c15ecbab611ff8133026ef943e211ba7c2",
"format": 1
},
{
- "name": "plugins/modules/execution_environment.py",
+ "name": "plugins/modules/inventory.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e00a63a1ddccfef4ad20725799ba67dbdfd8b9c720d9f04a92f05683bf7dc4e1",
+ "chksum_sha256": "1a430ae0b6371f884c14a9022552846f5174100ef02601a6ece649cb45a9e7e9",
"format": 1
},
{
- "name": "plugins/modules/instance.py",
+ "name": "plugins/modules/inventory_source.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fb4467c11809837fee04ed77ddcf154414070a0b0458742e8d6dcb3be045a9f3",
+ "chksum_sha256": "279efe4103630b4961baeb468c43f9d75c657c0beb36ece73982d31080931403",
"format": 1
},
{
- "name": "plugins/modules/organization.py",
+ "name": "plugins/modules/inventory_source_update.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0c46808d096cba86747d9e9d69da660d44341c885fb966e4ffad8499b7d8d055",
+ "chksum_sha256": "e0b79d76d7d9f817f709a8dacbcb2a105a214c33e63449decaec65adebac6d74",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/job_launch.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1c26e876232d5658537b9d041879f93e024e52c901551b5e6ad89354d6023d71",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/job_template.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "77a9774f8baae9a417aa3f7170f4866307ea3e7f29fbe93a00df98f33e8c99b0",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/label.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f3bde75b41fd4c92037f759ae00e9ebd76f27c91ab54857f167715db1930b0a8",
"format": 1
},
{
@@ -281,80 +344,80 @@
"format": 1
},
{
- "name": "plugins/modules/group.py",
+ "name": "plugins/modules/notification_template.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7dc98af3cbdfc5ea0cf4cffe0c86c846837dfebe15c16939ed863b730cb05578",
+ "chksum_sha256": "638dbb75383b11b1227b2120424ee4f9f37861747c9aa5fca6df0665fe97fc86",
"format": 1
},
{
- "name": "plugins/modules/subscriptions.py",
+ "name": "plugins/modules/organization.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f497ab9ada8f89650422bf85deef386e32b774dfff9e1de07b387fba32d890a8",
+ "chksum_sha256": "0c46808d096cba86747d9e9d69da660d44341c885fb966e4ffad8499b7d8d055",
"format": 1
},
{
- "name": "plugins/modules/workflow_node_wait.py",
+ "name": "plugins/modules/project.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5b19778b005fbaa3e0a3abc645a6d6452bc0ad52e89fe04141d051f6ddafbb73",
+ "chksum_sha256": "d65ade1efc240c94eadc37d984cfec8094c655ed4d162243d170e947bad4b425",
"format": 1
},
{
- "name": "plugins/modules/label.py",
+ "name": "plugins/modules/project_update.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f3bde75b41fd4c92037f759ae00e9ebd76f27c91ab54857f167715db1930b0a8",
+ "chksum_sha256": "952bedbca07dba7de277849b45eb258f51420ed8e814fa35acd47dc5e5f8f82f",
"format": 1
},
{
- "name": "plugins/modules/workflow_job_template.py",
+ "name": "plugins/modules/role.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "18fa1ae60ba7c409cd3baf67215ebf3b8d680e10a1402ca66f362166ab668cb4",
+ "chksum_sha256": "31aebaae562881a3a9ecea61f5d26747559cbed69dcf45fbe21d9a65412ea56c",
"format": 1
},
{
- "name": "plugins/modules/bulk_host_create.py",
+ "name": "plugins/modules/schedule.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9398fec791845d1ddb304cd344d308127f89ce6ed5a8341f2c6047b4e2d22ed4",
+ "chksum_sha256": "517c76a73dae1fadc7c47c0c8544ae00c6f88daff7a3e72c67aa9501265177ac",
"format": 1
},
{
- "name": "plugins/modules/project.py",
+ "name": "plugins/modules/team.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d65ade1efc240c94eadc37d984cfec8094c655ed4d162243d170e947bad4b425",
+ "chksum_sha256": "e53a544c12fc2de705bce163e3babf6d95fae6d088f1415a61debeb07d60f991",
"format": 1
},
{
- "name": "plugins/modules/__init__.py",
+ "name": "plugins/modules/token.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "cc35a007403827d4994793d9bb4a5d573d9b532c605feee6d97b119037ead203",
"format": 1
},
{
- "name": "plugins/modules/settings.py",
+ "name": "plugins/modules/user.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c62170baca6d9ecf0be7a68d148daa75569e87a6ddffb92a39f3bc4ea08e9e0a",
+ "chksum_sha256": "cd3cc005d12434b3cac4238b3dfc0d2976f53f0c2e8c0dafc02953ad1393e377",
"format": 1
},
{
- "name": "plugins/modules/project_update.py",
+ "name": "plugins/modules/workflow_job_template.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "952bedbca07dba7de277849b45eb258f51420ed8e814fa35acd47dc5e5f8f82f",
+ "chksum_sha256": "18fa1ae60ba7c409cd3baf67215ebf3b8d680e10a1402ca66f362166ab668cb4",
"format": 1
},
{
- "name": "plugins/modules/ad_hoc_command_wait.py",
+ "name": "plugins/modules/workflow_job_template_node.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "67bc716ec04dfc77cb751cda6013ee54fa0cd3ed3afabc5ba0d146cc9712c996",
+ "chksum_sha256": "023e170fb1db59ec4d4acecee21befc2aa03199110368d4bd0682ad4adf84092",
"format": 1
},
{
@@ -365,388 +428,423 @@
"format": 1
},
{
- "name": "plugins/modules/schedule.py",
+ "name": "plugins/modules/execution_environment.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "517c76a73dae1fadc7c47c0c8544ae00c6f88daff7a3e72c67aa9501265177ac",
+ "chksum_sha256": "e00a63a1ddccfef4ad20725799ba67dbdfd8b9c720d9f04a92f05683bf7dc4e1",
"format": 1
},
{
- "name": "plugins/modules/inventory.py",
+ "name": "plugins/modules/export.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1a430ae0b6371f884c14a9022552846f5174100ef02601a6ece649cb45a9e7e9",
+ "chksum_sha256": "b62aa153c8a819461f3bcbd27a4de731e477dffc4d05def8829687901b71aec9",
"format": 1
},
{
- "name": "plugins/modules/user.py",
+ "name": "plugins/modules/settings.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cd3cc005d12434b3cac4238b3dfc0d2976f53f0c2e8c0dafc02953ad1393e377",
+ "chksum_sha256": "c62170baca6d9ecf0be7a68d148daa75569e87a6ddffb92a39f3bc4ea08e9e0a",
"format": 1
},
{
- "name": "plugins/modules/notification_template.py",
+ "name": "plugins/modules/application.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "638dbb75383b11b1227b2120424ee4f9f37861747c9aa5fca6df0665fe97fc86",
+ "chksum_sha256": "b79e9f80c4ef79fbacd134d4239f6eae08971838c3a57b79143e57a08bd836d9",
"format": 1
},
{
- "name": "plugins/modules/job_template.py",
+ "name": "plugins/modules/bulk_host_delete.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "77a9774f8baae9a417aa3f7170f4866307ea3e7f29fbe93a00df98f33e8c99b0",
+ "chksum_sha256": "546fb1eb2104db87c1d608144590e38d361af2ba734caa62fc61586e49a124ad",
"format": 1
},
{
- "name": "plugins/modules/bulk_job_launch.py",
+ "name": "plugins/modules/credential.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f19617e62f57b0a81fb9ebbf209583fbd9c74d3e2b85ca0102b2fd1b2bd77b81",
+ "chksum_sha256": "e6d52d95b7e59a41b5d3715c3b55857c1b70baf7a0e8e44e9cc66db67b87685f",
"format": 1
},
{
- "name": "plugins/module_utils",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/instance.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fb4467c11809837fee04ed77ddcf154414070a0b0458742e8d6dcb3be045a9f3",
"format": 1
},
{
- "name": "plugins/module_utils/awxkit.py",
+ "name": "plugins/modules/role_definition.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8b2398e4e7893f203b26f6c85d510cc4c41a79c53e1937710807233e62e35f58",
+ "chksum_sha256": "e8a1eada7ef01e9cb72c38a45c42334960cac6fc5bfce1304103a332f8e99537",
"format": 1
},
{
- "name": "plugins/module_utils/controller_api.py",
+ "name": "plugins/modules/role_team_assignment.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "424dfd5dbc14adedb59d26cfa67bbc46e1c5197859c473c9cdb288bb2ef26db9",
+ "chksum_sha256": "a0c07c5132ab9f02701357d5ec0e0bb2ee2d75c36aded59edf8fb422aa868aa1",
"format": 1
},
{
- "name": "plugins/lookup",
+ "name": "plugins/modules/role_user_assignment.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "06a4bf55937ea3b80cb2b418a8f6d858b861cd8391e4f7fe5e6765ff7eb0ab9b",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/workflow_launch.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "da79dfcb79b50f7c4f998723734d3931a0749dee0fbe59bf62463dc7909d496c",
+ "format": 1
+ },
+ {
+ "name": "test",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/lookup/controller_api.py",
+ "name": "test/awx",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "test/awx/test_ad_hoc_wait.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e79f19c9dee4fa0c3a88126a630fa6163249c332d73a44370f64836e22d4b27",
+ "chksum_sha256": "daed2a74d3f64fd0300255050dc8c732158db401323f44da66ccb4bf84b59633",
"format": 1
},
{
- "name": "plugins/lookup/schedule_rruleset.py",
+ "name": "test/awx/test_application.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0141249f5cbe0651f96d3ba0a627a4d7e7376bd0e5b2b29e63ef44f9c243feb3",
+ "chksum_sha256": "a106d5fbffbe1eaec36d8247979ca637ee733a29abf94d955c48be8d2fd16842",
"format": 1
},
{
- "name": "plugins/lookup/schedule_rrule.py",
+ "name": "test/awx/test_credential_input_source.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c3ec7b8f134eca3a9f04156213b584792fc4e3397e3b9f82b5044e9ec662c7a2",
+ "chksum_sha256": "9637a418c0b0e59261ec0d1c206ff2d3574a41a8a169068bbf74588e3a4214b2",
"format": 1
},
{
- "name": "COPYING",
+ "name": "test/awx/test_credential_type.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7c50cd9b85e2b7eebaea2b5618b402862b01d5a66befff8e41401ef3f14e471a",
+ "chksum_sha256": "1fe388a0c19f08006c7718766d5faa79540dd3b14547ced43b5a237a2c2fd877",
"format": 1
},
{
- "name": "tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_group.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1ecf188e82d4c848de64c8f7fd7af2d4adb6887c6a448771ff51bb43c4fa8128",
"format": 1
},
{
- "name": "tests/config.yml",
+ "name": "test/awx/test_instance_group.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4cb8bf065737689916cda6a2856fcfb8bc27f49224a4b2c2fde842e3b0e76fbb",
+ "chksum_sha256": "9ce22bf5e6baa63ab096c9377478f8a3af33624def33e52753342e435924e573",
"format": 1
},
{
- "name": "tests/sanity",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_inventory.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "70eac0cf78806e37406137fcfb97e5a249fd6b091b1f18e812278573049a4111",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.15.txt",
+ "name": "test/awx/test_job.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f6dce33e05558d94ecc8ebacc8a5011e9defc1b197fcc13c4335868b6d6c4952",
+ "chksum_sha256": "76ba45e14438425f7511d196613928d64253e1912a45b71ea842b1cb2c3ca335",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.14.txt",
+ "name": "test/awx/test_label.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "05b621f6ff40c091ab1c07947c43d817ed37af7acfc0f8bef7b1453eb03b3aa7",
+ "chksum_sha256": "cd957d0b0cab6dd51539baf3fb27b659b91a8e57b20aae4c5cce7eaec9cec494",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.16.txt",
+ "name": "test/awx/test_settings.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f6dce33e05558d94ecc8ebacc8a5011e9defc1b197fcc13c4335868b6d6c4952",
+ "chksum_sha256": "436c13933936e7b80dd26c61ea1dbf492c13974f2922f1543c4fe6e6b0fab0dd",
"format": 1
},
{
- "name": "tests/integration",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_team.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "cbbdbdb3be0b0d80dcfcf337ed0095774cf73ef0e937d3e8dc5abab21739db5d",
"format": 1
},
{
- "name": "tests/integration/targets",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_token.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "118145cdd5f6a03df7a7a608d5f9e510236b2a54f9bcd456f4294ba69f0f4fad",
"format": 1
},
{
- "name": "tests/integration/targets/job_list",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_user.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f9520b058e16e4e4800d3a5f70cd28650a365fa357afa1d41a8c63bf3354027e",
"format": 1
},
{
- "name": "tests/integration/targets/job_list/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_workflow_job_template_node.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0806356bfd91b28153baa63ca8cbf8f7da1125dd5150e38e73aa37c65e236f6b",
"format": 1
},
{
- "name": "tests/integration/targets/job_list/tasks/main.yml",
+ "name": "test/awx/test_inventory_source.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "668f25abe2486218893b6137f5b765301229f649ed3a779a6756496c14f42595",
+ "chksum_sha256": "a14f69db1bf6cec594e64c2963b415560b78eac1f9cbe7d4c09586b494e11bde",
"format": 1
},
{
- "name": "tests/integration/targets/credential_type",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_module_utils.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a5118e383f1370175dc7900ec3abae2ee53bd77ecf8853ca333ffcbf625b216f",
"format": 1
},
{
- "name": "tests/integration/targets/credential_type/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_project.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fbb93e524df51b788f12746ffb52bf5105f67b3ae6b89403bed51ed1f2da9c12",
"format": 1
},
{
- "name": "tests/integration/targets/credential_type/tasks/main.yml",
+ "name": "test/awx/test_schedule.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6d5026a4ca77513f73aa620ea14b74e0248c0dde7b5d75b318970154d7f4bf56",
+ "chksum_sha256": "dadfd1c19c4c828dd84128ca484b837c6a904a09e92bcee12cb7cda408562c81",
"format": 1
},
{
- "name": "tests/integration/targets/job_wait",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_credential.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c1bfcf99f4de13b3cc4a76c7f33fa3a51fde175afff5730b4743695cbeb69643",
"format": 1
},
{
- "name": "tests/integration/targets/job_wait/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_job_template.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2f0e924d79cd0b2bccbe4664e27ec07cb96a274d289229d80be09687f099171e",
"format": 1
},
{
- "name": "tests/integration/targets/job_wait/tasks/main.yml",
+ "name": "test/awx/test_organization.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "76cf3f8c1cfac81eaaf0f5b76494fc3b7605a15eeb73f6fc83efbbe28a4073b3",
+ "chksum_sha256": "091d48906e4bf5ffaceead8f49281e05184cefce1546f387ce29a232d6694ec9",
"format": 1
},
{
- "name": "tests/integration/targets/workflow_approval",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_notification_template.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f40d5b65fbc78d12570f37799c8e240cfb90d9948421d3db82af6427fd14854f",
"format": 1
},
{
- "name": "tests/integration/targets/workflow_approval/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/conftest.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9627cca4a40d87832000ec2335ab68888394f6f3bc1d04358147ec6971a69ea2",
"format": 1
},
{
- "name": "tests/integration/targets/workflow_approval/tasks/main.yml",
+ "name": "test/awx/test_bulk.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2ccc6f9f0aafef620896c56a32e1dd07f2f83f61c6b8c4d4bbaa6a220495b91d",
+ "chksum_sha256": "a10cc6ca47f1cd560e5adff57f88b4628b6ff3ec20874a751ae57d7474cfb7d5",
"format": 1
},
{
- "name": "tests/integration/targets/application",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_completeness.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "56bc8d4297a9c7c4fdb712fd838803cc9233023288f5555f3e3d229117604eee",
"format": 1
},
{
- "name": "tests/integration/targets/application/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_export.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c24a35265af8ff90f6456d39d0cc84cc9ce765d9fc3d45a4a8ac945e2538ff6b",
"format": 1
},
{
- "name": "tests/integration/targets/application/tasks/main.yml",
+ "name": "test/awx/test_instance.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "42675b283f15715cccd1bba3f3d6be8d9d84e1bcf7c1e06e33a281ab4eb5c64f",
+ "chksum_sha256": "2b60fecf79c63341b0eece0d9941a655dfeac89b3565e78f5bb39c5ec77b91af",
"format": 1
},
{
- "name": "tests/integration/targets/instance_group",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_role.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9d4aec4ecb6a4429c08125de3c7b1161db794a2ed32cebd9e593d14fd90375d4",
"format": 1
},
{
- "name": "tests/integration/targets/instance_group/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "test/awx/test_role_definition.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "da3d110330ea7f35d99701fb748e71ada4bc458b6c5f66be5a317c433e3976ea",
"format": 1
},
{
- "name": "tests/integration/targets/instance_group/tasks/main.yml",
+ "name": "test/awx/test_role_team_assignment.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5d38320dd4563f17fffd12b510a91dd26e40bfd5f408f75f96b930a38fcfd135",
+ "chksum_sha256": "f3ac9236893e4737e6eb32b3a3d217d13d520de63ecd6050debdf157a968ec7a",
"format": 1
},
{
- "name": "tests/integration/targets/settings",
+ "name": "test/awx/test_role_user_assignment.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "62e76a504873f12b631f99a7275a6673e98964258f0775606860a28d7e3efc73",
+ "format": 1
+ },
+ {
+ "name": "test/awx/test_workflow_job_template.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9e23b2e1055900a86dc2fb42165ca567936b319b69d3000c36434df28c6ae007",
+ "format": 1
+ },
+ {
+ "name": "tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/settings/tasks",
+ "name": "tests/integration",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/settings/tasks/main.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "93262aa7be1aec73bcd5e36b1fadd663bed21eab8863f797dd17f20de80db7ba",
+ "name": "tests/integration/targets",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/project",
+ "name": "tests/integration/targets/ad_hoc_command",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/project/tasks",
+ "name": "tests/integration/targets/ad_hoc_command/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/project/tasks/main.yml",
+ "name": "tests/integration/targets/ad_hoc_command/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c2f8af4ca361cc63c465d7b0895ef2ad7a3741f36e30133b5c33696ba2cf7474",
+ "chksum_sha256": "87ec6c33a66b6dd969c6ed08693a02a51fc43c21b3980a81a5edd29d644050aa",
"format": 1
},
{
- "name": "tests/integration/targets/inventory_source",
+ "name": "tests/integration/targets/ad_hoc_command_cancel",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/inventory_source/tasks",
+ "name": "tests/integration/targets/ad_hoc_command_cancel/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/inventory_source/tasks/main.yml",
+ "name": "tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7e581c4634196ff64cee14278c55b2292534605006e5a20edadcfe17e778caa9",
+ "chksum_sha256": "655ba448d6b451adbb4006c964c3ca21c7303787b3c336bd946752122bdb8d94",
"format": 1
},
{
- "name": "tests/integration/targets/group",
+ "name": "tests/integration/targets/ad_hoc_command_wait",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/group/tasks",
+ "name": "tests/integration/targets/ad_hoc_command_wait/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/group/tasks/main.yml",
+ "name": "tests/integration/targets/ad_hoc_command_wait/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fe499cf6b248289df031a4d32328dbe45184f4fe7d92423522b1705715010904",
+ "chksum_sha256": "1e5ced853c1d15d2db163bd5dbb56b1ca419363327dc32bd6a1448560e194c2f",
"format": 1
},
{
- "name": "tests/integration/targets/demo_data",
+ "name": "tests/integration/targets/application",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/demo_data/tasks",
+ "name": "tests/integration/targets/application/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/demo_data/tasks/main.yml",
+ "name": "tests/integration/targets/application/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "619e28fefe26c4854b15b8c739693b1da85f69b1cf9792c84f40db544dda5f8b",
+ "chksum_sha256": "f71a6ffe7df8f995600cd7e2ea3e0de9db733fe71b20be4a55da3f7b966937af",
"format": 1
},
{
@@ -771,374 +869,374 @@
"format": 1
},
{
- "name": "tests/integration/targets/schedule",
+ "name": "tests/integration/targets/credential_input_source",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/schedule/tasks",
+ "name": "tests/integration/targets/credential_input_source/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/schedule/tasks/main.yml",
+ "name": "tests/integration/targets/credential_input_source/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7419baf00681606be0a250140ace5f7d07804f8b650ecb5f0937147064e307f0",
+ "chksum_sha256": "83dae6f438515cce80bf4b25d24d472de42feafe46b9f8faacaa7cdf18c1eb16",
"format": 1
},
{
- "name": "tests/integration/targets/organization",
+ "name": "tests/integration/targets/credential_type",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/organization/tasks",
+ "name": "tests/integration/targets/credential_type/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/organization/tasks/main.yml",
+ "name": "tests/integration/targets/credential_type/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6e18cbff8118f617a9b594f630739356922030c2d802a0eb92df0ddbe4f1e1fe",
+ "chksum_sha256": "6d5026a4ca77513f73aa620ea14b74e0248c0dde7b5d75b318970154d7f4bf56",
"format": 1
},
{
- "name": "tests/integration/targets/inventory_source_update",
+ "name": "tests/integration/targets/demo_data",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/inventory_source_update/tasks",
+ "name": "tests/integration/targets/demo_data/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/inventory_source_update/tasks/main.yml",
+ "name": "tests/integration/targets/demo_data/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "06a737371470d7a996e2eb092d820fe536dac73f3abcec56acf002da62fe05d9",
+ "chksum_sha256": "619e28fefe26c4854b15b8c739693b1da85f69b1cf9792c84f40db544dda5f8b",
"format": 1
},
{
- "name": "tests/integration/targets/lookup_api_plugin",
+ "name": "tests/integration/targets/execution_environment",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/lookup_api_plugin/tasks",
+ "name": "tests/integration/targets/execution_environment/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/lookup_api_plugin/tasks/main.yml",
+ "name": "tests/integration/targets/execution_environment/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d2206729f900ec7f71e77edf782eff6e68160ccb0124fb2bf22f0f371abb9271",
+ "chksum_sha256": "950122a04ad3b7406fa9a140e02ab190a0f7f53dfec791fdcb1fb2781ebae54d",
"format": 1
},
{
- "name": "tests/integration/targets/import",
+ "name": "tests/integration/targets/export",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/import/aliases",
+ "name": "tests/integration/targets/export/aliases",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "52e1315ef042495cdf2b0ce22d8ba47f726dce15b968e301a795be1f69045f20",
"format": 1
},
{
- "name": "tests/integration/targets/import/tasks",
+ "name": "tests/integration/targets/export/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/import/tasks/main.yml",
+ "name": "tests/integration/targets/export/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "59c0ace95e680d9874fe15c76889c1b4beb38d2d3c66a11499581b0f328ec25a",
+ "chksum_sha256": "e66e796b995b7c9ae612e00b393ccd75d9747d2d94ea3fbbaf90832e5b3e9e3f",
"format": 1
},
{
- "name": "tests/integration/targets/job_cancel",
+ "name": "tests/integration/targets/group",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/job_cancel/tasks",
+ "name": "tests/integration/targets/group/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/job_cancel/tasks/main.yml",
+ "name": "tests/integration/targets/group/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0c8b9d511b1ce96b7d5a359b1043ffc18004c5d3c23052b82423512b46ecd7b4",
+ "chksum_sha256": "fe499cf6b248289df031a4d32328dbe45184f4fe7d92423522b1705715010904",
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command",
+ "name": "tests/integration/targets/host",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command/tasks",
+ "name": "tests/integration/targets/host/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command/tasks/main.yml",
+ "name": "tests/integration/targets/host/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "87ec6c33a66b6dd969c6ed08693a02a51fc43c21b3980a81a5edd29d644050aa",
+ "chksum_sha256": "bc0849abd5d11fe3fa3039ed0ae93d4e812d915e66c47488f91cc4309b2d7d77",
"format": 1
},
{
- "name": "tests/integration/targets/inventory",
+ "name": "tests/integration/targets/import",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/inventory/tasks",
+ "name": "tests/integration/targets/import/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "52e1315ef042495cdf2b0ce22d8ba47f726dce15b968e301a795be1f69045f20",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/import/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/inventory/tasks/main.yml",
+ "name": "tests/integration/targets/import/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "21f6d6fa5e76c8578949fd204edef4cdb77b5bff310b681bcd75ac1873a67f18",
+ "chksum_sha256": "59c0ace95e680d9874fe15c76889c1b4beb38d2d3c66a11499581b0f328ec25a",
"format": 1
},
{
- "name": "tests/integration/targets/role",
+ "name": "tests/integration/targets/instance_group",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/role/tasks",
+ "name": "tests/integration/targets/instance_group/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/role/tasks/main.yml",
+ "name": "tests/integration/targets/instance_group/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "24e699037b51baceceb9f18e1e43464608766127f5eeb4df1fed5991a35aea7f",
+ "chksum_sha256": "5d38320dd4563f17fffd12b510a91dd26e40bfd5f408f75f96b930a38fcfd135",
"format": 1
},
{
- "name": "tests/integration/targets/execution_environment",
+ "name": "tests/integration/targets/inventory",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/execution_environment/tasks",
+ "name": "tests/integration/targets/inventory/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/execution_environment/tasks/main.yml",
+ "name": "tests/integration/targets/inventory/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "950122a04ad3b7406fa9a140e02ab190a0f7f53dfec791fdcb1fb2781ebae54d",
+ "chksum_sha256": "21f6d6fa5e76c8578949fd204edef4cdb77b5bff310b681bcd75ac1873a67f18",
"format": 1
},
{
- "name": "tests/integration/targets/lookup_rruleset",
+ "name": "tests/integration/targets/inventory_source",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/lookup_rruleset/tasks",
+ "name": "tests/integration/targets/inventory_source/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/lookup_rruleset/tasks/main.yml",
+ "name": "tests/integration/targets/inventory_source/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "30edd075f50be0fbf9c57c9d7db10ae7086749d78817e8a24b680301ba339cb5",
+ "chksum_sha256": "7e581c4634196ff64cee14278c55b2292534605006e5a20edadcfe17e778caa9",
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command_wait",
+ "name": "tests/integration/targets/inventory_source_update",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command_wait/tasks",
+ "name": "tests/integration/targets/inventory_source_update/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command_wait/tasks/main.yml",
+ "name": "tests/integration/targets/inventory_source_update/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1e5ced853c1d15d2db163bd5dbb56b1ca419363327dc32bd6a1448560e194c2f",
+ "chksum_sha256": "06a737371470d7a996e2eb092d820fe536dac73f3abcec56acf002da62fe05d9",
"format": 1
},
{
- "name": "tests/integration/targets/job_template",
+ "name": "tests/integration/targets/job_cancel",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/job_template/tasks",
+ "name": "tests/integration/targets/job_cancel/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/job_template/tasks/main.yml",
+ "name": "tests/integration/targets/job_cancel/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b1232f2cc28b0ff4ff742c2c5847a649d3d9fcc716d3611a938b277088a0e30b",
+ "chksum_sha256": "0c8b9d511b1ce96b7d5a359b1043ffc18004c5d3c23052b82423512b46ecd7b4",
"format": 1
},
{
- "name": "tests/integration/targets/token",
+ "name": "tests/integration/targets/job_launch",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/token/tasks",
+ "name": "tests/integration/targets/job_launch/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/token/tasks/main.yml",
+ "name": "tests/integration/targets/job_launch/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e7245f5039915d720baba505b4ab74421c7db138bb45b50917942f3eb05799af",
+ "chksum_sha256": "fbb658e8212fcb120200db84212f6b469fff700c1fd233b486ec82a816572323",
"format": 1
},
{
- "name": "tests/integration/targets/export",
+ "name": "tests/integration/targets/job_list",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/export/aliases",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "52e1315ef042495cdf2b0ce22d8ba47f726dce15b968e301a795be1f69045f20",
- "format": 1
- },
- {
- "name": "tests/integration/targets/export/tasks",
+ "name": "tests/integration/targets/job_list/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/export/tasks/main.yml",
+ "name": "tests/integration/targets/job_list/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e66e796b995b7c9ae612e00b393ccd75d9747d2d94ea3fbbaf90832e5b3e9e3f",
+ "chksum_sha256": "668f25abe2486218893b6137f5b765301229f649ed3a779a6756496c14f42595",
"format": 1
},
{
- "name": "tests/integration/targets/host",
+ "name": "tests/integration/targets/job_template",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/host/tasks",
+ "name": "tests/integration/targets/job_template/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/host/tasks/main.yml",
+ "name": "tests/integration/targets/job_template/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bc0849abd5d11fe3fa3039ed0ae93d4e812d915e66c47488f91cc4309b2d7d77",
+ "chksum_sha256": "b1232f2cc28b0ff4ff742c2c5847a649d3d9fcc716d3611a938b277088a0e30b",
"format": 1
},
{
- "name": "tests/integration/targets/schedule_rrule",
+ "name": "tests/integration/targets/job_wait",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/schedule_rrule/tasks",
+ "name": "tests/integration/targets/job_wait/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/schedule_rrule/tasks/main.yml",
+ "name": "tests/integration/targets/job_wait/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c8732015804e039989986f1ebfc82da8d426c7d8ab21a7602b101ed16d4c33e8",
+ "chksum_sha256": "76cf3f8c1cfac81eaaf0f5b76494fc3b7605a15eeb73f6fc83efbbe28a4073b3",
"format": 1
},
{
@@ -1163,283 +1261,297 @@
"format": 1
},
{
- "name": "tests/integration/targets/credential_input_source",
+ "name": "tests/integration/targets/lookup_api_plugin",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/credential_input_source/tasks",
+ "name": "tests/integration/targets/lookup_api_plugin/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/credential_input_source/tasks/main.yml",
+ "name": "tests/integration/targets/lookup_api_plugin/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "83dae6f438515cce80bf4b25d24d472de42feafe46b9f8faacaa7cdf18c1eb16",
+ "chksum_sha256": "48c0f03d42f73933cc99e584057db0ca9720c280d4fe8a414795ee1f30da68a1",
"format": 1
},
{
- "name": "tests/integration/targets/project_update",
+ "name": "tests/integration/targets/lookup_rruleset",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/project_update/tasks",
+ "name": "tests/integration/targets/lookup_rruleset/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/project_update/tasks/main.yml",
+ "name": "tests/integration/targets/lookup_rruleset/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6fd0d5b30de4d13f2d2e5fb7497c0fbbc13fa92a31fc43d4a21b19d3f53249ce",
+ "chksum_sha256": "30edd075f50be0fbf9c57c9d7db10ae7086749d78817e8a24b680301ba339cb5",
"format": 1
},
{
- "name": "tests/integration/targets/module_utils",
+ "name": "tests/integration/targets/notification_template",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/module_utils/tasks",
+ "name": "tests/integration/targets/notification_template/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/module_utils/tasks/test_named_reference.yml",
+ "name": "tests/integration/targets/notification_template/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e1babbc9e57e06629675f6d2b0d4fe891880b177a572d355391753e670c5156",
+ "chksum_sha256": "9d4d3cef57b6e950d9af710bb519050823ef67fd6aa1c6b60c6f2fc33387dc67",
"format": 1
},
{
- "name": "tests/integration/targets/module_utils/tasks/main.yml",
+ "name": "tests/integration/targets/organization",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/organization/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/organization/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2fb7f33e9695e68ec87d2b9bc52ad2196c2d542bccb7d5b185ebc8e54a8cc237",
+ "chksum_sha256": "6e18cbff8118f617a9b594f630739356922030c2d802a0eb92df0ddbe4f1e1fe",
"format": 1
},
{
- "name": "tests/integration/targets/user",
+ "name": "tests/integration/targets/project",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user/tasks",
+ "name": "tests/integration/targets/project/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user/tasks/main.yml",
+ "name": "tests/integration/targets/project/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "76733e6cbaba31ccf3510bea4ec1166c93195d5ef385035bb773fba854db3659",
+ "chksum_sha256": "c2f8af4ca361cc63c465d7b0895ef2ad7a3741f36e30133b5c33696ba2cf7474",
"format": 1
},
{
- "name": "tests/integration/targets/notification_template",
+ "name": "tests/integration/targets/project_update",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/notification_template/tasks",
+ "name": "tests/integration/targets/project_update/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/notification_template/tasks/main.yml",
+ "name": "tests/integration/targets/project_update/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9d4d3cef57b6e950d9af710bb519050823ef67fd6aa1c6b60c6f2fc33387dc67",
+ "chksum_sha256": "6fd0d5b30de4d13f2d2e5fb7497c0fbbc13fa92a31fc43d4a21b19d3f53249ce",
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command_cancel",
+ "name": "tests/integration/targets/role",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command_cancel/tasks",
+ "name": "tests/integration/targets/role/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml",
+ "name": "tests/integration/targets/role/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1d276bf3b4ada55707a1e8a00284ab15a5c8f9a6bbe0a49f7d03160cda21d3c1",
+ "chksum_sha256": "24e699037b51baceceb9f18e1e43464608766127f5eeb4df1fed5991a35aea7f",
"format": 1
},
{
- "name": "tests/integration/targets/instance",
+ "name": "tests/integration/targets/schedule",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks",
+ "name": "tests/integration/targets/schedule/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/main.yml",
+ "name": "tests/integration/targets/schedule/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ccd821e64446cc63715163fa16014f10e76c66d58be119bfe1dc1a3b11637c97",
+ "chksum_sha256": "7419baf00681606be0a250140ace5f7d07804f8b650ecb5f0937147064e307f0",
"format": 1
},
{
- "name": "tests/integration/targets/team",
+ "name": "tests/integration/targets/schedule_rrule",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/team/tasks",
+ "name": "tests/integration/targets/schedule_rrule/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/team/tasks/main.yml",
+ "name": "tests/integration/targets/schedule_rrule/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f59433918d9495fd5a3b296a0a70963f539571e742e3c790e5d88912eec8e2ef",
+ "chksum_sha256": "d17ccb32f5b43b887164df4a328a6e70ab222a295b916ac5f46770543f8d4019",
"format": 1
},
{
- "name": "tests/integration/targets/workflow_job_template",
+ "name": "tests/integration/targets/settings",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/workflow_job_template/tasks",
+ "name": "tests/integration/targets/settings/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/workflow_job_template/tasks/main.yml",
+ "name": "tests/integration/targets/settings/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "872f3cd4d0d7656ddf7f9239c1139351af6341e5e40e0ac2981ed152fff26a5b",
+ "chksum_sha256": "f781f919fb476162d13503c6a6aa952b46fd61fc60b38988f161d0025bbbd900",
"format": 1
},
{
- "name": "tests/integration/targets/job_launch",
+ "name": "tests/integration/targets/team",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/job_launch/tasks",
+ "name": "tests/integration/targets/team/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/job_launch/tasks/main.yml",
+ "name": "tests/integration/targets/team/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fbb658e8212fcb120200db84212f6b469fff700c1fd233b486ec82a816572323",
+ "chksum_sha256": "f59433918d9495fd5a3b296a0a70963f539571e742e3c790e5d88912eec8e2ef",
"format": 1
},
{
- "name": "tests/integration/targets/bulk_host_delete",
+ "name": "tests/integration/targets/token",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/bulk_host_delete/tasks",
+ "name": "tests/integration/targets/token/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/bulk_host_delete/tasks/main.yml",
+ "name": "tests/integration/targets/token/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2a55e10b05593a8ad6f5e2325c3d51f76b5ef040a81990dc3c7a4adaeebcf545",
+ "chksum_sha256": "e7245f5039915d720baba505b4ab74421c7db138bb45b50917942f3eb05799af",
"format": 1
},
{
- "name": "tests/integration/targets/bulk_host_create",
+ "name": "tests/integration/targets/user",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/bulk_host_create/tasks",
+ "name": "tests/integration/targets/user/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/bulk_host_create/tasks/main.yml",
+ "name": "tests/integration/targets/user/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "39be6c097c03152ec1873732d8e09e34639464acad4f9d42ef3e13b6f87d47d1",
+ "chksum_sha256": "76733e6cbaba31ccf3510bea4ec1166c93195d5ef385035bb773fba854db3659",
"format": 1
},
{
- "name": "tests/integration/targets/bulk_job_launch",
+ "name": "tests/integration/targets/workflow_job_template",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/bulk_job_launch/tasks",
+ "name": "tests/integration/targets/workflow_job_template/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/bulk_job_launch/tasks/main.yml",
+ "name": "tests/integration/targets/workflow_job_template/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bbb7480d55d9d2261e22d0c55de3a0bada691608a6542385b234633f0493be75",
+ "chksum_sha256": "872f3cd4d0d7656ddf7f9239c1139351af6341e5e40e0ac2981ed152fff26a5b",
"format": 1
},
{
@@ -1464,248 +1576,241 @@
"format": 1
},
{
- "name": "requirements.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "2eb11923e1347afc5075a7871e206a8f15a68471c90012f7386e9db0875e70bf",
+ "name": "tests/integration/targets/instance",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "images",
+ "name": "tests/integration/targets/instance/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "images/completeness_test_output.png",
+ "name": "tests/integration/targets/instance/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6367684c4b5edd3e1e8fdcb9270d68ca54040d5d17108734f3d3a2b9df5878ba",
+ "chksum_sha256": "dfa2174eba47b8edb3a65912224adc7d5e9fd9d180d0da5db2e05dab7f3520a5",
"format": 1
},
{
- "name": "test",
+ "name": "tests/integration/targets/workflow_approval",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx",
+ "name": "tests/integration/targets/workflow_approval/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_ad_hoc_wait.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "daed2a74d3f64fd0300255050dc8c732158db401323f44da66ccb4bf84b59633",
- "format": 1
- },
- {
- "name": "test/awx/test_notification_template.py",
+ "name": "tests/integration/targets/workflow_approval/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3e9aee01e9d7d3c3662b6204422d907b78323440ebdc836b69f933336ec36b0f",
+ "chksum_sha256": "2ccc6f9f0aafef620896c56a32e1dd07f2f83f61c6b8c4d4bbaa6a220495b91d",
"format": 1
},
{
- "name": "test/awx/test_label.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "cd957d0b0cab6dd51539baf3fb27b659b91a8e57b20aae4c5cce7eaec9cec494",
+ "name": "tests/integration/targets/bulk_host_create",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_export.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c24a35265af8ff90f6456d39d0cc84cc9ce765d9fc3d45a4a8ac945e2538ff6b",
+ "name": "tests/integration/targets/bulk_host_create/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_module_utils.py",
+ "name": "tests/integration/targets/bulk_host_create/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a5118e383f1370175dc7900ec3abae2ee53bd77ecf8853ca333ffcbf625b216f",
+ "chksum_sha256": "39be6c097c03152ec1873732d8e09e34639464acad4f9d42ef3e13b6f87d47d1",
"format": 1
},
{
- "name": "test/awx/test_completeness.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "56bc8d4297a9c7c4fdb712fd838803cc9233023288f5555f3e3d229117604eee",
+ "name": "tests/integration/targets/bulk_job_launch",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_user.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "f9520b058e16e4e4800d3a5f70cd28650a365fa357afa1d41a8c63bf3354027e",
+ "name": "tests/integration/targets/bulk_job_launch/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_inventory_source.py",
+ "name": "tests/integration/targets/bulk_job_launch/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a14f69db1bf6cec594e64c2963b415560b78eac1f9cbe7d4c09586b494e11bde",
+ "chksum_sha256": "bbb7480d55d9d2261e22d0c55de3a0bada691608a6542385b234633f0493be75",
"format": 1
},
{
- "name": "test/awx/test_group.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "1ecf188e82d4c848de64c8f7fd7af2d4adb6887c6a448771ff51bb43c4fa8128",
+ "name": "tests/integration/targets/module_utils",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_project.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "fbb93e524df51b788f12746ffb52bf5105f67b3ae6b89403bed51ed1f2da9c12",
+ "name": "tests/integration/targets/module_utils/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_job.py",
+ "name": "tests/integration/targets/module_utils/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "76ba45e14438425f7511d196613928d64253e1912a45b71ea842b1cb2c3ca335",
+ "chksum_sha256": "2fb7f33e9695e68ec87d2b9bc52ad2196c2d542bccb7d5b185ebc8e54a8cc237",
"format": 1
},
{
- "name": "test/awx/test_job_template.py",
+ "name": "tests/integration/targets/module_utils/tasks/test_named_reference.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2f0e924d79cd0b2bccbe4664e27ec07cb96a274d289229d80be09687f099171e",
+ "chksum_sha256": "0e1babbc9e57e06629675f6d2b0d4fe891880b177a572d355391753e670c5156",
"format": 1
},
{
- "name": "test/awx/test_bulk.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "a10cc6ca47f1cd560e5adff57f88b4628b6ff3ec20874a751ae57d7474cfb7d5",
+ "name": "tests/integration/targets/bulk_host_delete",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_role.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "8f0340f77fd1465cf6e267b301e44ae86c5238b05aa89bd7fff145726a83ebb4",
+ "name": "tests/integration/targets/bulk_host_delete/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_token.py",
+ "name": "tests/integration/targets/bulk_host_delete/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "118145cdd5f6a03df7a7a608d5f9e510236b2a54f9bcd456f4294ba69f0f4fad",
+ "chksum_sha256": "2a55e10b05593a8ad6f5e2325c3d51f76b5ef040a81990dc3c7a4adaeebcf545",
"format": 1
},
{
- "name": "test/awx/test_workflow_job_template_node.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "0806356bfd91b28153baa63ca8cbf8f7da1125dd5150e38e73aa37c65e236f6b",
+ "name": "tests/integration/targets/role_definition",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_instance.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "2b60fecf79c63341b0eece0d9941a655dfeac89b3565e78f5bb39c5ec77b91af",
+ "name": "tests/integration/targets/role_definition/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_credential.py",
+ "name": "tests/integration/targets/role_definition/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c1bfcf99f4de13b3cc4a76c7f33fa3a51fde175afff5730b4743695cbeb69643",
+ "chksum_sha256": "53d19702349573c129db2e53baf99602bb846787490aab19e2f8f29c892f5735",
"format": 1
},
{
- "name": "test/awx/test_credential_type.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "1fe388a0c19f08006c7718766d5faa79540dd3b14547ced43b5a237a2c2fd877",
+ "name": "tests/integration/targets/role_team_assignment",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_credential_input_source.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "9637a418c0b0e59261ec0d1c206ff2d3574a41a8a169068bbf74588e3a4214b2",
+ "name": "tests/integration/targets/role_team_assignment/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_instance_group.py",
+ "name": "tests/integration/targets/role_team_assignment/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9ce22bf5e6baa63ab096c9377478f8a3af33624def33e52753342e435924e573",
+ "chksum_sha256": "f5fd6177577695507040f8a0654b0a0fbb2198f3c880788db054d6a4a13ecdcf",
"format": 1
},
{
- "name": "test/awx/test_organization.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "091d48906e4bf5ffaceead8f49281e05184cefce1546f387ce29a232d6694ec9",
+ "name": "tests/integration/targets/role_user_assignment",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_workflow_job_template.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "16c8ebc74606940f6ee1f51a191f22b497c176a46e770e886bbf94bdf0c25842",
+ "name": "tests/integration/targets/role_user_assignment/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/conftest.py",
+ "name": "tests/integration/targets/role_user_assignment/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8eb2d805f88e99f1c63aeb256ef1ac720831191d17a81b5b3bb2f9c06b29544e",
+ "chksum_sha256": "288362d519c2a8b9fbf83be627abb4b3d3eb9f7cb89a65cbdabd2039fdcab988",
"format": 1
},
{
- "name": "test/awx/test_settings.py",
+ "name": "tests/config.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "436c13933936e7b80dd26c61ea1dbf492c13974f2922f1543c4fe6e6b0fab0dd",
+ "chksum_sha256": "4cb8bf065737689916cda6a2856fcfb8bc27f49224a4b2c2fde842e3b0e76fbb",
"format": 1
},
{
- "name": "test/awx/test_team.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "cbbdbdb3be0b0d80dcfcf337ed0095774cf73ef0e937d3e8dc5abab21739db5d",
+ "name": "tests/sanity",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "test/awx/test_application.py",
+ "name": "tests/sanity/ignore-2.14.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a106d5fbffbe1eaec36d8247979ca637ee733a29abf94d955c48be8d2fd16842",
+ "chksum_sha256": "05b621f6ff40c091ab1c07947c43d817ed37af7acfc0f8bef7b1453eb03b3aa7",
"format": 1
},
{
- "name": "test/awx/test_schedule.py",
+ "name": "tests/sanity/ignore-2.15.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dadfd1c19c4c828dd84128ca484b837c6a904a09e92bcee12cb7cda408562c81",
+ "chksum_sha256": "f6dce33e05558d94ecc8ebacc8a5011e9defc1b197fcc13c4335868b6d6c4952",
"format": 1
},
{
- "name": "test/awx/test_inventory.py",
+ "name": "tests/sanity/ignore-2.16.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "70eac0cf78806e37406137fcfb97e5a249fd6b091b1f18e812278573049a4111",
+ "chksum_sha256": "f6dce33e05558d94ecc8ebacc8a5011e9defc1b197fcc13c4335868b6d6c4952",
"format": 1
},
{
- "name": "TESTING.md",
+ "name": "README.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4691e79c8038d8e985610fb613cd2f4799d4740b0a6ca1b72d3266528088a272",
+ "chksum_sha256": "41997bded547ba6a168ee41fd5379a44f20dcd155979067564b79d14af6e3fd3",
"format": 1
}
],
diff --git a/ansible_collections/awx/awx/MANIFEST.json b/ansible_collections/awx/awx/MANIFEST.json
index 9480679a6..4c999edb6 100644
--- a/ansible_collections/awx/awx/MANIFEST.json
+++ b/ansible_collections/awx/awx/MANIFEST.json
@@ -2,7 +2,7 @@
"collection_info": {
"namespace": "awx",
"name": "awx",
- "version": "23.9.0",
+ "version": "24.3.1",
"authors": [
"AWX Project Contributors <awx-project@googlegroups.com>"
],
@@ -29,7 +29,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b47d01dc90de9b4af46e366ac75ac9d533d4abfcc93a81b6956b098d2989f587",
+ "chksum_sha256": "c65f7b80630613726dd21cd3d4a41265ca38ec6b254150d0f7c59be171fc27ee",
"format": 1
},
"format": 1
diff --git a/ansible_collections/awx/awx/meta/runtime.yml b/ansible_collections/awx/awx/meta/runtime.yml
index 18fa4b592..7ffdbce16 100644
--- a/ansible_collections/awx/awx/meta/runtime.yml
+++ b/ansible_collections/awx/awx/meta/runtime.yml
@@ -35,6 +35,9 @@ action_groups:
- project
- project_update
- role
+ - role_definition
+ - role_team_assignment
+ - role_user_assignment
- schedule
- settings
- subscriptions
diff --git a/ansible_collections/awx/awx/plugins/module_utils/controller_api.py b/ansible_collections/awx/awx/plugins/module_utils/controller_api.py
index 8bc3955ce..0f48fc2df 100644
--- a/ansible_collections/awx/awx/plugins/module_utils/controller_api.py
+++ b/ansible_collections/awx/awx/plugins/module_utils/controller_api.py
@@ -291,7 +291,7 @@ class ControllerModule(AnsibleModule):
class ControllerAPIModule(ControllerModule):
# TODO: Move the collection version check into controller_module.py
# This gets set by the make process so whatever is in here is irrelevant
- _COLLECTION_VERSION = "23.9.0"
+ _COLLECTION_VERSION = "0.0.1-devel"
_COLLECTION_TYPE = "awx"
# This maps the collections type (awx/tower) to the values returned by the API
# Those values can be found in awx/api/generics.py line 204
@@ -652,7 +652,7 @@ class ControllerAPIModule(ControllerModule):
# If we have neither of these, then we can try un-authenticated access
self.authenticated = True
- def delete_if_needed(self, existing_item, on_delete=None, auto_exit=True):
+ def delete_if_needed(self, existing_item, item_type=None, on_delete=None, auto_exit=True):
# This will exit from the module on its own.
# If the method successfully deletes an item and on_delete param is defined,
# the on_delete parameter will be called as a method pasing in this object and the json from the response
@@ -664,8 +664,9 @@ class ControllerAPIModule(ControllerModule):
# If we have an item, we can try to delete it
try:
item_url = existing_item['url']
- item_type = existing_item['type']
item_id = existing_item['id']
+ if not item_type:
+ item_type = existing_item['type']
item_name = self.get_item_name(existing_item, allow_unknown=True)
except KeyError as ke:
self.fail_json(msg="Unable to process delete of item due to missing data {0}".format(ke))
@@ -907,7 +908,7 @@ class ControllerAPIModule(ControllerModule):
return True
return False
- def update_if_needed(self, existing_item, new_item, on_update=None, auto_exit=True, associations=None):
+ def update_if_needed(self, existing_item, new_item, item_type=None, on_update=None, auto_exit=True, associations=None):
# This will exit from the module on its own
# If the method successfully updates an item and on_update param is defined,
# the on_update parameter will be called as a method pasing in this object and the json from the response
@@ -921,7 +922,8 @@ class ControllerAPIModule(ControllerModule):
# If we have an item, we can see if it needs an update
try:
item_url = existing_item['url']
- item_type = existing_item['type']
+ if not item_type:
+ item_type = existing_item['type']
if item_type == 'user':
item_name = existing_item['username']
elif item_type == 'workflow_job_template_node':
@@ -990,7 +992,7 @@ class ControllerAPIModule(ControllerModule):
new_item.pop(key)
if existing_item:
- return self.update_if_needed(existing_item, new_item, on_update=on_update, auto_exit=auto_exit, associations=associations)
+ return self.update_if_needed(existing_item, new_item, item_type=item_type, on_update=on_update, auto_exit=auto_exit, associations=associations)
else:
return self.create_if_needed(
existing_item, new_item, endpoint, on_create=on_create, item_type=item_type, auto_exit=auto_exit, associations=associations
@@ -1036,7 +1038,10 @@ class ControllerAPIModule(ControllerModule):
# Grab our start time to compare against for the timeout
start = time.time()
result = self.get_endpoint(url)
- while not result['json']['finished']:
+ wait_on_field = 'event_processing_finished'
+ if wait_on_field not in result['json']:
+ wait_on_field = 'finished'
+ while not result['json'][wait_on_field]:
# If we are past our time out fail with a message
if timeout and timeout < time.time() - start:
# Account for Legacy messages
diff --git a/ansible_collections/awx/awx/plugins/modules/application.py b/ansible_collections/awx/awx/plugins/modules/application.py
index 7a31522a0..1933143af 100644
--- a/ansible_collections/awx/awx/plugins/modules/application.py
+++ b/ansible_collections/awx/awx/plugins/modules/application.py
@@ -147,8 +147,12 @@ def main():
if redirect_uris is not None:
application_fields['redirect_uris'] = ' '.join(redirect_uris)
- # If the state was present and we can let the module build or update the existing application, this will return on its own
- module.create_or_update_if_needed(application, application_fields, endpoint='applications', item_type='application')
+ response = module.create_or_update_if_needed(application, application_fields, endpoint='applications', item_type='application', auto_exit=False)
+ if 'client_id' in response:
+ module.json_output['client_id'] = response['client_id']
+ if 'client_secret' in response:
+ module.json_output['client_secret'] = response['client_secret']
+ module.exit_json(**module.json_output)
if __name__ == '__main__':
diff --git a/ansible_collections/awx/awx/plugins/modules/role_definition.py b/ansible_collections/awx/awx/plugins/modules/role_definition.py
new file mode 100644
index 000000000..e226be99a
--- /dev/null
+++ b/ansible_collections/awx/awx/plugins/modules/role_definition.py
@@ -0,0 +1,114 @@
+#!/usr/bin/python
+# coding: utf-8 -*-
+
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ['preview'], 'supported_by': 'community'}
+
+
+DOCUMENTATION = '''
+---
+module: role_definition
+author: "Seth Foster (@fosterseth)"
+short_description: Add role definition to Automation Platform Controller
+description:
+ - Contains a list of permissions and a resource type that can then be assigned to users or teams.
+options:
+ name:
+ description:
+ - Name of this role definition.
+ required: True
+ type: str
+ permissions:
+ description:
+ - List of permissions to include in the role definition.
+ required: True
+ type: list
+ elements: str
+ content_type:
+ description:
+ - The type of resource this applies to.
+ required: True
+ type: str
+ description:
+ description:
+ - Optional description of this role definition.
+ type: str
+ state:
+ description:
+ - The desired state of the role definition.
+ default: present
+ choices:
+ - present
+ - absent
+ type: str
+extends_documentation_fragment: awx.awx.auth
+'''
+
+
+EXAMPLES = '''
+- name: Create Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to view and execute jt
+ state: present
+'''
+
+from ..module_utils.controller_api import ControllerAPIModule
+
+
+def main():
+ # Any additional arguments that are not fields of the item can be added here
+ argument_spec = dict(
+ name=dict(required=True, type='str'),
+ permissions=dict(required=True, type='list', elements='str'),
+ content_type=dict(required=True, type='str'),
+ description=dict(required=False, type='str'),
+ state=dict(default='present', choices=['present', 'absent']),
+ )
+
+ module = ControllerAPIModule(argument_spec=argument_spec)
+
+ name = module.params.get('name')
+ permissions = module.params.get('permissions')
+ content_type = module.params.get('content_type')
+ description = module.params.get('description')
+ state = module.params.get('state')
+ if description is None:
+ description = ''
+
+ role_definition = module.get_one('role_definitions', name_or_id=name)
+
+ if state == 'absent':
+ module.delete_if_needed(
+ role_definition,
+ item_type='role_definition',
+ )
+
+ post_kwargs = {
+ 'name': name,
+ 'permissions': permissions,
+ 'content_type': content_type,
+ 'description': description
+ }
+
+ if state == 'present':
+ module.create_or_update_if_needed(
+ role_definition,
+ post_kwargs,
+ endpoint='role_definitions',
+ item_type='role_definition',
+ )
+
+
+if __name__ == '__main__':
+ main()
diff --git a/ansible_collections/awx/awx/plugins/modules/role_team_assignment.py b/ansible_collections/awx/awx/plugins/modules/role_team_assignment.py
new file mode 100644
index 000000000..a9d8c62b6
--- /dev/null
+++ b/ansible_collections/awx/awx/plugins/modules/role_team_assignment.py
@@ -0,0 +1,123 @@
+#!/usr/bin/python
+# coding: utf-8 -*-
+
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ['preview'], 'supported_by': 'community'}
+
+
+DOCUMENTATION = '''
+---
+module: role_team_assignment
+author: "Seth Foster (@fosterseth)"
+short_description: Gives a team permission to a resource or an organization.
+description:
+ - Use this endpoint to give a team permission to a resource or an organization.
+ - After creation, the assignment cannot be edited, but can be deleted to remove those permissions.
+options:
+ role_definition:
+ description:
+ - The name or id of the role definition to assign to the team.
+ required: True
+ type: str
+ object_id:
+ description:
+ - Primary key of the object this assignment applies to.
+ required: True
+ type: int
+ team:
+ description:
+ - The name or id of the team to assign to the object.
+ required: False
+ type: str
+ object_ansible_id:
+ description:
+ - Resource id of the object this role applies to. Alternative to the object_id field.
+ required: False
+ type: int
+ team_ansible_id:
+ description:
+ - Resource id of the team who will receive permissions from this assignment. Alternative to team field.
+ required: False
+ type: int
+ state:
+ description:
+ - The desired state of the role definition.
+ default: present
+ choices:
+ - present
+ - absent
+ type: str
+extends_documentation_fragment: awx.awx.auth
+'''
+
+
+EXAMPLES = '''
+- name: Give Team A JT permissions
+ role_team_assignment:
+ role_definition: launch JT
+ object_id: 1
+ team: Team A
+ state: present
+'''
+
+from ..module_utils.controller_api import ControllerAPIModule
+
+
+def main():
+ # Any additional arguments that are not fields of the item can be added here
+ argument_spec = dict(
+ team=dict(required=False, type='str'),
+ object_id=dict(required=True, type='int'),
+ role_definition=dict(required=True, type='str'),
+ object_ansible_id=dict(required=False, type='int'),
+ team_ansible_id=dict(required=False, type='int'),
+ state=dict(default='present', choices=['present', 'absent']),
+ )
+
+ module = ControllerAPIModule(argument_spec=argument_spec)
+
+ team = module.params.get('team')
+ object_id = module.params.get('object_id')
+ role_definition_str = module.params.get('role_definition')
+ object_ansible_id = module.params.get('object_ansible_id')
+ team_ansible_id = module.params.get('team_ansible_id')
+ state = module.params.get('state')
+
+ role_definition = module.get_one('role_definitions', allow_none=False, name_or_id=role_definition_str)
+ team = module.get_one('teams', allow_none=False, name_or_id=team)
+
+ kwargs = {
+ 'role_definition': role_definition['id'],
+ 'object_id': object_id,
+ 'team': team['id'],
+ 'object_ansible_id': object_ansible_id,
+ 'team_ansible_id': team_ansible_id,
+ }
+
+ # get rid of None type values
+ kwargs = {k: v for k, v in kwargs.items() if v is not None}
+ role_team_assignment = module.get_one('role_team_assignments', **{'data': kwargs})
+
+ if state == 'absent':
+ module.delete_if_needed(
+ role_team_assignment,
+ item_type='role_team_assignment',
+ )
+
+ if state == 'present':
+ module.create_if_needed(
+ role_team_assignment,
+ kwargs,
+ endpoint='role_team_assignments',
+ item_type='role_team_assignment',
+ )
+
+
+if __name__ == '__main__':
+ main()
diff --git a/ansible_collections/awx/awx/plugins/modules/role_user_assignment.py b/ansible_collections/awx/awx/plugins/modules/role_user_assignment.py
new file mode 100644
index 000000000..222db14df
--- /dev/null
+++ b/ansible_collections/awx/awx/plugins/modules/role_user_assignment.py
@@ -0,0 +1,124 @@
+#!/usr/bin/python
+# coding: utf-8 -*-
+
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ['preview'], 'supported_by': 'community'}
+
+
+DOCUMENTATION = '''
+---
+module: role_user_assignment
+author: "Seth Foster (@fosterseth)"
+short_description: Gives a user permission to a resource or an organization.
+description:
+ - Use this endpoint to give a user permission to a resource or an organization.
+ - After creation, the assignment cannot be edited, but can be deleted to remove those permissions.
+options:
+ role_definition:
+ description:
+ - The name or id of the role definition to assign to the user.
+ required: True
+ type: str
+ object_id:
+ description:
+ - Primary key of the object this assignment applies to.
+ required: True
+ type: int
+ user:
+ description:
+ - The name or id of the user to assign to the object.
+ required: False
+ type: str
+ object_ansible_id:
+ description:
+ - Resource id of the object this role applies to. Alternative to the object_id field.
+ required: False
+ type: int
+ user_ansible_id:
+ description:
+ - Resource id of the user who will receive permissions from this assignment. Alternative to user field.
+ required: False
+ type: int
+ state:
+ description:
+ - The desired state of the role definition.
+ default: present
+ choices:
+ - present
+ - absent
+ type: str
+extends_documentation_fragment: awx.awx.auth
+'''
+
+
+EXAMPLES = '''
+- name: Give Bob JT permissions
+ role_user_assignment:
+ role_definition: launch JT
+ object_id: 1
+ user: bob
+ state: present
+'''
+
+from ..module_utils.controller_api import ControllerAPIModule
+
+
+def main():
+ # Any additional arguments that are not fields of the item can be added here
+ argument_spec = dict(
+ user=dict(required=False, type='str'),
+ object_id=dict(required=True, type='int'),
+ role_definition=dict(required=True, type='str'),
+ object_ansible_id=dict(required=False, type='int'),
+ user_ansible_id=dict(required=False, type='int'),
+ state=dict(default='present', choices=['present', 'absent']),
+ )
+
+ module = ControllerAPIModule(argument_spec=argument_spec)
+
+ user = module.params.get('user')
+ object_id = module.params.get('object_id')
+ role_definition_str = module.params.get('role_definition')
+ object_ansible_id = module.params.get('object_ansible_id')
+ user_ansible_id = module.params.get('user_ansible_id')
+ state = module.params.get('state')
+
+ role_definition = module.get_one('role_definitions', allow_none=False, name_or_id=role_definition_str)
+ user = module.get_one('users', allow_none=False, name_or_id=user)
+
+ kwargs = {
+ 'role_definition': role_definition['id'],
+ 'object_id': object_id,
+ 'user': user['id'],
+ 'object_ansible_id': object_ansible_id,
+ 'user_ansible_id': user_ansible_id,
+ }
+
+ # get rid of None type values
+ kwargs = {k: v for k, v in kwargs.items() if v is not None}
+
+ role_user_assignment = module.get_one('role_user_assignments', **{'data': kwargs})
+
+ if state == 'absent':
+ module.delete_if_needed(
+ role_user_assignment,
+ item_type='role_user_assignment',
+ )
+
+ if state == 'present':
+ module.create_if_needed(
+ role_user_assignment,
+ kwargs,
+ endpoint='role_user_assignments',
+ item_type='role_user_assignment',
+ )
+
+
+if __name__ == '__main__':
+ main()
diff --git a/ansible_collections/awx/awx/plugins/modules/workflow_launch.py b/ansible_collections/awx/awx/plugins/modules/workflow_launch.py
index c06841098..ae2114b87 100644
--- a/ansible_collections/awx/awx/plugins/modules/workflow_launch.py
+++ b/ansible_collections/awx/awx/plugins/modules/workflow_launch.py
@@ -39,6 +39,16 @@ options:
description:
- Limit to use for the I(job_template).
type: str
+ tags:
+ description:
+ - Specific tags to apply from the I(job_template).
+ type: list
+ elements: str
+ skip_tags:
+ description:
+ - Specific tags to skip from the I(job_template).
+ type: list
+ elements: str
scm_branch:
description:
- A specific branch of the SCM project to run the template on.
@@ -100,6 +110,8 @@ def main():
organization=dict(),
inventory=dict(),
limit=dict(),
+ tags=dict(type='list', elements='str'),
+ skip_tags=dict(type='list', elements='str'),
scm_branch=dict(),
extra_vars=dict(type='dict'),
wait=dict(required=False, default=True, type='bool'),
@@ -128,6 +140,14 @@ def main():
if field_val is not None:
optional_args[field_name] = field_val
+ # Special treatment of tags parameters
+ job_tags = module.params.get('tags')
+ if job_tags is not None:
+ optional_args['job_tags'] = ",".join(job_tags)
+ skip_tags = module.params.get('skip_tags')
+ if skip_tags is not None:
+ optional_args['skip_tags'] = ",".join(skip_tags)
+
# Create a datastructure to pass into our job launch
post_data = {}
for arg_name, arg_value in optional_args.items():
@@ -152,6 +172,8 @@ def main():
check_vars_to_prompts = {
'inventory': 'ask_inventory_on_launch',
'limit': 'ask_limit_on_launch',
+ 'job_tags': 'ask_tags_on_launch',
+ 'skip_tags': 'ask_skip_tags_on_launch',
'scm_branch': 'ask_scm_branch_on_launch',
}
diff --git a/ansible_collections/awx/awx/test/awx/conftest.py b/ansible_collections/awx/awx/test/awx/conftest.py
index 5bf288ba6..b7fb6333d 100644
--- a/ansible_collections/awx/awx/test/awx/conftest.py
+++ b/ansible_collections/awx/awx/test/awx/conftest.py
@@ -17,6 +17,7 @@ import pytest
from ansible.module_utils.six import raise_from
+from ansible_base.rbac.models import RoleDefinition, DABPermission
from awx.main.tests.functional.conftest import _request
from awx.main.tests.functional.conftest import credentialtype_scm, credentialtype_ssh # noqa: F401; pylint: disable=unused-variable
from awx.main.models import (
@@ -31,9 +32,11 @@ from awx.main.models import (
WorkflowJobTemplate,
NotificationTemplate,
Schedule,
+ Team,
)
from django.db import transaction
+from django.contrib.contenttypes.models import ContentType
HAS_TOWER_CLI = False
@@ -259,6 +262,11 @@ def job_template(project, inventory):
@pytest.fixture
+def team(organization):
+ return Team.objects.create(name='test-team', organization=organization)
+
+
+@pytest.fixture
def machine_credential(credentialtype_ssh, organization): # noqa: F811
return Credential.objects.create(credential_type=credentialtype_ssh, name='machine-cred', inputs={'username': 'test_user', 'password': 'pas4word'})
@@ -332,6 +340,15 @@ def notification_template(organization):
@pytest.fixture
+def job_template_role_definition():
+ rd = RoleDefinition.objects.create(name='test_view_jt', content_type=ContentType.objects.get_for_model(JobTemplate))
+ permission_codenames = ['view_jobtemplate', 'execute_jobtemplate']
+ permissions = DABPermission.objects.filter(codename__in=permission_codenames)
+ rd.permissions.add(*permissions)
+ return rd
+
+
+@pytest.fixture
def scm_credential(credentialtype_scm, organization): # noqa: F811
return Credential.objects.create(
credential_type=credentialtype_scm, name='scm-cred', inputs={'username': 'optimus', 'password': 'prime'}, organization=organization
diff --git a/ansible_collections/awx/awx/test/awx/test_notification_template.py b/ansible_collections/awx/awx/test/awx/test_notification_template.py
index 346ac4105..8bd2647b0 100644
--- a/ansible_collections/awx/awx/test/awx/test_notification_template.py
+++ b/ansible_collections/awx/awx/test/awx/test_notification_template.py
@@ -155,4 +155,4 @@ def test_build_notification_message_undefined(run_module, admin_user, organizati
nt = NotificationTemplate.objects.get(id=result['id'])
body = job.build_notification_message(nt, 'running')
- assert 'The template rendering return a blank body' in body[1]
+ assert '{"started_by": "My Placeholder"}' in body[1]
diff --git a/ansible_collections/awx/awx/test/awx/test_role.py b/ansible_collections/awx/awx/test/awx/test_role.py
index f5cc5ceec..519d1f87b 100644
--- a/ansible_collections/awx/awx/test/awx/test_role.py
+++ b/ansible_collections/awx/awx/test/awx/test_role.py
@@ -18,9 +18,9 @@ def test_grant_organization_permission(run_module, admin_user, organization, sta
assert not result.get('failed', False), result.get('msg', result)
if state == 'present':
- assert rando in organization.execute_role
+ assert rando in organization.admin_role
else:
- assert rando not in organization.execute_role
+ assert rando not in organization.admin_role
@pytest.mark.django_db
diff --git a/ansible_collections/awx/awx/test/awx/test_role_definition.py b/ansible_collections/awx/awx/test/awx/test_role_definition.py
new file mode 100644
index 000000000..b65d0259b
--- /dev/null
+++ b/ansible_collections/awx/awx/test/awx/test_role_definition.py
@@ -0,0 +1,122 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+import pytest
+
+from ansible_base.rbac.models import RoleDefinition
+
+
+@pytest.mark.django_db
+def test_create_new(run_module, admin_user):
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate', 'awx.execute_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ },
+ admin_user)
+ assert result['changed']
+
+ role_definition = RoleDefinition.objects.get(name='test_view_jt')
+ assert role_definition
+ permission_codenames = [p.codename for p in role_definition.permissions.all()]
+ assert set(permission_codenames) == set(['view_jobtemplate', 'execute_jobtemplate'])
+ assert role_definition.content_type.model == 'jobtemplate'
+
+
+@pytest.mark.django_db
+def test_update_existing(run_module, admin_user):
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ },
+ admin_user)
+
+ assert result['changed']
+
+ role_definition = RoleDefinition.objects.get(name='test_view_jt')
+ permission_codenames = [p.codename for p in role_definition.permissions.all()]
+ assert set(permission_codenames) == set(['view_jobtemplate'])
+ assert role_definition.content_type.model == 'jobtemplate'
+
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate', 'awx.execute_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ },
+ admin_user)
+
+ assert result['changed']
+
+ role_definition.refresh_from_db()
+ permission_codenames = [p.codename for p in role_definition.permissions.all()]
+ assert set(permission_codenames) == set(['view_jobtemplate', 'execute_jobtemplate'])
+ assert role_definition.content_type.model == 'jobtemplate'
+
+
+@pytest.mark.django_db
+def test_delete_existing(run_module, admin_user):
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate', 'awx.execute_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ },
+ admin_user)
+
+ assert result['changed']
+
+ role_definition = RoleDefinition.objects.get(name='test_view_jt')
+ assert role_definition
+
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate', 'awx.execute_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ 'state': 'absent',
+ },
+ admin_user)
+
+ assert result['changed']
+
+ with pytest.raises(RoleDefinition.DoesNotExist):
+ role_definition.refresh_from_db()
+
+
+@pytest.mark.django_db
+def test_idempotence(run_module, admin_user):
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate', 'awx.execute_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ },
+ admin_user)
+
+ assert result['changed']
+
+ result = run_module(
+ 'role_definition',
+ {
+ 'name': 'test_view_jt',
+ 'permissions': ['awx.view_jobtemplate', 'awx.execute_jobtemplate'],
+ 'content_type': 'awx.jobtemplate',
+ },
+ admin_user)
+
+ assert not result['changed']
+
+ role_definition = RoleDefinition.objects.get(name='test_view_jt')
+ permission_codenames = [p.codename for p in role_definition.permissions.all()]
+ assert set(permission_codenames) == set(['view_jobtemplate', 'execute_jobtemplate'])
diff --git a/ansible_collections/awx/awx/test/awx/test_role_team_assignment.py b/ansible_collections/awx/awx/test/awx/test_role_team_assignment.py
new file mode 100644
index 000000000..a20e7261e
--- /dev/null
+++ b/ansible_collections/awx/awx/test/awx/test_role_team_assignment.py
@@ -0,0 +1,70 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+import pytest
+
+from ansible_base.rbac.models import RoleTeamAssignment
+
+
+@pytest.mark.django_db
+def test_create_new(run_module, admin_user, team, job_template, job_template_role_definition):
+ result = run_module(
+ 'role_team_assignment',
+ {
+ 'team': team.name,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert result['changed']
+ assert RoleTeamAssignment.objects.filter(team=team, object_id=job_template.id, role_definition=job_template_role_definition).exists()
+
+
+@pytest.mark.django_db
+def test_idempotence(run_module, admin_user, team, job_template, job_template_role_definition):
+ result = run_module(
+ 'role_team_assignment',
+ {
+ 'team': team.name,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert result['changed']
+
+ result = run_module(
+ 'role_team_assignment',
+ {
+ 'team': team.name,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert not result['changed']
+
+
+@pytest.mark.django_db
+def test_delete_existing(run_module, admin_user, team, job_template, job_template_role_definition):
+ result = run_module(
+ 'role_team_assignment',
+ {
+ 'team': team.name,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert result['changed']
+ assert RoleTeamAssignment.objects.filter(team=team, object_id=job_template.id, role_definition=job_template_role_definition).exists()
+
+ result = run_module(
+ 'role_team_assignment',
+ {
+ 'team': team.name,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ 'state': 'absent'
+ },
+ admin_user)
+ assert result['changed']
+ assert not RoleTeamAssignment.objects.filter(team=team, object_id=job_template.id, role_definition=job_template_role_definition).exists()
diff --git a/ansible_collections/awx/awx/test/awx/test_role_user_assignment.py b/ansible_collections/awx/awx/test/awx/test_role_user_assignment.py
new file mode 100644
index 000000000..878aa0b58
--- /dev/null
+++ b/ansible_collections/awx/awx/test/awx/test_role_user_assignment.py
@@ -0,0 +1,70 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+import pytest
+
+from ansible_base.rbac.models import RoleUserAssignment
+
+
+@pytest.mark.django_db
+def test_create_new(run_module, admin_user, job_template, job_template_role_definition):
+ result = run_module(
+ 'role_user_assignment',
+ {
+ 'user': admin_user.username,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert result['changed']
+ assert RoleUserAssignment.objects.filter(user=admin_user, object_id=job_template.id, role_definition=job_template_role_definition).exists()
+
+
+@pytest.mark.django_db
+def test_idempotence(run_module, admin_user, job_template, job_template_role_definition):
+ result = run_module(
+ 'role_user_assignment',
+ {
+ 'user': admin_user.username,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert result['changed']
+
+ result = run_module(
+ 'role_user_assignment',
+ {
+ 'user': admin_user.username,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert not result['changed']
+
+
+@pytest.mark.django_db
+def test_delete_existing(run_module, admin_user, job_template, job_template_role_definition):
+ result = run_module(
+ 'role_user_assignment',
+ {
+ 'user': admin_user.username,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ },
+ admin_user)
+ assert result['changed']
+ assert RoleUserAssignment.objects.filter(user=admin_user, object_id=job_template.id, role_definition=job_template_role_definition).exists()
+
+ result = run_module(
+ 'role_user_assignment',
+ {
+ 'user': admin_user.username,
+ 'object_id': job_template.id,
+ 'role_definition': job_template_role_definition.name,
+ 'state': 'absent'
+ },
+ admin_user)
+ assert result['changed']
+ assert not RoleUserAssignment.objects.filter(user=admin_user, object_id=job_template.id, role_definition=job_template_role_definition).exists()
diff --git a/ansible_collections/awx/awx/test/awx/test_workflow_job_template.py b/ansible_collections/awx/awx/test/awx/test_workflow_job_template.py
index 60a4fff7c..58a9f1f4d 100644
--- a/ansible_collections/awx/awx/test/awx/test_workflow_job_template.py
+++ b/ansible_collections/awx/awx/test/awx/test_workflow_job_template.py
@@ -4,7 +4,7 @@ __metaclass__ = type
import pytest
-from awx.main.models import WorkflowJobTemplate, NotificationTemplate
+from awx.main.models import WorkflowJobTemplate, WorkflowJob, NotificationTemplate
@pytest.mark.django_db
@@ -136,6 +136,37 @@ def test_associate_only_on_success(run_module, admin_user, organization, project
@pytest.mark.django_db
+def test_workflow_launch_with_prompting(run_module, admin_user, organization, inventory):
+ WorkflowJobTemplate.objects.create(
+ name='foo-workflow-launch-test',
+ organization=organization,
+ ask_variables_on_launch=True,
+ ask_inventory_on_launch=True,
+ ask_tags_on_launch=True,
+ ask_skip_tags_on_launch=True,
+ )
+ result = run_module(
+ 'workflow_launch',
+ dict(
+ name='foo-workflow-launch-test',
+ inventory=inventory.name,
+ wait=False,
+ extra_vars={"var1": "My First Variable", "var2": "My Second Variable", "var3": "My Third Variable"},
+ tags=["my_tag"],
+ skip_tags=["your_tag", "their_tag"],
+ ),
+ admin_user,
+ )
+ assert result.get('changed', True), result
+
+ job = WorkflowJob.objects.get(id=result['id'])
+ assert job.extra_vars == '{"var1": "My First Variable", "var2": "My Second Variable", "var3": "My Third Variable"}'
+ assert job.inventory == inventory
+ assert job.job_tags == "my_tag"
+ assert job.skip_tags == "your_tag,their_tag"
+
+
+@pytest.mark.django_db
def test_delete_with_spec(run_module, admin_user, organization, survey_spec):
WorkflowJobTemplate.objects.create(organization=organization, name='foo-workflow', survey_enabled=True, survey_spec=survey_spec)
result = run_module('workflow_job_template', {'name': 'foo-workflow', 'organization': organization.name, 'state': 'absent'}, admin_user)
diff --git a/ansible_collections/awx/awx/tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml
index 55c1803db..909e12db1 100644
--- a/ansible_collections/awx/awx/tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml
+++ b/ansible_collections/awx/awx/tests/integration/targets/ad_hoc_command_cancel/tasks/main.yml
@@ -1,63 +1,63 @@
---
- name: Generate a random string for test
- set_fact:
+ ansible.builtin.set_fact:
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
when: test_id is not defined
- name: Generate names
- set_fact:
+ ansible.builtin.set_fact:
inv_name: "AWX-Collection-tests-ad_hoc_command_cancel-inventory-{{ test_id }}"
ssh_cred_name: "AWX-Collection-tests-ad_hoc_command_cancel-ssh-cred-{{ test_id }}"
org_name: "AWX-Collection-tests-ad_hoc_command_cancel-org-{{ test_id }}"
- name: Create a New Organization
- organization:
+ awx.awx.organization:
name: "{{ org_name }}"
- name: Create an Inventory
- inventory:
+ awx.awx.inventory:
name: "{{ inv_name }}"
organization: "{{ org_name }}"
state: present
- name: Add localhost to the Inventory
- host:
+ awx.awx.host:
name: localhost
inventory: "{{ inv_name }}"
variables:
ansible_connection: local
- name: Create a Credential
- credential:
+ awx.awx.credential:
name: "{{ ssh_cred_name }}"
organization: "{{ org_name }}"
credential_type: 'Machine'
state: present
- name: Launch an Ad Hoc Command
- ad_hoc_command:
+ awx.awx.ad_hoc_command:
inventory: "{{ inv_name }}"
credential: "{{ ssh_cred_name }}"
module_name: "command"
module_args: "sleep 100"
register: command
-- assert:
+- ansible.builtin.assert:
that:
- "command is changed"
- name: Cancel the command
- ad_hoc_command_cancel:
+ awx.awx.ad_hoc_command_cancel:
command_id: "{{ command.id }}"
request_timeout: 60
register: results
-- assert:
+- ansible.builtin.assert:
that:
- results is changed
- name: "Wait for up to a minute until the job enters the can_cancel: False state"
- debug:
+ ansible.builtin.debug:
msg: "The job can_cancel status has transitioned into False, we can proceed with testing"
until: not job_status
retries: 6
@@ -66,51 +66,51 @@
job_status: "{{ lookup('awx.awx.controller_api', 'ad_hoc_commands/'+ command.id | string +'/cancel')['can_cancel'] }}"
- name: Cancel the command with hard error if it's not running
- ad_hoc_command_cancel:
+ awx.awx.ad_hoc_command_cancel:
command_id: "{{ command.id }}"
fail_if_not_running: true
register: results
ignore_errors: true
-- assert:
+- ansible.builtin.assert:
that:
- results is failed
- name: Cancel an already canceled command (assert failure)
- ad_hoc_command_cancel:
+ awx.awx.ad_hoc_command_cancel:
command_id: "{{ command.id }}"
fail_if_not_running: true
register: results
ignore_errors: true
-- assert:
+- ansible.builtin.assert:
that:
- results is failed
- name: Check module fails with correct msg
- ad_hoc_command_cancel:
+ awx.awx.ad_hoc_command_cancel:
command_id: 9999999999
register: result
ignore_errors: true
-- assert:
+- ansible.builtin.assert:
that:
- "result.msg == 'Unable to find command with id 9999999999'"
- name: Delete the Credential
- credential:
+ awx.awx.credential:
name: "{{ ssh_cred_name }}"
organization: "{{ org_name }}"
credential_type: 'Machine'
state: absent
- name: Delete the Inventory
- inventory:
+ awx.awx.inventory:
name: "{{ inv_name }}"
organization: "{{ org_name }}"
state: absent
- name: Remove the Organization
- organization:
+ awx.awx.organization:
name: "{{ org_name }}"
state: absent
diff --git a/ansible_collections/awx/awx/tests/integration/targets/application/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/application/tasks/main.yml
index 864d4d0ac..e2e82eab8 100644
--- a/ansible_collections/awx/awx/tests/integration/targets/application/tasks/main.yml
+++ b/ansible_collections/awx/awx/tests/integration/targets/application/tasks/main.yml
@@ -103,6 +103,7 @@
- assert:
that:
- "result is changed"
+ - "'client_secret' in result"
- name: Rename an inventory
application:
diff --git a/ansible_collections/awx/awx/tests/integration/targets/instance/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/instance/tasks/main.yml
index 045567b50..e35ff20e5 100644
--- a/ansible_collections/awx/awx/tests/integration/targets/instance/tasks/main.yml
+++ b/ansible_collections/awx/awx/tests/integration/targets/instance/tasks/main.yml
@@ -1,23 +1,23 @@
---
- name: Generate a test ID
- set_fact:
+ ansible.builtin.set_fact:
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
when: test_id is not defined
- name: Generate hostnames
- set_fact:
+ ansible.builtin.set_fact:
hostname1: "AWX-Collection-tests-instance1.{{ test_id }}.example.com"
hostname2: "AWX-Collection-tests-instance2.{{ test_id }}.example.com"
hostname3: "AWX-Collection-tests-instance3.{{ test_id }}.example.com"
register: facts
- name: Get the k8s setting
- set_fact:
+ ansible.builtin.set_fact:
IS_K8S: "{{ controller_settings['IS_K8S'] | default(False) }}"
vars:
controller_settings: "{{ lookup('awx.awx.controller_api', 'settings/all') }}"
-- debug:
+- ansible.builtin.debug:
msg: "Skipping instance test since this is instance is not running on a K8s platform"
when: not IS_K8S
@@ -32,7 +32,7 @@
- "{{ hostname2 }}"
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
@@ -44,7 +44,7 @@
capacity_adjustment: 0.4
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
@@ -54,7 +54,7 @@
capacity_adjustment: 0.7
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
@@ -78,7 +78,7 @@
node_state: installed
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
@@ -89,7 +89,7 @@
node_state: installed
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
@@ -103,7 +103,7 @@
- "{{ hostname2 }}"
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
@@ -115,7 +115,7 @@
peers: []
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is changed
diff --git a/ansible_collections/awx/awx/tests/integration/targets/lookup_api_plugin/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/lookup_api_plugin/tasks/main.yml
index 6fac5a0bc..44d54a9dc 100644
--- a/ansible_collections/awx/awx/tests/integration/targets/lookup_api_plugin/tasks/main.yml
+++ b/ansible_collections/awx/awx/tests/integration/targets/lookup_api_plugin/tasks/main.yml
@@ -1,11 +1,11 @@
---
- name: Generate a random string for test
- set_fact:
+ ansible.builtin.set_fact:
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
when: test_id is not defined
- name: Generate usernames
- set_fact:
+ ansible.builtin.set_fact:
usernames:
- "AWX-Collection-tests-api_lookup-user1-{{ test_id }}"
- "AWX-Collection-tests-api_lookup-user2-{{ test_id }}"
@@ -20,7 +20,7 @@
register: controller_meta
- name: Generate the name of our plugin
- set_fact:
+ ansible.builtin.set_fact:
plugin_name: "{{ controller_meta.prefix }}.controller_api"
- name: Create all of our users
@@ -38,7 +38,7 @@
register: results
ignore_errors: true
- - assert:
+ - ansible.builtin.assert:
that:
- "'dne' in (results.msg | lower)"
@@ -49,48 +49,48 @@
loop: "{{ hosts }}"
- name: Test too many params (failure from validation of terms)
- set_fact:
+ ansible.builtin.set_fact:
junk: "{{ query(plugin_name, 'users', 'teams', query_params={}, ) }}"
ignore_errors: true
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is failed
- "'You must pass exactly one endpoint to query' in result.msg"
- name: Try to load invalid endpoint
- set_fact:
+ ansible.builtin.set_fact:
junk: "{{ query(plugin_name, 'john', query_params={}, ) }}"
ignore_errors: true
register: result
- - assert:
+ - ansible.builtin.assert:
that:
- result is failed
- "'The requested object could not be found at' in result.msg"
- name: Load user of a specific name without promoting objects
- set_fact:
+ ansible.builtin.set_fact:
users_list: "{{ lookup(plugin_name, 'users', query_params={ 'username' : user_creation_results['results'][0]['item'] }, return_objects=False) }}"
- - assert:
+ - ansible.builtin.assert:
that:
- users_list['results'] | length() == 1
- users_list['count'] == 1
- users_list['results'][0]['id'] == user_creation_results['results'][0]['id']
- name: Load user of a specific name with promoting objects
- set_fact:
+ ansible.builtin.set_fact:
user_objects: "{{ query(plugin_name, 'users', query_params={ 'username' : user_creation_results['results'][0]['item'] }, return_objects=True ) }}"
- - assert:
+ - ansible.builtin.assert:
that:
- user_objects | length() == 1
- users_list['results'][0]['id'] == user_objects[0]['id']
- name: Loop over one user with the loop syntax
- assert:
+ ansible.builtin.assert:
that:
- item['id'] == user_creation_results['results'][0]['id']
loop: "{{ query(plugin_name, 'users', query_params={ 'username' : user_creation_results['results'][0]['item'] } ) }}"
@@ -98,91 +98,91 @@
label: "{{ item.id }}"
- name: Get a page of users as just ids
- set_fact:
+ ansible.builtin.set_fact:
users: "{{ query(plugin_name, 'users', query_params={ 'username__endswith': test_id, 'page_size': 2 }, return_ids=True ) }}"
- debug:
msg: "{{ users }}"
- - name: Assert that user list has 2 ids only and that they are strings, not ints
- assert:
+ - name: assert that user list has 2 ids only and that they are strings, not ints
+ ansible.builtin.assert:
that:
- users | length() == 2
- user_creation_results['results'][0]['id'] not in users
- user_creation_results['results'][0]['id'] | string in users
- name: Get all users of a system through next attribute
- set_fact:
+ ansible.builtin.set_fact:
users: "{{ query(plugin_name, 'users', query_params={ 'username__endswith': test_id, 'page_size': 1 }, return_all=true ) }}"
- - assert:
+ - ansible.builtin.assert:
that:
- users | length() >= 3
- name: Get all of the users created with a max_objects of 1
- set_fact:
+ ansible.builtin.set_fact:
users: "{{ lookup(plugin_name, 'users', query_params={ 'username__endswith': test_id, 'page_size': 1 }, return_all=true, max_objects=1 ) }}"
ignore_errors: true
register: max_user_errors
- - assert:
+ - ansible.builtin.assert:
that:
- max_user_errors is failed
- "'List view at users returned 3 objects, which is more than the maximum allowed by max_objects' in max_user_errors.msg"
- name: Get the ID of the first user created and verify that it is correct
- assert:
+ ansible.builtin.assert:
that: "query(plugin_name, 'users', query_params={ 'username' : user_creation_results['results'][0]['item'] }, return_ids=True)[0] == user_creation_results['results'][0]['id'] | string"
- name: Try to get an ID of someone who does not exist
- set_fact:
+ ansible.builtin.set_fact:
failed_user_id: "{{ query(plugin_name, 'users', query_params={ 'username': 'john jacob jingleheimer schmidt' }, expect_one=True) }}"
register: result
ignore_errors: true
- - assert:
+ - ansible.builtin.assert:
that:
- result is failed
- "'Expected one object from endpoint users' in result['msg']"
- name: Lookup too many users
- set_fact:
+ ansible.builtin.set_fact:
too_many_user_ids: " {{ query(plugin_name, 'users', query_params={ 'username__endswith': test_id }, expect_one=True) }}"
register: results
ignore_errors: true
- - assert:
+ - ansible.builtin.assert:
that:
- results is failed
- "'Expected one object from endpoint users, but obtained 3' in results['msg']"
- name: Get the ping page
- set_fact:
+ ansible.builtin.set_fact:
ping_data: "{{ lookup(plugin_name, 'ping' ) }}"
register: results
- - assert:
+ - ansible.builtin.assert:
that:
- results is succeeded
- "'active_node' in ping_data"
- name: "Make sure that expect_objects fails on an API page"
- set_fact:
+ ansible.builtin.set_fact:
my_var: "{{ lookup(plugin_name, 'settings/ui', expect_objects=True) }}"
ignore_errors: true
register: results
- - assert:
+ - ansible.builtin.assert:
that:
- results is failed
- "'Did not obtain a list or detail view at settings/ui, and expect_objects or expect_one is set to True' in results.msg"
# DOCS Example Tests
- name: Load the UI settings
- set_fact:
+ ansible.builtin.set_fact:
controller_settings: "{{ lookup('awx.awx.controller_api', 'settings/ui') }}"
- - assert:
+ - ansible.builtin.assert:
that:
- "'CUSTOM_LOGO' in controller_settings"
@@ -191,7 +191,7 @@
msg: "Admin users: {{ query('awx.awx.controller_api', 'users', query_params={ 'is_superuser': true }) | map(attribute='username') | join(', ') }}"
register: results
- - assert:
+ - ansible.builtin.assert:
that:
- "'admin' in results.msg"
@@ -211,7 +211,7 @@
register: role_revoke
when: "query('awx.awx.controller_api', 'users', query_params={ 'username': 'DNE_TESTING' }) | length == 1"
- - assert:
+ - ansible.builtin.assert:
that:
- role_revoke is skipped
@@ -227,7 +227,7 @@
) | map(attribute='name') | list }}
register: group_creation
- - assert:
+ - ansible.builtin.assert:
that: group_creation is changed
always:
diff --git a/ansible_collections/awx/awx/tests/integration/targets/role_definition/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/role_definition/tasks/main.yml
new file mode 100644
index 000000000..637566f20
--- /dev/null
+++ b/ansible_collections/awx/awx/tests/integration/targets/role_definition/tasks/main.yml
@@ -0,0 +1,30 @@
+---
+- name: Create Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to launch job
+ state: present
+ register: result
+
+- assert:
+ that:
+ - result is changed
+
+- name: Delete Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to launch job
+ state: absent
+ register: result
+
+- assert:
+ that:
+ - result is changed
diff --git a/ansible_collections/awx/awx/tests/integration/targets/role_team_assignment/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/role_team_assignment/tasks/main.yml
new file mode 100644
index 000000000..85ed76d8e
--- /dev/null
+++ b/ansible_collections/awx/awx/tests/integration/targets/role_team_assignment/tasks/main.yml
@@ -0,0 +1,62 @@
+---
+- name: Create Team
+ team:
+ name: All Stars
+ organization: Default
+
+- name: Create Job Template
+ job_template:
+ name: Demo Job Template
+ job_type: run
+ inventory: Demo Inventory
+ project: Demo Project
+ playbook: hello_world.yml
+ register: job_template
+
+- name: Create Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to launch job
+
+- name: Create Role Team Assignment
+ role_team_assignment:
+ role_definition: test_view_jt
+ team: All Stars
+ object_id: "{{ job_template.id }}"
+ register: result
+
+- assert:
+ that:
+ - result is changed
+
+- name: Delete Role Team Assigment
+ role_team_assignment:
+ role_definition: test_view_jt
+ team: All Stars
+ object_id: "{{ job_template.id }}"
+ state: absent
+ register: result
+
+- assert:
+ that:
+ - result is changed
+
+- name: Create Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to launch job
+ state: absent
+
+- name: Delete Team
+ team:
+ name: All Stars
+ organization: Default
+ state: absent
diff --git a/ansible_collections/awx/awx/tests/integration/targets/role_user_assignment/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/role_user_assignment/tasks/main.yml
new file mode 100644
index 000000000..897a0ce15
--- /dev/null
+++ b/ansible_collections/awx/awx/tests/integration/targets/role_user_assignment/tasks/main.yml
@@ -0,0 +1,63 @@
+---
+- name: Create User
+ user:
+ username: testing_user
+ first_name: testing
+ last_name: user
+ password: password
+
+- name: Create Job Template
+ job_template:
+ name: Demo Job Template
+ job_type: run
+ inventory: Demo Inventory
+ project: Demo Project
+ playbook: hello_world.yml
+ register: job_template
+
+- name: Create Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to launch job
+
+- name: Create Role User Assignment
+ role_user_assignment:
+ role_definition: test_view_jt
+ user: testing_user
+ object_id: "{{ job_template.id }}"
+ register: result
+
+- assert:
+ that:
+ - result is changed
+
+- name: Delete Role User Assigment
+ role_user_assignment:
+ role_definition: test_view_jt
+ user: testing_user
+ object_id: "{{ job_template.id }}"
+ state: absent
+ register: result
+
+- assert:
+ that:
+ - result is changed
+
+- name: Create Role Definition
+ role_definition:
+ name: test_view_jt
+ permissions:
+ - awx.view_jobtemplate
+ - awx.execute_jobtemplate
+ content_type: awx.jobtemplate
+ description: role definition to launch job
+ state: absent
+
+- name: Delete User
+ user:
+ username: testing_user
+ state: absent
diff --git a/ansible_collections/awx/awx/tests/integration/targets/schedule_rrule/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/schedule_rrule/tasks/main.yml
index af2d95300..a8ecbcaef 100644
--- a/ansible_collections/awx/awx/tests/integration/targets/schedule_rrule/tasks/main.yml
+++ b/ansible_collections/awx/awx/tests/integration/targets/schedule_rrule/tasks/main.yml
@@ -1,50 +1,50 @@
---
- name: Get our collection package
- controller_meta:
+ awx.awx.controller_meta:
register: controller_meta
- name: Generate the name of our plugin
- set_fact:
+ ansible.builtin.set_fact:
plugin_name: "{{ controller_meta.prefix }}.schedule_rrule"
- name: Test too many params (failure from validation of terms)
- debug:
+ ansible.builtin.debug:
msg: "{{ query(plugin_name | string, 'none', 'weekly', start_date='2020-4-16 03:45:07') }}"
ignore_errors: true
register: result
-- assert:
+- ansible.builtin.assert:
that:
- result is failed
- "'You may only pass one schedule type in at a time' in result.msg"
- name: Test invalid frequency (failure from validation of term)
- debug:
+ ansible.builtin.debug:
msg: "{{ query(plugin_name, 'john', start_date='2020-4-16 03:45:07') }}"
ignore_errors: true
register: result
-- assert:
+- ansible.builtin.assert:
that:
- result is failed
- "'Frequency of john is invalid' in result.msg"
- name: Test an invalid start date (generic failure case from get_rrule)
- debug:
+ ansible.builtin.debug:
msg: "{{ query(plugin_name, 'none', start_date='invalid') }}"
ignore_errors: true
register: result
-- assert:
+- ansible.builtin.assert:
that:
- result is failed
- "'Parameter start_date must be in the format YYYY-MM-DD' in result.msg"
- name: Test end_on as count (generic success case)
- debug:
+ ansible.builtin.debug:
msg: "{{ query(plugin_name, 'minute', start_date='2020-4-16 03:45:07', end_on='2') }}"
register: result
-- assert:
+- ansible.builtin.assert:
that:
- result.msg == 'DTSTART;TZID=America/New_York:20200416T034507 RRULE:FREQ=MINUTELY;COUNT=2;INTERVAL=1'
diff --git a/ansible_collections/awx/awx/tests/integration/targets/settings/tasks/main.yml b/ansible_collections/awx/awx/tests/integration/targets/settings/tasks/main.yml
index 5feb9ee80..71f1a8c93 100644
--- a/ansible_collections/awx/awx/tests/integration/targets/settings/tasks/main.yml
+++ b/ansible_collections/awx/awx/tests/integration/targets/settings/tasks/main.yml
@@ -11,7 +11,7 @@
register: result
- name: Changing setting to true should have changed the value
- assert:
+ ansible.builtin.assert:
that:
- "result is changed"
@@ -22,7 +22,7 @@
register: result
- name: Changing setting to true again should not change the value
- assert:
+ ansible.builtin.assert:
that:
- "result is not changed"
@@ -33,17 +33,17 @@
register: result
- name: Changing setting back to false should have changed the value
- assert:
+ ansible.builtin.assert:
that:
- "result is changed"
- name: Set the value of AWX_ISOLATION_SHOW_PATHS to a baseline
- settings:
+ awx.awx.settings:
name: AWX_ISOLATION_SHOW_PATHS
value: '["/var/lib/awx/projects/"]'
- name: Set the value of AWX_ISOLATION_SHOW_PATHS to get an error back from the controller
- settings:
+ awx.awx.settings:
settings:
AWX_ISOLATION_SHOW_PATHS:
'not': 'a valid'
@@ -51,75 +51,75 @@
register: result
ignore_errors: true
-- assert:
+- ansible.builtin.assert:
that:
- "result is failed"
- name: Set the value of AWX_ISOLATION_SHOW_PATHS
- settings:
+ awx.awx.settings:
name: AWX_ISOLATION_SHOW_PATHS
value: '["/var/lib/awx/projects/", "/tmp"]'
register: result
-- assert:
+- ansible.builtin.assert:
that:
- "result is changed"
- name: Attempt to set the value of AWX_ISOLATION_BASE_PATH to what it already is
- settings:
+ awx.awx.settings:
name: AWX_ISOLATION_BASE_PATH
value: /tmp
register: result
-- debug:
+- ansible.builtin.debug:
msg: "{{ result }}"
-- assert:
+- ansible.builtin.assert:
that:
- "result is not changed"
- name: Apply a single setting via settings
- settings:
+ awx.awx.settings:
name: AWX_ISOLATION_SHOW_PATHS
value: '["/var/lib/awx/projects/", "/var/tmp"]'
register: result
-- assert:
+- ansible.builtin.assert:
that:
- "result is changed"
- name: Apply multiple setting via settings with no change
- settings:
+ awx.awx.settings:
settings:
AWX_ISOLATION_BASE_PATH: /tmp
AWX_ISOLATION_SHOW_PATHS: ["/var/lib/awx/projects/", "/var/tmp"]
register: result
-- debug:
+- ansible.builtin.debug:
msg: "{{ result }}"
-- assert:
+- ansible.builtin.assert:
that:
- "result is not changed"
- name: Apply multiple setting via settings with change
- settings:
+ awx.awx.settings:
settings:
AWX_ISOLATION_BASE_PATH: /tmp
AWX_ISOLATION_SHOW_PATHS: []
register: result
-- assert:
+- ansible.builtin.assert:
that:
- "result is changed"
- name: Handle an omit value
- settings:
+ awx.awx.settings:
name: AWX_ISOLATION_BASE_PATH
value: '{{ junk_var | default(omit) }}'
register: result
ignore_errors: true
-- assert:
+- ansible.builtin.assert:
that:
- "'Unable to update settings' in result.msg"