---
features:
  - |
    In order to implement the tests for plugins which do not maintain the
    ``policy.json`` with full list of the policy rules and provide policy file
    with only their own policy rules, the Patrole should be able to load and
    merge multiple policy files for any of the services.

    - Discovery all policy files for each of the services.
      The updated ``discover_policy_files`` function picks all candidate paths
      found out of the potential paths in the ``[patrole].custom_policy_files``
      config option. Using ``glob.glob()`` function makes it possible to use
      the patterns like '\*.json' to discover the policy files.

    - Loading and merging a data from multiple policy files.
      Patrole loads a data from each of the discovered policy files for a
      service and merge the data from all files.
