fix: refactor the way the config is read from file and envvars
The plugin will use the following order of precedence: environment value > file value > default value See the wiki for details on environment variable names. Signed-off-by: Avi Miller <avi.miller@oracle.com>
This commit is contained in:
parent
7666022840
commit
1d089d4541
@ -80,76 +80,93 @@ _get_oci_zone() {
|
|||||||
|
|
||||||
_oci_config() {
|
_oci_config() {
|
||||||
|
|
||||||
OCI_CLI_CONFIG_FILE="${OCI_CLI_CONFIG_FILE:-$HOME/.oci/config}"
|
_DEFAULT_OCI_CLI_CONFIG_FILE="$HOME/.oci/config"
|
||||||
OCI_CLI_PROFILE="${OCI_CLI_PROFILE:-DEFAULT}"
|
OCI_CLI_CONFIG_FILE="${OCI_CLI_CONFIG_FILE:-$(_readaccountconf_mutable OCI_CLI_CONFIG_FILE)}"
|
||||||
|
|
||||||
# Read the configuration from either the default or specified config file
|
if [ -z "$OCI_CLI_CONFIG_FILE" ]; then
|
||||||
# Override the config file value with the environment variable value (if set)
|
OCI_CLI_CONFIG_FILE="$_DEFAULT_OCI_CLI_CONFIG_FILE"
|
||||||
if [ -f "$OCI_CLI_CONFIG_FILE" ]; then
|
fi
|
||||||
_info "Reading OCI configuration file: $OCI_CLI_CONFIG_FILE"
|
|
||||||
OCI_CLI_TENANCY="${OCI_CLI_TENANCY:-$(_readini tenancy "$OCI_CLI_CONFIG_FILE" "$OCI_CLI_PROFILE")}"
|
if [ "$_DEFAULT_OCI_CLI_CONFIG_FILE" != "$OCI_CLI_CONFIG_FILE" ]; then
|
||||||
OCI_CLI_USER="${OCI_CLI_USER:-$(_readini user "$OCI_CLI_CONFIG_FILE" "$OCI_CLI_PROFILE")}"
|
_saveaccountconf_mutable OCI_CLI_CONFIG_FILE "$OCI_CLI_CONFIG_FILE"
|
||||||
OCI_CLI_KEY_FILE="${OCI_CLI_KEY_FILE:-$(_readini key_file "$OCI_CLI_CONFIG_FILE" "$OCI_CLI_PROFILE")}"
|
|
||||||
OCI_CLI_REGION="${OCI_CLI_REGION:-$(_readini region "$OCI_CLI_CONFIG_FILE" "$OCI_CLI_PROFILE")}"
|
|
||||||
else
|
else
|
||||||
|
_clearaccountconf_mutable OCI_CLI_CONFIG_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
_DEFAULT_OCI_CLI_PROFILE="DEFAULT"
|
||||||
|
OCI_CLI_PROFILE="${OCI_CLI_PROFILE:-$(_readaccountconf_mutable OCI_CLI_PROFILE)}"
|
||||||
|
if [ "$_DEFAULT_OCI_CLI_PROFILE" != "$OCI_CLI_PROFILE" ]; then
|
||||||
|
_saveaccountconf_mutable OCI_CLI_PROFILE "$OCI_CLI_PROFILE"
|
||||||
|
else
|
||||||
|
OCI_CLI_PROFILE="$_DEFAULT_OCI_CLI_PROFILE"
|
||||||
|
_clearaccountconf_mutable OCI_CLI_PROFILE
|
||||||
|
fi
|
||||||
|
|
||||||
OCI_CLI_TENANCY="${OCI_CLI_TENANCY:-$(_readaccountconf_mutable OCI_CLI_TENANCY)}"
|
OCI_CLI_TENANCY="${OCI_CLI_TENANCY:-$(_readaccountconf_mutable OCI_CLI_TENANCY)}"
|
||||||
OCI_CLI_USER="${OCI_CLI_USER:-$(_readaccountconf_mutable OCI_CLI_USER)}"
|
if [ "$OCI_CLI_TENANCY" ]; then
|
||||||
OCI_CLI_KEY="${OCI_CLI_KEY:-$(_readaccountconf_mutable OCI_CLI_KEY)}"
|
_saveaccountconf_mutable OCI_CLI_TENANCY "$OCI_CLI_TENANCY"
|
||||||
OCI_CLI_REGION="${OCI_CLI_REGION:-$(_readaccountconf_mutable OCI_CLI_REGION)}"
|
elif [ -f "$OCI_CLI_CONFIG_FILE" ]; then
|
||||||
_save_config="true"
|
_debug "Reading OCI_CLI_TENANCY value from: $OCI_CLI_CONFIG_FILE"
|
||||||
fi
|
OCI_CLI_TENANCY="${OCI_CLI_TENANCY:-$(_readini "$OCI_CLI_CONFIG_FILE" tenancy "$OCI_CLI_PROFILE")}"
|
||||||
|
|
||||||
_not_set=""
|
|
||||||
_ret=0
|
|
||||||
|
|
||||||
if [ -z "$OCI_CLI_KEY_FILE" ] && [ -z "$OCI_CLI_KEY" ]; then
|
|
||||||
_err "Fatal: you must provide a value for either OCI_CLI_KEY_FILE or OCI_CLI_KEY."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$OCI_CLI_KEY_FILE" ] && [ -z "$OCI_CLI_KEY" ]; then
|
|
||||||
if [ -f "$OCI_CLI_KEY_FILE" ]; then
|
|
||||||
OCI_CLI_KEY=$(_base64 <"$OCI_CLI_KEY_FILE")
|
|
||||||
else
|
|
||||||
_err "Fatal: unable to read key file: $OCI_CLI_KEY_FILE"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$OCI_CLI_TENANCY" ]; then
|
if [ -z "$OCI_CLI_TENANCY" ]; then
|
||||||
_not_set="${_not_set}OCI_CLI_TENANCY "
|
_err "Error: unable to read OCI_CLI_TENANCY from config file or environment variable."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$OCI_CLI_USER" ]; then
|
OCI_CLI_USER="${OCI_CLI_USER:-$(_readaccountconf_mutable OCI_CLI_USER)}"
|
||||||
_not_set="${_not_set}OCI_CLI_USER "
|
if [ "$OCI_CLI_USER" ]; then
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$OCI_CLI_REGION" ]; then
|
|
||||||
_not_set="${_not_set}OCI_CLI_REGION "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$_not_set" ]; then
|
|
||||||
_err "Fatal: required environment variable(s): ${_not_set} not set."
|
|
||||||
_ret=1
|
|
||||||
else
|
|
||||||
if [ "$_save_config" ]; then
|
|
||||||
_saveaccountconf_mutable OCI_CLI_TENANCY "$OCI_CLI_TENANCY"
|
|
||||||
_saveaccountconf_mutable OCI_CLI_USER "$OCI_CLI_USER"
|
_saveaccountconf_mutable OCI_CLI_USER "$OCI_CLI_USER"
|
||||||
_saveaccountconf_mutable OCI_CLI_KEY "$OCI_CLI_KEY"
|
elif [ -f "$OCI_CLI_CONFIG_FILE" ]; then
|
||||||
_saveaccountconf_mutable OCI_CLI_REGION "$OCI_CLI_REGION"
|
_debug "Reading OCI_CLI_USER value from: $OCI_CLI_CONFIG_FILE"
|
||||||
else
|
OCI_CLI_USER="${OCI_CLI_USER:-$(_readini "$OCI_CLI_CONFIG_FILE" user "$OCI_CLI_PROFILE")}"
|
||||||
_info "Success: OCI configuration retrieved from $OCI_CLI_CONFIG_FILE."
|
|
||||||
fi
|
fi
|
||||||
|
if [ -z "$OCI_CLI_USER" ]; then
|
||||||
|
_err "Error: unable to read OCI_CLI_USER from config file or environment variable."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! _contains "PRIVATE KEY" "$OCI_CLI_KEY"; then
|
OCI_CLI_REGION="${OCI_CLI_REGION:-$(_readaccountconf_mutable OCI_CLI_REGION)}"
|
||||||
|
if [ "$OCI_CLI_REGION" ]; then
|
||||||
|
_saveaccountconf_mutable OCI_CLI_REGION "$OCI_CLI_REGION"
|
||||||
|
elif [ -f "$OCI_CLI_CONFIG_FILE" ]; then
|
||||||
|
_debug "Reading OCI_CLI_REGION value from: $OCI_CLI_CONFIG_FILE"
|
||||||
|
OCI_CLI_REGION="${OCI_CLI_REGION:-$(_readini "$OCI_CLI_CONFIG_FILE" region "$OCI_CLI_PROFILE")}"
|
||||||
|
fi
|
||||||
|
if [ -z "$OCI_CLI_REGION" ]; then
|
||||||
|
_err "Error: unable to read OCI_CLI_REGION from config file or environment variable."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OCI_CLI_KEY="${OCI_CLI_KEY:-$(_readaccountconf_mutable OCI_CLI_KEY)}"
|
||||||
|
if [ -z "$OCI_CLI_KEY" ]; then
|
||||||
|
_clearaccountconf_mutable OCI_CLI_KEY
|
||||||
|
OCI_CLI_KEY_FILE="${OCI_CLI_KEY_FILE:-$(_readini "$OCI_CLI_CONFIG_FILE" key_file "$OCI_CLI_PROFILE")}"
|
||||||
|
if [ "$OCI_CLI_KEY_FILE" ] && [ -f "$OCI_CLI_KEY_FILE" ]; then
|
||||||
|
_debug "Reading OCI_CLI_KEY value from: $OCI_CLI_KEY_FILE"
|
||||||
|
OCI_CLI_KEY=$(_base64 <"$OCI_CLI_KEY_FILE")
|
||||||
|
_saveaccountconf_mutable OCI_CLI_KEY "$OCI_CLI_KEY"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
_saveaccountconf_mutable OCI_CLI_KEY "$OCI_CLI_KEY"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$OCI_CLI_KEY_FILE" ] && [ -z "$OCI_CLI_KEY" ]; then
|
||||||
|
_err "Error: unable to find key file path in OCI config file or OCI_CLI_KEY_FILE."
|
||||||
|
_err "Error: unable to load private API signing key from OCI_CLI_KEY."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(printf "%s\n" "$OCI_CLI_KEY" | wc -l)" -eq 1 ]; then
|
||||||
OCI_CLI_KEY=$(printf "%s" "$OCI_CLI_KEY" | _dbase64 multiline)
|
OCI_CLI_KEY=$(printf "%s" "$OCI_CLI_KEY" | _dbase64 multiline)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $_ret
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# _get_zone(): retrieves the Zone name and OCID
|
# _get_zone(): retrieves the Zone name and OCID
|
||||||
#
|
#
|
||||||
# _sub_domain=_acme-challenge.www
|
# _sub_domain=_acme-challenge.www
|
||||||
@ -189,6 +206,7 @@ _get_zone() {
|
|||||||
#Usage: privatekey
|
#Usage: privatekey
|
||||||
#Output MD5 fingerprint
|
#Output MD5 fingerprint
|
||||||
_fingerprint() {
|
_fingerprint() {
|
||||||
|
|
||||||
pkey="$1"
|
pkey="$1"
|
||||||
if [ -z "$pkey" ]; then
|
if [ -z "$pkey" ]; then
|
||||||
_usage "Usage: _fingerprint privkey"
|
_usage "Usage: _fingerprint privkey"
|
||||||
@ -272,36 +290,37 @@ _signed_request() {
|
|||||||
|
|
||||||
# file key [section]
|
# file key [section]
|
||||||
_readini() {
|
_readini() {
|
||||||
_key="$1"
|
_file="$1"
|
||||||
_file="$2"
|
_key="$2"
|
||||||
_section="${3:-DEFAULT}"
|
_section="${3:-DEFAULT}"
|
||||||
|
|
||||||
_start_n=$(grep -n '\['"$_section"']' "$_file" | cut -d : -f 1)
|
_start_n=$(grep -n '\['"$_section"']' "$_file" | cut -d : -f 1)
|
||||||
_debug2 _start_n "$_start_n"
|
_debug3 _start_n "$_start_n"
|
||||||
if [ -z "$_start_n" ]; then
|
if [ -z "$_start_n" ]; then
|
||||||
_err "Can not find section: $_section"
|
_err "Can not find section: $_section"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_start_nn=$(_math "$_start_n" + 1)
|
_start_nn=$(_math "$_start_n" + 1)
|
||||||
_debug2 "_start_nn" "$_start_nn"
|
_debug3 "_start_nn" "$_start_nn"
|
||||||
|
|
||||||
_left="$(sed -n "${_start_nn},99999p" "$_file")"
|
_left="$(sed -n "${_start_nn},99999p" "$_file")"
|
||||||
_debug2 _left "$_left"
|
_debug3 _left "$_left"
|
||||||
_end="$(echo "$_left" | grep -n "^\[" | _head_n 1)"
|
_end="$(echo "$_left" | grep -n "^\[" | _head_n 1)"
|
||||||
_debug2 "_end" "$_end"
|
_debug3 "_end" "$_end"
|
||||||
if [ "$_end" ]; then
|
if [ "$_end" ]; then
|
||||||
_end_n=$(echo "$_end" | cut -d : -f 1)
|
_end_n=$(echo "$_end" | cut -d : -f 1)
|
||||||
_debug "_end_n" "$_end_n"
|
_debug3 "_end_n" "$_end_n"
|
||||||
_seg_n=$(echo "$_left" | sed -n "1,${_end_n}p")
|
_seg_n=$(echo "$_left" | sed -n "1,${_end_n}p")
|
||||||
else
|
else
|
||||||
_seg_n="$_left"
|
_seg_n="$_left"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_debug2 "_seg_n" "$_seg_n"
|
_debug3 "_seg_n" "$_seg_n"
|
||||||
_lineini="$(echo "$_seg_n" | grep "^ *$_key *= *")"
|
_lineini="$(echo "$_seg_n" | grep "^ *$_key *= *")"
|
||||||
|
_inivalue="$(printf "%b" "$(eval "echo $_lineini | sed \"s/^ *${_key} *= *//g\"")")"
|
||||||
|
_debug2 _inivalue "$_inivalue"
|
||||||
|
echo "$_inivalue"
|
||||||
|
|
||||||
_debug2 "_lineini" "$_lineini"
|
|
||||||
printf "%b" "$(eval "echo $_lineini | sed -e \"s/^ *${_key} *= *//g\"")"
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user