API-Explorer
API-Explorer copied to clipboard
Get props from OS system environment, just like OBP API
Objective:
(The same as OBP API https://github.com/OpenBankProject/OBP-API/issues/1208 )
Make container-like deployments easier by reading props from sys.env, we want to avoid rewriting the props file and repacking the war file like this: https://github.com/chrisjsimpson/obp-kubernetes/issues/2#issuecomment-460495439 (<< this is to be avoided)
For docker-like environments, it is helpful instead to read runtime settings from the operating system environment vars, because we can inject these at container runtime.
pseudo Logic
- Load props from system environment (
sys.env) https://www.scala-lang.org/api/2.9.3/scala/sys/package.html - Fallback to read from props file
pseudo code
def getPropsValue(nameOfProperty: String): Box[String] = {
# Replace "." with "_" (environment vars cannot include ".")
brandSpecificPropertyName = brandSpecificPropertyName.replace('.', '_')
# Convert to upper case
brandSpecificPropertyName = brandSpecificPropertyName.toUpperCase()
if (sys.env.get(brandSpecificPropertyName)) {
} else {
..... load from props file as normal
}
}
Gotcha
- Environment variables will be upper case (
s.toUpperCase()) - Environment variables cannot contain a dot ("
."), therefore:oauth_1.hostnamebecomesOAUTH_1_HOSTNAMEapi_hostnamebecomesAPI_HOSTNAME
Oh damn @hongwei1 I didn't see your commit :laughing: damn, thank you! We had the same ideas.
At least I got a chance to learn some Scala!