Guidelines for VMware REST module development¶
The Ansible VMware REST collection (on Galaxy, source code repository) is maintained by Red Hat and the community.
Contribution process¶
The modules of the vmware_rest collection are autogenerated by another tool called vmware_rest_code_generator <https://github.com/ansible-collections/vmware_rest_code_generator>.
If you would like to contribute a change, we would appreciate if you:
- submit a Github Pull Request (PR) against the vmware_rest_code_generator project
- but also ensure the generated modules are compliant with our quality criteria.
Requirements¶
You will need:
- Python 3.6 or greater
- the tox <https://tox.readthedocs.io/en/latest/install.html> command
vmware_rest_code_generator¶
Your contribution should follow the coding style of Black <https://github.com/psf/black>. To run the code formatter, just run:
tox -e black
To regenerate the vmware_rest collection, you can use the following commands:
tox -e refresh_modules -- --target-dir ~/.ansible/collections/ansible_collections/vmware/vmware_rest
If you also want to update the EXAMPLE section of the modules, run:
tox -e refresh_examples -- --target-dir ~/.ansible/collections/ansible_collections/vmware/vmware_rest
Testing with ansible-test¶
All the modules are covered by a functional test. The tests are located in the tests/integration/targets/
.
To run the tests, you will need a vcenter instance and an ESXi.
black code formatter¶
We follow the coding style of Black <https://github.com/psf/black>. You can run the code formatter with the following command.
tox -e black
sanity tests¶
Here we use Python 3.8, the minimal version is 3.6.
tox -e black
ansible-test sanity --debug --requirements --local --skip-test future-import-boilerplate --skip-test metaclass-boilerplate --python 3.8 -vvv
integration tests¶
These tests should be run against your test environment.
..warning:: The test suite will delete all the existing DC from your test environment.
First, prepare a configuration file, we call it /tmp/inventory-vmware_rest
in
this example:
[vmware_rest]
localhost ansible_connection=local ansible_python_interpreter=python
[vmware_rest:vars]
vcenter_hostname=vcenter.test
vcenter_username=administrator@vsphere.local
vcenter_password=kLRy|FXwZSHXW0w?Q:sO
esxi1_hostname=esxi1.test
esxi1_username=zuul
esxi1_password=f6QYNi65k05kv8m56
To run the tests, use the following command. You may want to adjust the Python version.
ansible-test network-integration --diff --no-temp-workdir --python 3.8 --inventory /tmp/inventory-vmware_rest zuul/