Skip to content

Commit

Permalink
Merge pull request #255 from CDCgov/config-adr
Browse files Browse the repository at this point in the history
Config Documentation
  • Loading branch information
jcrichlake authored Dec 23, 2024
2 parents 285652a + 9a1089e commit 53f60b7
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
37 changes: 37 additions & 0 deletions adr/012-configs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# 12. Partner configuration

Date: 2024-12-12

## Decision

We will store partner SFTP config settings in an Azure container

## Status

Accepted.

## Context

In order to enable the usage of partner-specific settings in the different parts of the app, we are going to store the settings
in a config container in our Azure storage account. Each partner will have its own separate file within the container to minimize potential
blast radius when changing settings.

## Impact

### Positive

- We can continue to meet our partners where they are by having partner specific settings in the app in order to provide any needed customizations.
- We can create separate testing config for the Flexion organizations

### Negative

- Some added complexity for the implementation of configs.
- Initial implementation of the config will require either restarting or redeploying the app

### Risks

- None

## Related Issues

- #[1082](https://github.com/CDCgov/trusted-intermediary/issues/1082)
11 changes: 11 additions & 0 deletions docs/configs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# FAQ
- We use the partner's organization name in ReportStream as the partner ID
- Config files are the partner ID plus `.json`
- Config keys in code are the partner ID
- We don't load configs in the PR environment
- See [The partner settings struct](/src/config/config.go) for the config structure
- Configs load prior to the application running. Any changes to the config will require a restart of the Azure container to load those changes
- For local non-partner specific testing, we have a Flexion based config that can be used in non-prod environments
- Config files should only contain non-secret values. Secrets will remain in Azure Key Vault
- secrets will use a consistent naming pattern based on the same partner ID used in config
(so we can dynamically assemble the key names in code) [see here](../SECRETS.md)
3 changes: 3 additions & 0 deletions src/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import (
"slices"
)

/*
The below struct is the struct for the values of partner configs. If adding new configs add to this struct
*/
type PartnerSettings struct {
DisplayName string `json:"displayName"` // full name if we need pretty names
IsActive bool `json:"isActive"`
Expand Down

0 comments on commit 53f60b7

Please sign in to comment.