1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
community.general/plugins/modules/cloud
Kosala Atapattu beef93f687
Allow terraform module to specify complex variable structures (#4797)
* Adding capability to specify complex variables type to terraform

* Terrform variable types are mapped to ansible veriable types

* Currently handles Dict, List, Str, Int, Bool types

* Updated the documentation accordingly

* Updated with an example.

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Wonder how that missed the PEP8 checks :).

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Adding the changelog fragment

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Adding ``integer_types`` from ``module_utils``

Simplified the ``integer_types``,  ``str`` and ``float`` value population through ``json.dumps()``.  Now the strings can have special characters which can break the module execution.

* Update changelogs/fragments/4797-terraform-complex-variables.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* * Changed to approach to make the code more readble and simple to understand.

    * Maintaining the original for loop for the top_level variables. Therefore the rocess_conplex_args() now only handle second level variables when the type() is either Dict or List.

    * Json dumps are used only for the low level variables. Terraform CLI had issues interpreting escape sequecences from json.dumps()

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* adding boolean explicitly, although boolean is a subclass of integer, adding this for self documentation pupose and the clarity of the code.

* fixing the doc strings

* Update terraform.py

Fixing docstrings

* * Introducing format_args funtion to simplify formatting each argument type for top_level and lower level.

* Terraform Lists of strings, numbers, objects and lists are supported.

* Adding COMMAND: to the fail_json msg, for plan failures to help troubleshoot command line arguments.

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* * Adding full terraform command to fail_json() when the terrafor plan fails
    * Fixing a spelling mistake.

* plan_command if a list, stringifying the list

* * Fixing the new line for the change fragments

* Removed CR (\r) from the output messages. Now output lines carry only LF (\n), not CRLF (\r\n).

* Added integration testing for complex variables.

* Restructured integration testing code to be more expandable.

* Update changelogs/fragments/4797-terraform-complex-variables.yml

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* double-quotes are not properly escaped in shell, and python string
escaping are nullified the way terraform handle second tier string
variables (within terraform).

* changing all the task actions to FQCN format.

* integration testing now includes:

1. Top level strings containing, special shell characters, spaces,
   double-quotes.

2. Second level strings containing, special shell characters, spaces,
   double-quotes repeating double-quotes to ensure proper regex
substitution.

* Adding colon ':' to string test casses.

* Added complex_vars to switch between the old and the new variable
interpretations.
Updated the documentations to reflect the changes.
Updated the examples.
Handling '\' as well with the escape sequence.

* Added tests for the new escape sequences.
Added multilines tests.

* Restructuring the documente strings to a shorter string.
Argument_spec changed to 'bool'

* Update changelogs/fragments/4797-terraform-complex-variables.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/misc/terraform.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-10-03 22:10:16 +02:00
..
alicloud multiple modules: removed unused imports (#5240) 2022-09-09 22:23:48 +02:00
atomic Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
centurylink Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
dimensiondata Adjust booleans in cloud modules. (#5155) 2022-08-24 20:16:25 +02:00
heroku Adjust booleans in cloud modules. (#5155) 2022-08-24 20:16:25 +02:00
huawei Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
linode Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
lxc chore: Update lxc_container to support py3 (#5304) 2022-10-01 18:02:48 +02:00
lxd Fix more copyright lines, add more default copyright lines (#5095) 2022-08-08 14:24:58 +02:00
memset Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
misc Allow terraform module to specify complex variable structures (#4797) 2022-10-03 22:10:16 +02:00
oneandone Adjust booleans in cloud modules. (#5155) 2022-08-24 20:16:25 +02:00
online Fix more copyright lines, add more default copyright lines (#5095) 2022-08-08 14:24:58 +02:00
opennebula multiple modules: removed unused imports (#5258) 2022-09-10 11:19:14 +02:00
oracle Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
ovh multiple modules: removed unused imports (#5258) 2022-09-10 11:19:14 +02:00
packet Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
profitbricks Adjust booleans in cloud modules. (#5155) 2022-08-24 20:16:25 +02:00
pubnub Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
rackspace Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
scaleway Adjust booleans in cloud modules. (#5155) 2022-08-24 20:16:25 +02:00
smartos Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
softlayer Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
spotinst Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
univention Normalize more booleans. (#5247) 2022-09-06 20:42:17 +02:00
webfaction Multiple doc fix 3 (#5238) 2022-09-06 07:32:35 +02:00
xenserver multiple modules: removed unused imports (#5258) 2022-09-10 11:19:14 +02:00