- Oct 07, 2022
-
-
Jakob Meng authored
Dropped stack status checks for CREATE_COMPLETE and UPDATE_\ COMPLETE and instead pass wait=True to openstacksdk's create_stack() and update_stack() calls because those will call event_utils.\ poll_for_events() which garantees that stack has reached those states when they return [1],[2]. Check for duplicate keys in parameters which already have been defined by regular module attributes. Raise an error to warn users that they tried to overwrite parameters which they already specified with module attributes. Renamed stack's module attribute 'tag' to 'tags' to match both openstacksdk and OpenStack API and clarify that more than a single tag can be specified. Added 'tag' as an alias to keep backward compatibility. Actually pass the 'tags' aka 'tag' attribute to stack create and update functions of the openstacksdk which was lost in [3]. Added tags to integration tests. Sorted argument specs and documentation of the stack module and marked attributes which are not updatable. Dropped condition from self.conn.delete_stack() because the latter will only return False when a stack could not be found which we already. self.conn.delete_stack() will raise an exception when stack deletion fails. Renamed ci integration tests from 'orchestration' to 'stack' in order to match module name and adapted tags accordingly. Fixed and enabled ci integration tests for stack and stack_info modules. Dropped 'stack_name' from module return values in RETURN docstring and ci integration tests because openstacksdk not return this attribute. [1] https://opendev.org/openstack/openstacksdk/src/commit/9b1c4333526862d0edfc8e5f7bd421b0065b06db/openstack/cloud/_orchestration.py#L92 [2] https://opendev.org/openstack/openstacksdk/src/commit/9b1c4333526862d0edfc8e5f7bd421b0065b06db/openstack/cloud/_orchestration.py#L148 [3] https://opendev.org/openstack/ansible-collections-openstack/commit/af79857bfb9f391e43eaab0f0c94d8c2b7b74c86 Change-Id: I4ace6012112bbcce9094353e27eb4066cf25f229
-
- Oct 06, 2022
-
-
Jakob Meng authored
openstacksdk's get_server() [1] calls add_server_interfaces() [2] which queries OpenStack APIs several times to get all ports and floating ips attached to a server. Now we call openstacksdk's compute.find_server() [3] and compute.\ get_server() [4] which result in two API calls, in order to fill server['addresses'] attribute which we later use to get floating ip addresses attached to the server. Do an extra call to compute.get_server() in order to return a pristine server resource, because openstacksdk's create_server() might call meta.add_server_interfaces() which alters server attributes such as server['addresses'] [5]. Fail if options 'auto_ip', 'floating_ips' or 'floating_ip_pools' are specified but 'wait' is not set to true, because openstacksdk will add floating ip addresses only if we wait until the server has been created [6]. This conditional fail will help users to not shoot their foot. Marked floating ip support unstable in this module due to various unresolved issues in openstacksdk's add_ips_to_server() function such as [9] and [10]. For Zuul CI job ansible-collections-openstack-functional-devstack-\ releases to pass, the minimum required openstacksdk release must be 0.101.0 because [7],[8] are available since that release only. [1] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/cloud/_compute.py#L484 [2] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/cloud/meta.py#L439 [3] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/compute/v2/_proxy.py#L652 [4] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/compute/v2/_proxy.py#L666 [5] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/cloud/_compute.py#L942 [6] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/cloud/_compute.py#L945 [7] https://review.opendev.org/c/openstack/openstacksdk/+/851976 [8] https://github.com/openstack/openstacksdk/commit/0ded7ac398843b6b1ce46668eb3b45ce02628428 [9] https://storyboard.openstack.org/#!/story/2010352 [10] https://storyboard.openstack.org/#!/story/2010153 Change-Id: I6a5663433b1b9529f99d5eced22a28c692a1d288
-
Rafael Castillo authored
Add a test role to validate module functionality Replace calls to the sdk cloud layer to use the proxy layer. Update module parameters to use names matching the sdk. Keep aliases for old values. Remove _scrub_results, no longer necessary with proxy layer. Move check mode outside of main flow to keep the module readable. Refactor code to handle fields that should be ignored. Simplify return value from _system_state_change_details. Inline calls to fetch existing quotas. Remove metaprogramming calls to cloud layer methods, as the proxy layer doesn't have the same consistent API. Remove handling for case where neutron throws exception when unsetting quotas that aren't set. This is validated in the test role. Ensure return values are dicts. Replace exception handler with conditionals which allows us to drop the dependency on keystoneauth1 library and is much more correct than catching all exceptions and always printing the same error even on unrelated exceptions. Story: 2010099 Task: 45654 Change-Id: I5eda8e476a4e779382e6c63f5982504d5951501d
-
- Sep 30, 2022
-
-
Jakob Meng authored
Story: 2010337 Task: 46470 Change-Id: Ieb624b76627b5127d7a6c4d95233bbd5c2f16182 (cherry picked from commit e8bba38e2e78b0352f4ce5a93b8ebb43ce7714ed)
-
Jakob Meng authored
We require openstacksdk>=0.99.0 for this collection but we do not specify versions in module requirements. We probably should do so, but then consistently across all modules and plugins. Change-Id: If3d8cd1491266e3332f478267fc41771f280b9a8
-
- Sep 27, 2022
-
-
anbanerj authored
Change-Id: Iec99be0f422f1fab9b17e581b7b47a7540de749c
-
- Sep 23, 2022
-
-
Jakob Meng authored
Sem-Ver: api-break Ref.: https://docs.openstack.org/pbr/latest/user/features.html#version Change-Id: Id0d5e5b389b3d2c194ff46ce91c3fe2e98e03c73
-
- Sep 22, 2022
-
-
Rafael Castillo authored
Currently, our tripleo periodic jobs are failing, while our check jobs are passing. This is because build-test-packages is not building the tip of master version of the collections, instead using the version built in rdo. This patch explicitly adds ansible-collection-openstack to the change list so it always gets picked up by build-test-packages. Change-Id: I6938c8373872daed8632429df42d20396980bc76
-
Jakob Meng authored
Latest release candidate 0.101.0 of openstacksdk's first major release brings new features and bug fixes, e.g. for floating ips [1], [2]. [1] https://review.opendev.org/c/openstack/openstacksdk/+/851976 [2] https://github.com/openstack/openstacksdk/commit/0ded7ac398843b6b1ce46668eb3b45ce02628428 Change-Id: I4f63e9edab19ba25918513b8c89fcd62913ae75a
-
- Sep 21, 2022
-
-
Jakob Meng authored
The network module does support updates since Will's patch [1]. [1] https://review.opendev.org/c/openstack/ansible-collections-openstack/+/854170 Story: 2010024 Task: 45262 Change-Id: I9e4af2c6e685686e28e7f2ae56a615529a6d7b59
-
Zuul authored
-
Arx Cruz authored
Updating address scope module to use proxy layer and new openstacksdk Change-Id: I4763e22e7ad9174e23aa2030f63f7535006399a0
-
Arx Cruz authored
Change-Id: I5dae772622eb47822c4c0e0681a1d344fa9ef16a
-
anbanerj authored
- Changed get_security_group_rule to find_security_group_rule as get_security_group_rule throws an exception if the rule is not found - Updated docs - Updated tests - Renamed ethertype to ether_type to match openstacksdk's attribute names and added the former as an alias to keep backward compat - Renamed rule to id to match openstacksdk's attribute names and added the former as an alias to keep backward compat Change-Id: Ieb99f875c990e11623c81e482013d0ecb8e61055
-
- Sep 20, 2022
-
-
Will Szumski authored
Neutron will allow you to update certain properties of the network after creation. This change modifies the ansible code to perform an update call if it detects that any updatable properties have been changed. If you attempt to change a property that cannot be updated, the module will fail. This gives you confidence that the ansible configuration matches the state of the network in OpenStack. If we did not fail in this way, you might think you have updated the network, but in reality those changes would be silently ignored. Prior to this change, the only way to update properties of a network was to delete it and then recreate. Story: 2010024 Task: 45262 Change-Id: I4af2b50f207f349b58c63e0a4e92816ada0847fd
-
- Sep 09, 2022
-
-
Sagi Shnaidman authored
Use Python 3.10 on Ubuntu 22.04 LTS (Jammy Jellyfish) for Ansible 2.14 branch, since it supports Python from 3.9 now. https://docs.ansible.com/ansible/devel/roadmap/ROADMAP_2_14.html Change-Id: Ib20feb82729fe0b641aafa9c8b92060b1d85f9c9
-
- Sep 07, 2022
-
-
Jakob Meng authored
Previously, openstack.cloud.keypair would remove trailing spaces after reading a public key from a file. The openstack cli tool, python-\ openstackclient, does not do so, i.e. it does not use rstrip to remove spaces at the end [1]. This breaks idempotency when using openstack cli tool and our keypair module at the same time. The rstrip code was introduced to keypair when our modules were still part of ansible (non-core) in a completely unrelated change [2]. Now, keypair module does no longer alter the public key and instead uploads it unchanged to OpenStack API. [1] https://opendev.org/openstack/python-openstackclient/src/commit/7df94c9f821aa7fabef09cad9e6ab16ed66d46b6/openstackclient/compute/v2/keypair.py#L103 [2] https://github.com/ansible/ansible/commit/341efbf7ae078d9818b17036af5ccfed277db52d Story: 2008574 Task: 41726 Change-Id: Ia09658467d98516ca1ea612e7301629b2f69d2d1
-
Sagi Shnaidman authored
include_vars works on the controller only, use loading facts to get variables from galaxy.yml Change-Id: Idf45354650dea93bd8bdbfa9fa2ba52abda93cc0 (cherry picked from commit 39bb4909ee3a9418f60ff66d7496ed1f8259972d)
-
Arx Cruz authored
Update keypair module to new openstacksdk Change-Id: I8f29d983b176e83fbca1919be34a86fe4756aa5e
-
- Aug 28, 2022
-
-
Travis Holton authored
* Pass option as true if present * False if not present Change-Id: I44eaa8ee99386fdbd5020b36711b13b17db29b7b
-
- Aug 22, 2022
-
-
Jakob Meng authored
Across our modules we use the None values to mark default values for module attributes. This is in line with openstacksdk's behaviour. Change-Id: I5920aeeb8eef2ee1c2066a71a273ba52f02305c3
-
- Aug 16, 2022
-
-
Jakob Meng authored
Change-Id: I0d3d749b2f5b3474028c83c582c4fd7d1f07687d
-
Arx Cruz authored
Update federation_idp to use proxy layer Change-Id: I89ed8526c15608a043cc98e0de50a1ef6f1c8020
-
- Aug 11, 2022
-
-
Rafael Castillo authored
Switch sdk calls to use the proxy layer where sensible. Ensure that returned resource objects are converted to dicts. Removes undocumented id return value. Rename flavorid to id. Keep flavorid as an alias for backward compatibility. Rename the test role from nova_flavor to compute_flavor to keep naming consistent. Fold tests from compute_flavor_info into the compute_flavor role. Add additional tests to improve coverage. Update return docs Change-Id: I5419d1c02b9b50625beb3bff88c8e4a4f1c14667
-
Jakob Meng authored
routers_info's interfaces_info attribute is not provided by openstacksdk, it is added to each router resource by the routers_info module after retrieving the routers list. To get the required data list_router_interfaces() [1] is being called for each router resource which then retrieves all ports for each router. This requires extra api calls which might be useless because we do not know whether the user actually cares about the ports. For getting ports of a router we have the openstack.cloud.ports module. So instead of proactively retrieving the router ports we drop the interfaces_info attribute. The interfaces_info attribute was introduced because retrieving interfaces via openstacksdk and openstack.cloud modules was complex in the past [2]. Nowadays, using openstack.cloud.ports Ansible and Jinja2 filters retrieving ip addresses of a router is straight forward. In case someone still needs the old interfaces_info attribute, one can refer to the module example to see how it could be reproduced. But in general, retrieving the router interfaces is much easier as can be seen in the updated integration tests. [1] https://opendev.org/openstack/openstacksdk/src/commit/3f81d0001dd994cde990d38f6e2671ee0694d7d5/openstack/cloud/_network.py#L1926 [2] https://review.opendev.org/c/openstack/ansible-collections-openstack/+/703927/6/plugins/modules/os_routers_info.py Change-Id: I7fbdf11d07c95421d3aee800bfeebb88ea829817
-
- Aug 10, 2022
-
-
Rafael Castillo authored
Replace calls to the sdk cloud layer with proxy layer calls where appropriate. Ensure module return values are converted into dict. General refactoring to bring module more in line with collection conventions. Expand tests to assert idempotency and presence of return values. Rename test role to identity_group to match module name. Change-Id: I06fe28f77431bb151d85c8d9cd924a1634d85d98
-
- Aug 08, 2022
-
-
Jakob Meng authored
Define port's module attribute 'name' as a required attribute because this parameter is used to find, update and delete ports. Technically, a name is not required to create a port, but idempotency cannot be implemented without an identifier to refer to a port. In this collection we use resource names to find and identify resources. We do not offer a dedicated id attribute in most modules. Use port's module attribute 'network' when finding, creating, updating or deleting ports if the user provided this attribute. This allows to reduce ambiguity when equal names are used across different networks. Added 'description' parameter to port module. Renamed port's module attributes 'vnic_type' to 'binding_vnic_type' and 'admin_state_up' to 'is_admin_state_up' to match openstacksdk's attribute names which are used e.g. in module results. Added aliases for the old attribute names to keep backward compatibility. Renamed port_info's module attribute 'port' to 'name' and added the former as an alias to be consistent with other *_info modules. Dropped default=None and required=False from argument_spec of port module because those are the default in Ansible [1][2]. Dropped 'id' field from port module's results to be consistent across other modules. Use 'port.id' instead. Sorted argument specs and documentation of the port module and marked attributes which are not updatable. Updated RETURN fields documentation for the module results of both port and port_info modules. Added integration tests to check the update mechanism of the port module. Added assertions for module results to catch future changes in the openstacksdk and our Ansible modules. Dropped openstacksdk version check since we require a recent release anyway. Fixed indentation in integration tests. Merged integration tests of port_info module into port module, because the former does not create any ports and assumes that ports have been created earlier. [1] https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_documenting.html [2] https://github.com/ansible/ansible/blob/61af59c8082cff068424d1012271daa0aac97288/lib/ansible/module_utils/common/parameters.py#L489 Signed-off-by:
Jakob Meng <code@jakobmeng.de> Change-Id: Iacca78649f8e01ae95649d8d462f5d0a1740405e
-
Arx Cruz authored
This patch update federation_idp_info to use proxy layer as well as add the ansible role to test the module Change-Id: I6b4544cca317f2d5fab4a9612b820872b87585f4
-
- Aug 03, 2022
-
-
Jakob Meng authored
Expanded and fixed module results docs. Moved ext_ips_spec into the module class because global scope is not necessary. Renamed it to external_fixed_ips_spec to explain its purpose. Sorted argument_spec and attribute docs by attribute name and fixed indentations. Marked router attributes which cannot be updated. Mark network attribute as required by enable_snat and external_fixed_ips attributes. Fixed docstring of network attribute: Module attribute interfaces does not require the network attribute, its external_fixed_ips what requires network to be set. Changed examples from deprecated ip to current ip_address attribute. Dropped self.fail() calls and let openstacksdk handle missing networks, subnets.. instead because less code means less code to maintain. Limited line length to 80 chars to be consistent with other OpenStack projects. Personally, I prefer a 120 chars limit but consistency is more important. Added explanation in code comment why we cannot update a router's name. Moved upfront cleanup operations in router's integration tests to the beginning of the role. Assigned meaningful names to result variables in router's ci role to easily identify which modules produced the data. Added tests for router ids, admin state and interfaces. Change-Id: Icae77a43479fb4f0bae065d1c5d7942cb0f5fd6b
-
- Aug 02, 2022
-
-
Rafael Castillo authored
Refactors the module to be based off OpenstackModule. Changes sdk calls to use the proxy layer where appropriate. The inspection itself stays at the cloud layer to support waiting. Make sure we convert returned resource objects to dict Adds a barebones role to test the module. This won't run in CI, since we don't have the ironic plugin configured in devstack. Changes the return value of the module to be the entire node, instead of just the properties that resulted from inspection. Return docs were updated to reflect this. Update module params to use `name` as the identifier for the node, aliasing it to the previous supported values of `id` and `uuid`. Use module kwargs to specify mutually exclusive params. Stop catching exceptions and instead let them bubble up so ansible handles them. Change-Id: I2b07b58c8b068d7f18db9862fcecb4088328ac74
-
- Aug 01, 2022
-
-
Jakob Meng authored
assert [1] is a Python keyword hence Flake8 raised an error: "E275 missing whitespace after keyword" [2]. [1] https://docs.python.org/3/reference/lexical_analysis.html#keywords [2] https://www.flake8rules.com/rules/E275.html Change-Id: I76bbe10b850c38a3fbb38c4a2f5ee17ca5b91b4e
-
- Jul 28, 2022
-
-
Jakob Meng authored
Allow to update server attributes such as its description. Changed default value of server attribute 'security_groups' from ['default'] to [] because the latter is the default in python-openstackclient [1] and the former behavior causes issues with existing servers [2]: Previously, when no 'security_groups' parameter was given, the server module would change existing servers to use the default security group, dropping all other security groups assigned to the server. Our (undocumented) guideline when writing modules is to only add or change what has been requested by the user and to stick to defaults from openstacksdk and python-openstackclient whenever possible. Since we have to break backward compatibility with the next release anyway, we take this opportunity to clean up this odd behavior. Now, when no security groups are given, then security groups of an existing server will not be touched. Closes story #2007893 [2]. Note, Nova will create a server in the default security group, if the security_groups parameter is omitted. Dropped 'openstack' field from server module's results. This variable expanded to additional server information which might be useful for Ansible inventories and was filled from openstacksdk's get_openstack_vars() function [3]. Variables in this function can make additional cloud queries to retrieve additional data, so calling this function can be expensive [4]. Users can use *_info modules to retrieve this data on-demand. Dropped 'availabity_zone' attribute from generic OpenStackModule arguments and inserted it into server and volume modules because it is relevant to those two modules only. This is completes what was started years ago [5] and is possible now since we have breaking changes anyway. Switched attribute name 'userdata' with its alias 'user_data' to match openstacksdk's attribute names which are used e.g. in module results. The previous attribute name 'userdata' is now used as an alias and 'user_data' is used as the attribute name to keep backward compatibility. Wait for server to get into 'ACTIVE' state when creating a server and attribute 'wait' has been set to true. Sorted argument specs and documentation of the server module and marked attributes which are not updatable. Changed unstable bash script example in server module documentation. Renamed server's module attribute 'delete_fip' to 'delete_ips' to match openstacksdk and clarify that it includes all floating ip addresses of the server. Renamed server_info's module attribute 'server' to 'name' and added the former as an alias to be consistent with other *_info modules. Added RETURN fields documentation for the module results of both server and server_info modules. Added description and examples of how to use the 'filters' attribute of the server_info module. Closes story #2007873 [6]. Removed 'openstack_' prefix from module results because the prefix is not consistently used across modules, is more to type without any benefit and removal of the prefix allows us to signal to users that their code for handling module results has to be updated. Many modules have different return values with openstacksdk >= 0.99.0 because it consistently uses resource proxies now. Added assertions for module results to catch future changes in the openstacksdk and our Ansible modules. Added integration tests to check the update mechanism of the server module. Fixed indentation in integration tests. Ensure proper creation and deletion of resources such as networks, subnets and servers in integration tests of server_action module. Renamed ci/roles/server/defaults/main.yaml to main.yml, removing the 'a' in the file extension to be consistent with other filenames. Dropped deprecated function openstack_find_nova_addresses() and incorporated its code directly into the server module because it is not used anywhere else. [1] https://opendev.org/openstack/python-openstackclient/src/commit/e49ad1795b9dd57d5a82fb6f8f365fa20041cf29/openstackclient/compute/v2/server.py#L1070 [2] https://storyboard.openstack.org/#!/story/2007893 [3] https://opendev.org/openstack/openstacksdk/src/commit/9e9fc9879583943a08f854980cca5dfb3a5832f7/openstack/cloud/_compute.py#L1772 [4] https://opendev.org/openstack/openstacksdk/src/commit/9e9fc9879583943a08f854980cca5dfb3a5832f7/openstack/cloud/meta.py#L482 [5] https://github.com/ansible/ansible/commit/9bf33e56dd49e9478ba091a1ba12d17b7caeac24 [6] https://storyboard.openstack.org/#!/story/2007873 Signed-off-by:
Jakob Meng <code@jakobmeng.de> Change-Id: I2f955519a7e8c782b1dab8f94f7a019ed384b81d
-
Rafael Castillo authored
- Change sdk calls to use proxies - Convert return values to - Update module docs - Change argspec to more closely match the new sdk (and therefore the API) without breaking backward compatibility Change-Id: I0f9bc573fd0c69cab65bd808145d628732bb0830
-
Jakob Meng authored
Be consistent with Ansible docs [1], [2], [3]. [1] https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_documenting.html [2] https://docs.ansible.com/ansible-core/devel/dev_guide/testing/sanity/shebang.html [3] https://github.com/ansible/ansible/blob/b86a18bd273499f5d10e581821a47571690660e1/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py Change-Id: Ia3976bb3fcca662cefa219edeef057bcb7143c01
-
- Jul 27, 2022
-
-
Sagi Shnaidman authored
distutils is deprecated in 3.10: https://peps.python.org/pep-0632/ Ansible requires it to be replaced[1] [1] https://github.com/ansible-community/community-topics/issues/96 https://github.com/ansible-collections/news-for-maintainers/issues/18 Change-Id: I2bae37f206319e8f9ace468f5b94f6be643b6a3c
-
Jakob Meng authored
Removed default=None, type='str' and required=False from all module's argument_specs with sed -i \ -e 's/default=None, //g' \ -e 's/default=None,//g' \ -e 's/default=None//g' \ -e "s/type='str', //g" \ -e "s/type='str',//g" \ -e "s/type='str'//g" \ -e 's/required=False, //g' \ -e 's/required=False,//g' \ -e 's/required=False//g' \ plugins/modules/*.py plugins/module_utils/*.py and manually cleaned the results because those options values are the default in Ansible. Ref.: https://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html#argument-spec Change-Id: Icbc3bb84269d3b8205fac259300902ebdaf6a3ae
-
- Jul 25, 2022
-
-
Jakob Meng authored
Bifrost downgrades openstacksdk to a release <0.99.0 [1], which is incompatible to our master branch of the Ansible OpenStack collection. By adding openstacksdk to Zuul variable job.required-\ projects [2], Bifrost will install openstacksdk from its master branch, overwriting any existing (older) openstacksdk releases. [1] https://opendev.org/openstack/bifrost/commit/03ddd026567f7b61b89d83b0e7e7cb35ed466ae6 [2] https://review.opendev.org/c/openstack/bifrost/+/849563/5/playbooks/test-bifrost.yaml Change-Id: I46dadc70338bb45d459e8176cc26e67c20c1d4ae
-
- Jul 22, 2022
-
-
Dmitry Tantsur authored
Change-Id: Ia9fbc5b136347145d1a7ddc2d874f014c06558ae
-
Jakob Meng authored
With Ansible OpenStack collection 2.0.0 we break backward compatibility to older releases, mainly due to breaking changes coming with openstacksdk >=0.99.0. For example, results will change for most Ansible modules in this collection. We take this opportunity to drop the symbolic links with prefix os_ in plugins/modules and the plugin routing in meta/runtime.yml. This means users have to call modules of the Ansible OpenStack collection using their FQCN (Fully Qualified Collection Name) such as openstack.cloud.server. Short module names such as os_server will now raise an Ansible error. This also decreases the likelihood of incompatible Ansible code going undetected. Symbolic links were introduced to keep our collection backward compatible to user code which was written for old(er) Ansible releases which did not have support for collections and where OpenStack modules where named with a prefix os_ such as os_server which is nowadays known and stored as openstack.cloud.server. In Ansible aka ansible-base 2.10, a internal routing table lib/ansible/config/ansible_builtin_runtime.yml [1] was introduced which Ansible uses to resolve deprecated module names missing the FQCN (Fully Qualified Collection Name). Additionally, collections can define their own plugin routing table in meta/runtime.yml [2] which we did. In ansible-base 2.10 and ansible-core 2.11 or later, if a user uses a short module name and the collections keyword is not used, Ansible will first look in the internal routing table, get an FQCN, and then looks in the collection for that FQCN. If there is another routing entry for that new name in that collection's meta/runtime.yml, Ansible will continue with that redirect. If it does not find another redirect, Ansible will look for the plugin itself, so it will not find a redirect in the collection before looking at its internal redirects. Except if the user uses a FQCN, then it looks directly in that collection. Ansible 2.9 and 2.8 do not have any notion of these redirects with a plugin routing table, backward compatibility with deprecated os_* module names is solely achieved with symbolic links. Ansible releases older than 2.11 are EOL [3], so usage of os_* symlinks should reduce soon. [1] https://github.com/ansible/ansible/blob/devel/lib/ansible/config/ansible_builtin_runtime.yml [2] https://github.com/openstack/ansible-collections-openstack/blob/master/meta/runtime.yml [3] https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html Change-Id: I28cc05c95419b72552899c926721eb87fb6f0868
-
- Jul 21, 2022
-
-
Dmitry Tantsur authored
openstacksdk will start using cleaning in 1.0.0 [1], so we need to be able to wait for it to finish. [1] https://review.opendev.org/c/openstack/openstacksdk/+/849402 Change-Id: I9695b1a5acfa007ad474c9b5b07a4fdb4c1b1198
-