Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Dev Guide to collection #330

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/docsite/extra-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ sections:
- title: Scenario Guide
toctree:
- guide_vmware_rest
- title: Developer Guide
toctree:
- dev_guide
111 changes: 111 additions & 0 deletions docs/docsite/rst/dev_guide.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
.. _ansible_collections.vmware.vmware_rest.docsite.vmware_rest_devguide:

*********************************************
Guidelines for VMware REST module development
*********************************************

The Ansible VMware REST collection (on `Galaxy <https://galaxy.ansible.com/vmware/vmware_rest>`_, source code `repository <https://github.com/ansible-collections/vmware.vmware_rest>`_) is maintained by Red Hat and the community.

.. contents::
:local:

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:

.. code-block:: shell

tox -e black

To regenerate the vmware_rest collection, you can use the following commands:

.. code-block:: shell

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:

.. code-block:: shell

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.


.. code-block:: shell

tox -e black

sanity tests
^^^^^^^^^^^^

Here we use Python 3.8, the minimal version is 3.6.

.. code-block:: shell

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:

.. code-block:: ini

[vmware_rest]
localhost ansible_connection=local ansible_python_interpreter=python

[vmware_rest:vars]
vcenter_hostname=vcenter.test
[email protected]
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.

.. code-block:: shell

ansible-test network-integration --diff --no-temp-workdir --python 3.8 --inventory /tmp/inventory-vmware_rest zuul/