The Cloudify Community Github organization is the home of all user-submitted assets. This includes example-blueprints and plugins.
All example blueprints should be submitted in a PR to the example-blueprints repository. See that repo's README for more information.
Each community-submitted plugin should have its own unique repository in the cloudify-community Github organization.
To submit a new plugin, send an email to [email protected] with the following information:
- Tell us about yourself and your project and if you have permission to distribute the project.
- A link to your plugin's Github repository.
Please be sure to follow the plugin development best practices and these conventions:
- Naming: The plugin repository name should start with the prefix
cloudify-
and end with the suffix-plugin
, for example,cloudify-kubernetes-plugin
. - Documentation: Each repo's root directory should contain a README.md with the following sections:
- Summary of the plugin's purpose.
- Prerequisites
- Tested Version (Most recent Cloudify version must be among them.)
- Complete
install
anduninstall
instructions - Additional workflows, for example any supported
execute_operation
workflows, or custom workflows likerolling_upgrade
.
- Directory Structure: The plugin directory structure should conform to that of standard Python projects, with the addition of a plugin YAML:
- ./
- ./setup.py
- ./my_package
- ./my_package/__init__.py
- ./my_package/my_module.py
- ./plugin.yaml
- ./README.md
- ./
Community-submitted plugins are not required to have tests. However, we highly recommend it as performance of tested plugins is much higher as is adoption within the community. For help with testing, we have the following resources:
- See cloudify-plugin-template: A non-functional plugin template that includes example tests.
- See cloudify-ecosystem-tests: A simple framework for testing plugins and blueprints.
- See cloudify-manager-integration-tests: A base class for testing current code on a Cloudify Manager.
Note: We encourage you to check your plugin against a Python Linter like flake8 or pep8.
The cloudify-kubernetes-plugin is an example of a good plugin.
To learn how to write a plugin, see also the read me of this (non-functional) example requests plugin.