Configerator Config Source Plugin
The ConfigeratorConfigSource plugin makes it possible for Hydra applications to consume a domain of configs from configerator.
Dependencyβ
Add the following to your TARGET
file
//fair_infra/fbcode_hydra_plugins/configerator_config_source:configerator_config_source
Usageβ
- The Configerator Config Source plugin requires that you place the configs under a domain. You can find an example domain here
important
Due to the limitations of Configerator APIs, matching the name of your domain and directory of configs is necessary for the plugin to extract information on the full config names.
For example, the config paths returned by Configerator API could look like fair_infra/hydra_plugins/configerator_config_source/example/db/mysql
. The plugin needs to know where the directory of configs begins (example
), in order to determine the full config name (db/mysql
). So in this case the domain should be named example.cconf
- Create a SearchPathPlugin to add the Configerator path to the list of search paths. The path you add in your SearchPathPlugin should be the name of your domain of configs, such as in this example SearchPathPlugin
info
Adding a new search path will become much easier once #274 is resolved, which is planned for Hydra 1.1.
Example:β
Example SearchPathPluginβ
ConfigeratorExampleSearchPathPlugin
adds the example configerator domain to the search path of the example applications.
Reading primary config from configeratorβ
This example reads its primary config from configerator here which has a default list defined.
$ buck run //fair_infra/fbcode_hydra_plugins/configerator_config_source/example/primary_config:my_app
...
Parsing buck files: finished in 1.1 sec
...
{'driver': 'mysql', 'user': 'alau'}
Compose config with configeratorβ
This example reads its primary config from local yaml file primary_config.yaml
but reads config groups info from configerator.
$ buck run //fair_infra/fbcode_hydra_plugins/configerator_config_source/example/config_group:my_app -- +db=mysql
...
Parsing buck files: finished in 1.1 sec
...
{'foo': 'bar', 'driver': 'mysql', 'user': 'alau'}