BREAKING CHANGES:
* Dropped Python<3.8.
* Dropped API v2 and v3.
* Execution template, template option, periodic task models and API changed a lot. See documentation for more info.
* Hosts and groups count removed from ``/stats/``. Execution and inventory plugins count added instead.
* All API paths containing ``module`` or `playbook` now named ``ansible_module`` or ``ansible_playbook`` accordingly.
* Old ``ci_template`` variable values are not compatible with new which require template option ids. Need to change manually.
* Paths end with ``../set_owner/`` now handles ``PATCH`` method instead of ``POST``. Same for ``/project/{id}/sync/``, ``/history/{id}/cancel/``.
* Import inventory actions now called ``import_inventory``.
* ``plugins`` section renamed to ``execution.plugin`` in ``settings.ini``.
* Database migrations are **potentially dangerous**, it's recommended to make backup before.
* Inventory model now has ``plugin`` field which is required in API.
* Remove ``import_inventory_from_file`` action.
* Rework ``import_inventory`` action.
* Remove ``master_project`` from ``Host``, ``Group`` and ``Inventory`` and remove ``InventoryItems`` abstract model itself.
* Execution plugins now must provide ``compatible_inventory_plugins`` setting. If not provided this is understood that execution plugin is incompatible with any inventory.
* Execution plugins now should be imported from ``polemarch.plugins.execution`` module instead of ``polemarch.plugins``.
* Execution plugin's ``get_execution_data`` now returns command and env vars only. For ``raw_inventory`` there is ``get_raw_inventory`` method.
Changelog:
* Feature(backend): Send history output to multiple places.
* Feature(backend): Create ``POLEMARCH_DB``, ``ANSIBLE_STRING`` and ``ANSIBLE_FILE`` plugins which are handle inventory data structure and processing. Plugins may work with state or db and may support import or not.
* Feature(backend): Hide hosts db stuff for state handled plugins and state action for db handled plugins.
* Feature(backend): Option ``compatible_inventory_plugins`` is dictionary of field names and tuple of plugin names.
* Feature(backend): Make ``get_pre_commands`` hook for execution plugins.
* Feature(backend): Allow to save multiple commands in history instance.
* Feature(backend): Create ``DynamicPluginField`` to allow inventory plugin have ``to_representation``, ``to_internal`` etc.
* Feature(frontend): Add inventory plugins counter to dashboard.
* Feature(frontend): Support ``filters`` by ``InventoryAutoCompletionField`` field and filter supported plugins in execute actions.
* Feature(frontend): Display execution args as fields in history page.
* Fix(backend): Deleting template options when inventory removes doesn't work with postgres.
* Fix(backend): Always save revision to history instead of branch.
* Fix(backend): Make ``import_inventory`` action atomic.
* Fix(backend): ``import_inventory`` creates state for inventory if it's state managed.
* Fix(backend): Remove patch method from inventory state edit action because it resets data if no data sent.
* Fix(docs): RTD build with new Python version.
* Chore(backend): Test execution plugins.
* Chore(backend): Bump vstutils version to 5.4.0.
* Chore(frontend): Update frontend dependencies.
* Chore(docs): Update execution plugins doc according to changes.
* Chore(docs): Update information with latest changes of vstutils.
* Refactor(backend): Rewrite all views using ``create_view``, ``SimpleAction``, ``Action``, ``EmptyAction`` where possible.
* Refactor(backend): Refactor plugin executions so ``CELERY_TASK_SERIALIZER='json'`` now can be used.
* Refactor(backend): Create ``ExecutionTemplate`` (instead of `Template`), ``ExecutionTemplateOption`` (instead of ``TemplateOption``),
``TemplatePeriodicTask`` (instead of ``PeriodicTask``) models.
* Refactor(backend): Add support for parsing new template format in ``.polemarch.yaml``, make old format deprecated.
* Refactor(backend): Remove unnecessary frontend code, such as setting ``hideNotRequired = true``, as it can be done now on backend.
* Refactor(backend): Removed ``set_inventory_field`` openapi hook.
* Refactor(backend): Move inventory rendering logic to plugins.
* Refactor(backend): Move inventory import logic to plugins.
* Refactor(backend): Move history and execution plugins to ``polemarch.plugins`` package.
* Refactoring(backend): Execute and template option create actions now validates all fields related to ``Inventory`` instead of just ``inventory`` field.
* Docs: Update GUI workflow docs screenshots.
* Docs: Add manual for creating inventory plugins.
* Docs: Add GUI workflow docs for ``ANSIBLE_STRING`` and ``ANSIBLE_FILE`` inventories.
* Service: Use ``django.core.cache.backends.redis.RedisCache`` instead of ``django_redis.cache.RedisCache``.