[FOLIO-1432] Standardize configuration mechanism/API for backend modules Created: 21/Aug/18 Updated: 18/Jan/19 |
|
| Status: | Open |
| Project: | FOLIO |
| Components: | None |
| Affects versions: | None |
| Fix versions: | None |
| Type: | Task | Priority: | P3 |
| Reporter: | Kurt Nordstrom | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original estimate: | Not Specified | ||
| Sprint: | |
| Development Team: | Core: Platform |
| Description |
|
We are coming to the point where we're going to have a number of backend modules that will require some way to set persistent configurations. Some of these configurations might only apply to the module's startup (e.g. defining a secret signing key), but other configurations might need to be changed dynamically (e.g. timeout values for external lookups or password validation rulesets). What I think would be most advantageous would be for us to standardize on a common way to query and set a configuration for a given module, so that generic tooling can be created in order to administer the settings of backend modules through a UI. Since configurations should ideally be persisted, it seems reasonable that we might want to make use of mod-configuration. However, since some modules are able to persist their own information, it's possible that we might not want to make the use of mod-configuration required. One option that I see would be to have each module provision an endpoint that could be queried for a schema that defined which values could be set for that given module. The endpoint could also be used to get the current settings and to change them as needed. Another concern that we might possibly have is whether or not a given configuration value is considered to be sensitive information. A signing key shouldn't be able to be viewed or set by just anybody. In light of this, there should be a way to define permissions required in order to view/set a given configuration value (or collection of values). |