Skip to content
This repository was archived by the owner on Feb 7, 2025. It is now read-only.

Config Documentation #255

Merged
merged 12 commits into from
Dec 23, 2024
43 changes: 43 additions & 0 deletions adr/012-configs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# 12. Partner configuration

Date: 2024-12-12

## Decision

We will store partner config settings in an Azure container
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: consider being more specific here, .i.e. "We will store partner sftp config settings..."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, thanks!


## 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.


## Notes
- config files should only contain non-secret values
- secrets will use a consistent naming pattern based on the partner ID used in config (so we can dynamically assemble the key names in code)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the naming convention documented somewhere?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SECRETS.md contains the current naming convention for secrets.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be helpful to link out to it

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has been added to where the notes were moved which is in configs.md

- config keys are their file names (minus .json) and match org names in ReportStream

## 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
7 changes: 7 additions & 0 deletions docs/configs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# FAQ
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Loving the FAQ section. Great idea!


- 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

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
Loading