You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/docsite/rst/porting_guides/porting_guide_12.rst
+164-1Lines changed: 164 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -646,6 +646,29 @@ Values formerly represented by that type will now appear as a tagged ``str`` ins
646
646
Special handling in plugins is no longer required to access the contents of these values.
647
647
648
648
649
+
No implicit conversion of non-string dict keys
650
+
----------------------------------------------
651
+
652
+
In previous versions, ``ansible-core`` relied on Python's ``json.dumps`` to implicitly convert ``int``, ``float``, ``bool`` and ``None`` dictionary keys to strings in various scenarios, including returning of module results.
653
+
For example, a module was allowed to contain the following code:
654
+
655
+
.. code-block:: python
656
+
657
+
oid =123
658
+
d = {oid: "value"}
659
+
module.exit_json(return_value=d)
660
+
661
+
Starting with this release, modules must explicitly convert any non-string keys to strings (for example, by using the ``str()`` Python function) before passing dictionaries to the ``AnsibleModule.exit_json()`` method of ``ansible-core``. The above code must be changed as follows:
662
+
663
+
.. code-block:: python
664
+
665
+
oid =123
666
+
d = {str(oid): "value"}
667
+
module.exit_json(return_value=d)
668
+
669
+
If you encounter ``"[ERROR]: Task failed: Module failed: Key of type '<NON-STRING>' is not JSON serializable by the 'module_legacy_m2c' profile.``, it indicates that the module that is used in the task does not perform the required key conversion.
670
+
671
+
649
672
Command Line
650
673
============
651
674
@@ -661,7 +684,16 @@ No notable changes
661
684
Modules
662
685
=======
663
686
664
-
No notable changes
687
+
* With the changes to the templating system it is no longer possible to use the ``async_status`` module's ``started`` and ``finished`` integer properties as values in conditionals as booleans are required. It is recommended to use ``started`` and ``finished`` test plugins instead, for example:
- idrac_diagnostics - Issue(285322) - This module doesn't support export of diagnostics file to HTTP and HTTPS share via SOCKS proxy.
786
+
- idrac_firmware - Issue(279282) - This module does not support firmware update using HTTP, HTTPS, and FTP shares with authentication on iDRAC8.
787
+
- ome_smart_fabric_uplink - Issue(186024) - The module supported by OpenManage Enterprise Modular, however it does not allow the creation of multiple uplinks of the same name. If an uplink is created using the same name as an existing uplink, then the existing uplink is modified.
788
+
789
+
Breaking Changes
790
+
----------------
791
+
792
+
vmware.vmware
793
+
~~~~~~~~~~~~~
794
+
795
+
- drop support for ansible 2.15 since it is EOL https://github.com/ansible-collections/vmware.vmware/issues/103
796
+
- updated minimum pyVmomi version to 8.0.3.0.1 https://github.com/ansible-collections/vmware.vmware/issues/56
797
+
798
+
Major Changes
799
+
-------------
800
+
801
+
community.postgresql
802
+
~~~~~~~~~~~~~~~~~~~~
803
+
804
+
- the collection does not test against Python 2 and starts accepting content written in Python 3 since collection version 4.0.0 (https://github.com/ansible-collections/community.postgresql/issues/829).
805
+
806
+
dellemc.openmanage
807
+
~~~~~~~~~~~~~~~~~~
808
+
809
+
- idrac_gather_facts - This role is enhanced to support iDRAC10.
810
+
- idrac_lifecycle_controller_job_status_info - This module is enhanced to support iDRAC10.
811
+
- idrac_system_info - This module is enhanced to support iDRAC10.
812
+
813
+
vmware.vmware
814
+
~~~~~~~~~~~~~
815
+
816
+
- cluster modules - Add identifying information about the cluster managed to the output of cluster modules
817
+
- folder_paths - Throw an error when a relative folder path is provided and the datacenter name is not provided
818
+
- module_utils/argument_spec - make argument specs public so other collections can use them https://github.com/ansible-collections/vmware.vmware/issues/144
819
+
- module_utils/clients - make client utils public so other collections can use them https://github.com/ansible-collections/vmware.vmware/issues/144
820
+
- update query file to include cluster module queries
821
+
822
+
Removed Features
823
+
----------------
824
+
825
+
ansible.windows
826
+
~~~~~~~~~~~~~~~
827
+
828
+
- win_domain - Removed deprecated module, use ``microsoft.ad.domain`` instead
829
+
- win_domain_controller - Removed deprecated module, use ``microsoft.ad.domain_controller`` instead
830
+
- win_domain_membership - Removed deprecated module, use ``microsoft.ad.membership`` instead
831
+
- win_feature - Removed deprecated return value ``restart_needed`` in ``feature_result``, use ``reboot_required`` instead
832
+
- win_updates - Removed deprecated return value ``filtered_reason``, use ``filtered_reasons`` instead
833
+
834
+
community.postgresql
835
+
~~~~~~~~~~~~~~~~~~~~
836
+
837
+
- postgresql_info - the db alias has been removed in ``community.postgresql 4.0.0``. Please use the ``login_db`` option instead (https://github.com/ansible-collections/community.postgresql/issues/801).
838
+
- postgresql_lang - the module has been removed in ``community.postgresql 4.0.0``. Please use the ``community.postgresql.postgresql_ext`` module instead (https://github.com/ansible-collections/community.postgresql/issues/561).
839
+
- postgresql_privs - the ``password`` argument has been removed in ``community.postgresql 4.0.0``. Use the ``login_password`` argument instead (https://github.com/ansible-collections/community.postgresql/issues/408).
840
+
- postgresql_user - the ``priv`` argument has been removed in ``community.postgresql 4.0.0``. Please use the ``community.postgresql.postgresql_privs`` module to grant/revoke privileges instead (https://github.com/ansible-collections/community.postgresql/issues/493).
841
+
842
+
community.windows
843
+
~~~~~~~~~~~~~~~~~
844
+
845
+
- win_domain_computer - Removed deprecated module, use ``microsoft.ad.computer`` instead
846
+
- win_domain_group - Removed deprecated module, use ``microsoft.ad.group`` instead
847
+
- win_domain_group_membership - Removed deprecated module, use ``microsoft.ad.membership`` instead
848
+
- win_domain_object_info - Removed deprecated module, use ``microsoft.ad.object_info`` instead
849
+
- win_domain_ou - Removed deprecated module, use ``microsoft.ad.ou`` instead
850
+
- win_domain_user - Removed deprecated module, use ``microsoft.ad.user`` instead
851
+
- win_lineinfile - Removed deprecated return value ``backup``, use ``backup_file`` instead
852
+
- win_xml - Removed deprecated, and undocumented, return value ``backup``, use ``backup_file`` instead
853
+
854
+
vmware.vmware
855
+
~~~~~~~~~~~~~
856
+
857
+
- vm_list_group_by_clusters - Tombstone module in favor of vmware.vmware.vm_list_group_by_clusters_info
858
+
859
+
Deprecated Features
860
+
-------------------
861
+
862
+
Ansible-core
863
+
~~~~~~~~~~~~
864
+
865
+
- Passing a ``warnings` or ``deprecations`` key to ``exit_json`` or ``fail_json`` is deprecated. Use ``AnsibleModule.warn`` or ``AnsibleModule.deprecate`` instead.
866
+
- plugins - Accessing plugins with ``_``-prefixed filenames without the ``_`` prefix is deprecated.
867
+
868
+
community.postgresql
869
+
~~~~~~~~~~~~~~~~~~~~
870
+
871
+
- postgresql modules = the ``login``, ``unix_socket`` and ``host`` aliases are deprecated and will be removed in ``community.postgresql 5.0.0``, use the ``login_user``, ``login_unix_socket`` and ``login_host`` arguments instead.
872
+
- postgresql_set - the module has been deprecated and will be removed in ``community.postgresql 5.0.0``. Please use the ``community.postgresql.postgresql_alter_system`` module instead (https://github.com/ansible-collections/community.postgresql/issues/823).
873
+
874
+
community.windows
875
+
~~~~~~~~~~~~~~~~~
876
+
877
+
- win_audit_policy_system - Deprecated module and will be redirected to ``ansible.windows.win_audit_policy_system``. Use ``ansible.windows.win_audit_policy_system`` instead as the redirection will be removed in 4.0.0
878
+
- win_audit_rule - Deprecated module and will be redirected to ``ansible.windows.win_audit_rule``. Use ``ansible.windows.win_audit_rule`` instead as the redirection will be removed in 4.0.0
879
+
- win_auto_logon - Deprecated module and will be redirected to ``ansible.windows.win_auto_logon``. Use ``ansible.windows.win_auto_logon`` instead as the redirection will be removed in 4.0.0
880
+
- win_certificate_info - Deprecated module and will be redirected to ``ansible.windows.win_certificate_info``. Use ``ansible.windows.win_certificate_info`` instead as the redirection will be removed in 4.0.0
881
+
- win_computer_description - Deprecated module and will be redirected to ``ansible.windows.win_computer_description``. Use ``ansible.windows.win_computer_description`` instead as the redirection will be removed in 4.0.0
882
+
- win_credential - Deprecated module and will be redirected to ``ansible.windows.win_credential``. Use ``ansible.windows.win_credential`` instead as the redirection will be removed in 4.0.0
883
+
- win_dhcp_lease - Deprecated module and will be redirected to ``ansible.windows.win_dhcp_lease``. Use ``ansible.windows.win_dhcp_lease`` instead as the redirection will be removed in 4.0.0
884
+
- win_dns_record - Deprecated module and will be redirected to ``ansible.windows.win_dns_record``. Use ``ansible.windows.win_dns_record`` instead as the redirection will be removed in 4.0.0
885
+
- win_dns_zone - Deprecated module and will be redirected to ``ansible.windows.win_dns_zone``. Use ``ansible.windows.win_dns_zone`` instead as the redirection will be removed in 4.0.0
886
+
- win_eventlog - Deprecated module and will be redirected to ``ansible.windows.win_eventlog``. Use ``ansible.windows.win_eventlog`` instead as the redirection will be removed in 4.0.0
887
+
- win_feature_info - Deprecated module and will be redirected to ``ansible.windows.win_feature_info``. Use ``ansible.windows.win_feature_info`` instead as the redirection will be removed in 4.0.0
888
+
- win_file_compression - Deprecated module and will be redirected to ``ansible.windows.win_file_compression``. Use ``ansible.windows.win_file_compression`` instead as the redirection will be removed in 4.0.0
889
+
- win_firewall - Deprecated module and will be redirected to ``ansible.windows.win_firewall``. Use ``ansible.windows.win_firewall`` instead as the redirection will be removed in 4.0.0
890
+
- win_hosts - Deprecated module and will be redirected to ``ansible.windows.win_hosts``. Use ``ansible.windows.win_hosts`` instead as the redirection will be removed in 4.0.0
891
+
- win_hotfix - Deprecated module and will be redirected to ``ansible.windows.win_hotfix``. Use ``ansible.windows.win_hotfix`` instead as the redirection will be removed in 4.0.0
892
+
- win_http_proxy - Deprecated module and will be redirected to ``ansible.windows.win_http_proxy``. Use ``ansible.windows.win_http_proxy`` instead as the redirection will be removed in 4.0.0
893
+
- win_iis_virtualdirectory - Deprecated module, use ``microsoft.iis.virtual_directory`` instead as the module will be removed in 4.0.0
894
+
- win_iis_webapplication - Deprecated module, use ``microsoft.iis.web_application`` instead instead as the module will be removed in 4.0.0
895
+
- win_iis_webapppool - Deprecated module, use ``microsoft.iis.web_app_pool`` instead instead as the module will be removed in 4.0.0
896
+
- win_iis_webbinding - Deprecated module, use ``microsoft.iis.website`` instead instead as the module will be removed in 4.0.0
897
+
- win_iis_website - Deprecated module, use ``microsoft.iis.website`` instead instead as the module will be removed in 4.0.0
898
+
- win_inet_proxy - Deprecated module and will be redirected to ``ansible.windows.win_inet_proxy``. Use ``ansible.windows.win_inet_proxy`` instead as the redirection will be removed in 4.0.0
899
+
- win_listen_ports_facts - Deprecated module and will be redirected to ``ansible.windows.win_listen_ports_facts``. Use ``ansible.windows.win_listen_ports_facts`` instead as the redirection will be removed in 4.0.0
900
+
- win_mapped_drive - Deprecated module and will be redirected to ``ansible.windows.win_mapped_drive``. Use ``ansible.windows.win_mapped_drive`` instead as the redirection will be removed in 4.0.0
901
+
- win_product_facts - Deprecated module and will be redirected to ``ansible.windows.win_product_facts``. Use ``ansible.windows.win_product_facts`` instead as the redirection will be removed in 4.0.0
902
+
- win_region - Deprecated module and will be redirected to ``ansible.windows.win_region``. Use ``ansible.windows.win_region`` instead as the redirection will be removed in 4.0.0
903
+
- win_route - Deprecated module and will be redirected to ``ansible.windows.win_route``. Use ``ansible.windows.win_route`` instead as the redirection will be removed in 4.0.0
904
+
- win_timezone - Deprecated module and will be redirected to ``ansible.windows.win_timezone``. Use ``ansible.windows.win_timezone`` instead as the redirection will be removed in 4.0.0
905
+
- win_user_profile - Deprecated module and will be redirected to ``ansible.windows.win_user_profile``. Use ``ansible.windows.win_user_profile`` instead as the redirection will be removed in 4.0.0
0 commit comments