diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 00896ec6..c00b2b3f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,6 +4,18 @@ Contributions are welcome, and they are greatly appreciated! Every little bit he Every new feature should be tested and documented. New source plugins or source filters will be evaluated for inclusion in the collection and might be rejected. Please consider the option of creating a new collection for your plugins if it is not a good fit for this collection. +If you are new here, read the [Quick-start development guide first](https://docs.ansible.com/ansible/devel/community/create_pr_quick_start.html). + +## Code of Conduct +The ansible.eda collection follows the Ansible project's [Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html). Please read and familiarize yourself with this document. + +## Submitting Issues +All software has bugs, and the amazon.aws collection is no exception. When you find a bug, you can help tremendously by telling us [about it](https://github.com/ansible/event-driven-ansible/issues/new/choose). + +If you should discover that the bug you're trying to file already exists in an issue, you can help by verifying the behavior of the reported bug with a comment in that issue, or by reporting any additional information + +## Writing New Code + ## Cloning Due to ansible-test own requirements, you must clone the repository into @@ -28,6 +40,19 @@ Pre-commit is now set up to run each time you create a new commit. If you wish t pre-commit run --all ``` +# CI testing + +This collection uses GitHub Actions to run Sanity, Integration and Units to validate its content. + +# Adding tests + +When fixing a bug, first reproduce it by adding a task as reported to a suitable file under the tests/integration/targets//tasks/ directory and run the integration tests as described below. The same is relevant for new features. + +It is not necessary but if you want you can also add unit tests to a suitable file under the tests/units/ directory and run them as described below. + +# Checking your code locally +It will make your and other people's life a bit easier if you run the tests locally and fix all failures before pushing. If you're unable to run the tests locally, please create your PR as a draft to avoid reviewers being added automatically. + ## Running tests for source plugins Running the tests requires `ansible-rulebook` to be installed. Please review the [ansible-rulebook requirements](https://ansible-rulebook.readthedocs.io/en/stable/installation.html#requirements), but do not install `ansible-rulebook` manually. It will be installed via the test requirements. @@ -47,7 +72,7 @@ We recommend setting up a Python virtual environment to install the test depende pip install -r test_requirements.txt -### Sanity and Unit tests +## Sanity and Unit tests Sanity and unity tests can easily be run via tox: @@ -55,7 +80,7 @@ Sanity and unity tests can easily be run via tox: tox -e py ``` -### Integration tests +## Integration tests Integration tests require the addition of [docker](https://docs.docker.com/engine/install/) or [podman](https://podman.io/getting-started/installation). diff --git a/README.md b/README.md index 4a8a0d5c..62f250f8 100644 --- a/README.md +++ b/README.md @@ -2,27 +2,122 @@ This collection contains event source plugins, event filters and example rulebooks to be used with [ansible-rulebook](https://ansible-rulebook.readthedocs.io/en/stable/). - +[![tox](https://github.com/ansible/event-driven-ansible/actions/workflows/tox.yml/badge.svg?event=push)](https://github.com/ansible/event-driven-ansible/actions/workflows/tox.yml) +[![codecov](https://codecov.io/github/ansible/event-driven-ansible/graph/badge.svg?token=XvFwDpezAH)](https://codecov.io/github/ansible/event-driven-ansible) + +## Description + +The primary purpose of this collection is to reduce manual tasks and deliver more efficient mission-critical workflows. By leveraging this collection, organizations can automate a variety of error-prone and time-consuming tasks and respond to changing conditions in any IT domain across IT environments for better agility and resiliency. ## Requirements -* python >= 3.9 -* ansible-core >= 2.15 +### Ansible version compatibility + +Tested with the Ansible Core >= 2.15.0 versions, and the current development version of Ansible. Ansible Core versions before 2.15.0 are not supported. + +### Python version compatibility + +This collection requires Python 3.9 or greater. -## Install +### Additional dependencies -Install the ansible.eda collection with the Ansible Galaxy CLI: +This collection requires ansible-rulebook 1.0.0 or greater. + +## Installation + +The `ansible.eda` collection can be installed with the Ansible Galaxy command-line tool: ```shell ansible-galaxy collection install ansible.eda ``` +You can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format: + +```yaml +--- +collections: + - name: ansible.eda +``` + +Note that if you install any collections from Ansible Galaxy, they will not be upgraded automatically when you upgrade the Ansible package. +To upgrade the collection to the latest available version, run the following command: + +```shell +ansible-galaxy collection install ansible.eda --upgrade +``` + +A specific version of the collection can be installed by using the `version` keyword in the `requirements.yml` file: + +```yaml +--- +collections: + - name: ansible.eda + version: 1.0.0 +``` + +or using the ansible-galaxy command as follows + +```shell +ansible-galaxy collection install ansible.eda:==1.0.0 +``` + The Python module dependencies are not installed by ansible-galaxy. They must be installed manually using pip: ```shell pip install -r requirements.txt ``` +Refer to the following for more details. +* [using Ansible collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details. + +## Use Cases + +You can either call modules, rulebooks and playbooks by their Fully Qualified Collection Name (FQCN), such as ansible.eda.activation, or you can call modules by their short name if you list the ansible.eda collection in the playbook's collections keyword: + +```yaml +--- + - name: Create a rulebook activation + ansible.eda.activation: + name: "Example Activation" + description: "Example Activation description" + project: "Example Project" + rulebook_name: "basic_short.yml" + decision_environment_name: "Example Decision Environment" + enabled: False + awx_token_id: 1 + + - name: Get information about the rulebook activation + ansible.eda.activation_info: + name: "Example Activation" + + - name: Delete rulebook activation + ansible.eda.activation: + name: "Example Activation" + state: absent +``` + ## Contributing -Please refer to the [contributing guide](./CONTRIBUTING.md) for information about how you can contribute to the project. +We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the [Event-Driven Ansible collection repository](https://github.com/ansible/event-driven-ansible). +See [CONTRIBUTING.md](./CONTRIBUTING.md) for more details. + +### More information about contributing + +- [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) - Details on contributing to Ansible +- [Contributing to Collections](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections) - How to check out collection git repositories correctly + +## Release notes + +See the [raw generated changelog](https://github.com/ansible/event-driven-ansible/tree/main/CHANGELOG.rst). + +## Related Information + +- [Ansible Collection Overview](https://github.com/ansible-collections/overview) +- [Ansible User Guide](https://docs.ansible.com/ansible/latest/user_guide/index.html) +- [Ansible Developer Guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html) +- [Ansible Collection Developer Guide](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html) +- [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) + +## License Information + +See [LICENSE](./LICENSE) to see the full text.