2019-05-16 16:05:12 +02:00
.. _OpenStack_module_development:
2015-06-11 02:29:28 +02:00
OpenStack Ansible Modules
=========================
These are a set of modules for interacting with OpenStack as either an admin
2019-05-16 16:05:12 +02:00
or an end user. If the module does not begin with `` os_ `` , it's either deprecated
2015-06-11 02:29:28 +02:00
or soon to be. This document serves as developer coding guidelines for
modules intended to be here.
2019-05-16 16:05:12 +02:00
.. contents ::
:local:
2015-06-11 02:29:28 +02:00
Naming
------
2019-05-16 16:05:12 +02:00
* All module names should start with `` os_ ``
* Name any module that a cloud consumer would expect to use after the logical resource it manages: `` os_server `` not `` os_nova `` . This naming convention acknowledges that the end user does not care which service manages the resource - that is a deployment detail. For example cloud consumers may not know whether their floating IPs are managed by Nova or Neutron.
* Name any module that a cloud admin would expect to use with the service and the resource: `` os_keystone_domain `` .
2015-06-11 02:29:28 +02:00
* If the module is one that a cloud admin and a cloud consumer could both use,
the cloud consumer rules apply.
2015-06-17 11:24:08 +02:00
Interface
---------
* If the resource being managed has an id, it should be returned.
* If the resource being managed has an associated object more complex than
an id, it should also be returned.
2015-06-11 02:29:28 +02:00
Interoperability
----------------
* It should be assumed that the cloud consumer does not know a bazillion
details about the deployment choices their cloud provider made, and a best
2019-05-16 16:05:12 +02:00
effort should be made to present one sane interface to the Ansible user
2015-06-11 02:29:28 +02:00
regardless of deployer insanity.
* All modules should work appropriately against all existing known public
OpenStack clouds.
* It should be assumed that a user may have more than one cloud account that
2019-05-16 16:05:12 +02:00
they wish to combine as part of a single Ansible-managed infrastructure.
2015-06-11 02:29:28 +02:00
Libraries
---------
2019-05-16 16:05:12 +02:00
* All modules should use `` openstack_full_argument_spec `` to pick up the
2015-06-11 02:29:28 +02:00
standard input such as auth and ssl support.
2019-05-16 16:05:12 +02:00
* All modules should include `` extends_documentation_fragment: openstack `` .
2015-06-11 02:29:28 +02:00
* All complex cloud interaction or interoperability code should be housed in
2019-05-16 16:05:12 +02:00
the `openstacksdk <http://git.openstack.org/cgit/openstack/openstacksdk> `_
2018-05-26 03:40:39 +02:00
library.
2018-10-30 21:29:11 +01:00
* All OpenStack API interactions should happen via the openstacksdk and not via
2015-06-11 02:29:28 +02:00
OpenStack Client libraries. The OpenStack Client libraries do no have end
2018-10-30 21:29:11 +01:00
users as a primary audience, they are for intra-server communication.
2016-11-18 15:51:28 +01:00
Testing
-------
2019-05-16 16:05:12 +02:00
* Integration testing is currently done in `OpenStack's CI system <https://git.openstack.org/cgit/openstack/openstacksdk/tree/openstack/tests/ansible> `_
2018-10-30 21:29:11 +01:00
* Testing in openstacksdk produces an obvious chicken-and-egg scenario. Work is under
2016-11-18 15:51:28 +01:00
way to trigger from and report on PRs directly.