add huaweicloud iam sub-account support
This commit is contained in:
parent
e0def66959
commit
a72639a3a5
@ -3,6 +3,7 @@
|
|||||||
# HUAWEICLOUD_Username
|
# HUAWEICLOUD_Username
|
||||||
# HUAWEICLOUD_Password
|
# HUAWEICLOUD_Password
|
||||||
# HUAWEICLOUD_ProjectID
|
# HUAWEICLOUD_ProjectID
|
||||||
|
# HUAWEICLOUD_AuthType = main/sub
|
||||||
|
|
||||||
iam_api="https://iam.myhuaweicloud.com"
|
iam_api="https://iam.myhuaweicloud.com"
|
||||||
dns_api="https://dns.ap-southeast-1.myhuaweicloud.com" # Should work
|
dns_api="https://dns.ap-southeast-1.myhuaweicloud.com" # Should work
|
||||||
@ -22,6 +23,7 @@ dns_huaweicloud_add() {
|
|||||||
HUAWEICLOUD_Username="${HUAWEICLOUD_Username:-$(_readaccountconf_mutable HUAWEICLOUD_Username)}"
|
HUAWEICLOUD_Username="${HUAWEICLOUD_Username:-$(_readaccountconf_mutable HUAWEICLOUD_Username)}"
|
||||||
HUAWEICLOUD_Password="${HUAWEICLOUD_Password:-$(_readaccountconf_mutable HUAWEICLOUD_Password)}"
|
HUAWEICLOUD_Password="${HUAWEICLOUD_Password:-$(_readaccountconf_mutable HUAWEICLOUD_Password)}"
|
||||||
HUAWEICLOUD_ProjectID="${HUAWEICLOUD_ProjectID:-$(_readaccountconf_mutable HUAWEICLOUD_ProjectID)}"
|
HUAWEICLOUD_ProjectID="${HUAWEICLOUD_ProjectID:-$(_readaccountconf_mutable HUAWEICLOUD_ProjectID)}"
|
||||||
|
HUAWEICLOUD_AuthType="${HUAWEICLOUD_AuthType:-$(_readaccountconf_mutable HUAWEICLOUD_AuthType)}"
|
||||||
|
|
||||||
# Check information
|
# Check information
|
||||||
if [ -z "${HUAWEICLOUD_Username}" ] || [ -z "${HUAWEICLOUD_Password}" ] || [ -z "${HUAWEICLOUD_ProjectID}" ]; then
|
if [ -z "${HUAWEICLOUD_Username}" ] || [ -z "${HUAWEICLOUD_Password}" ] || [ -z "${HUAWEICLOUD_ProjectID}" ]; then
|
||||||
@ -29,8 +31,13 @@ dns_huaweicloud_add() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# chech Auth Type
|
||||||
|
if [ -z "${HUAWEICLOUD_AuthType}" ]
|
||||||
|
HUAWEICLOUD_AuthType = "main"
|
||||||
|
fi
|
||||||
|
|
||||||
unset token # Clear token
|
unset token # Clear token
|
||||||
token="$(_get_token "${HUAWEICLOUD_Username}" "${HUAWEICLOUD_Password}" "${HUAWEICLOUD_ProjectID}")"
|
token="$(_get_token "${HUAWEICLOUD_Username}" "${HUAWEICLOUD_Password}" "${HUAWEICLOUD_ProjectID}" "${HUAWEICLOUD_AuthType}")"
|
||||||
if [ -z "${token}" ]; then # Check token
|
if [ -z "${token}" ]; then # Check token
|
||||||
_err "dns_api(dns_huaweicloud): Error getting token."
|
_err "dns_api(dns_huaweicloud): Error getting token."
|
||||||
return 1
|
return 1
|
||||||
@ -54,9 +61,10 @@ dns_huaweicloud_add() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Do saving work if all succeeded
|
# Do saving work if all succeeded
|
||||||
_saveaccountconf_mutable HUAWEICLOUD_Username "${HUAWEICLOUD_Username}"
|
_saveaccountconf_mutable HUAWEICLOUD_Username "${HUAWEICLOUD_Username}"
|
||||||
_saveaccountconf_mutable HUAWEICLOUD_Password "${HUAWEICLOUD_Password}"
|
_saveaccountconf_mutable HUAWEICLOUD_Password "${HUAWEICLOUD_Password}"
|
||||||
_saveaccountconf_mutable HUAWEICLOUD_ProjectID "${HUAWEICLOUD_ProjectID}"
|
_saveaccountconf_mutable HUAWEICLOUD_ProjectID "${HUAWEICLOUD_ProjectID}"
|
||||||
|
_saveaccountconf_mutable HUAWEICLOUD_AuthType "${HUAWEICLOUD_AuthType}"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +81,7 @@ dns_huaweicloud_rm() {
|
|||||||
HUAWEICLOUD_Username="${HUAWEICLOUD_Username:-$(_readaccountconf_mutable HUAWEICLOUD_Username)}"
|
HUAWEICLOUD_Username="${HUAWEICLOUD_Username:-$(_readaccountconf_mutable HUAWEICLOUD_Username)}"
|
||||||
HUAWEICLOUD_Password="${HUAWEICLOUD_Password:-$(_readaccountconf_mutable HUAWEICLOUD_Password)}"
|
HUAWEICLOUD_Password="${HUAWEICLOUD_Password:-$(_readaccountconf_mutable HUAWEICLOUD_Password)}"
|
||||||
HUAWEICLOUD_ProjectID="${HUAWEICLOUD_ProjectID:-$(_readaccountconf_mutable HUAWEICLOUD_ProjectID)}"
|
HUAWEICLOUD_ProjectID="${HUAWEICLOUD_ProjectID:-$(_readaccountconf_mutable HUAWEICLOUD_ProjectID)}"
|
||||||
|
HUAWEICLOUD_AuthType="${HUAWEICLOUD_AuthType:-$(_readaccountconf_mutable HUAWEICLOUD_AuthType)}"
|
||||||
|
|
||||||
# Check information
|
# Check information
|
||||||
if [ -z "${HUAWEICLOUD_Username}" ] || [ -z "${HUAWEICLOUD_Password}" ] || [ -z "${HUAWEICLOUD_ProjectID}" ]; then
|
if [ -z "${HUAWEICLOUD_Username}" ] || [ -z "${HUAWEICLOUD_Password}" ] || [ -z "${HUAWEICLOUD_ProjectID}" ]; then
|
||||||
@ -80,8 +89,13 @@ dns_huaweicloud_rm() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# chech Auth Type
|
||||||
|
if [ -z "${HUAWEICLOUD_AuthType}" ]
|
||||||
|
HUAWEICLOUD_AuthType = "main"
|
||||||
|
fi
|
||||||
|
|
||||||
unset token # Clear token
|
unset token # Clear token
|
||||||
token="$(_get_token "${HUAWEICLOUD_Username}" "${HUAWEICLOUD_Password}" "${HUAWEICLOUD_ProjectID}")"
|
token="$(_get_token "${HUAWEICLOUD_Username}" "${HUAWEICLOUD_Password}" "${HUAWEICLOUD_ProjectID}" "${HUAWEICLOUD_AuthType}")"
|
||||||
if [ -z "${token}" ]; then # Check token
|
if [ -z "${token}" ]; then # Check token
|
||||||
_err "dns_api(dns_huaweicloud): Error getting token."
|
_err "dns_api(dns_huaweicloud): Error getting token."
|
||||||
return 1
|
return 1
|
||||||
@ -240,31 +254,61 @@ _get_token() {
|
|||||||
_username=$1
|
_username=$1
|
||||||
_password=$2
|
_password=$2
|
||||||
_project=$3
|
_project=$3
|
||||||
|
_auth=$4
|
||||||
|
|
||||||
_debug "Getting Token"
|
_debug "Getting Token"
|
||||||
body="{
|
if [ "$_auth" != "main" ]; then
|
||||||
\"auth\": {
|
body="{
|
||||||
\"identity\": {
|
\"auth\": {
|
||||||
\"methods\": [
|
\"identity\": {
|
||||||
\"password\"
|
\"methods\": [
|
||||||
],
|
\"password\"
|
||||||
\"password\": {
|
],
|
||||||
\"user\": {
|
\"password\": {
|
||||||
\"name\": \"${_username}\",
|
\"user\": {
|
||||||
\"password\": \"${_password}\",
|
\"name\": \"${_username}\",
|
||||||
\"domain\": {
|
\"password\": \"${_password}\",
|
||||||
\"name\": \"${_username}\"
|
\"domain\": {
|
||||||
|
\"name\": \"${_username}\"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
\"scope\": {
|
||||||
\"scope\": {
|
\"project\": {
|
||||||
\"project\": {
|
\"id\": \"${_project}\"
|
||||||
\"id\": \"${_project}\"
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}"
|
||||||
}"
|
else
|
||||||
|
_iam_user=`echo $_username | awk -F@ '{print $1}'`
|
||||||
|
_iam_domain=`echo $_username | awk -F@ '{print $2}'`
|
||||||
|
|
||||||
|
body="{
|
||||||
|
\"auth\": {
|
||||||
|
\"identity\": {
|
||||||
|
\"methods\": [
|
||||||
|
\"password\"
|
||||||
|
],
|
||||||
|
\"password\": {
|
||||||
|
\"user\": {
|
||||||
|
\"name\": \"${_iam_user}\",
|
||||||
|
\"password\": \"${_password}\",
|
||||||
|
\"domain\": {
|
||||||
|
\"name\": \"${_iam_domain}\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
\"scope\": {
|
||||||
|
\"project\": {
|
||||||
|
\"id\": \"${_project}\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
fi
|
||||||
export _H1="Content-Type: application/json;charset=utf8"
|
export _H1="Content-Type: application/json;charset=utf8"
|
||||||
_post "${body}" "${iam_api}/v3/auth/tokens" >/dev/null
|
_post "${body}" "${iam_api}/v3/auth/tokens" >/dev/null
|
||||||
_code=$(grep "^HTTP" "$HTTP_HEADER" | _tail_n 1 | cut -d " " -f 2 | tr -d "\\r\\n")
|
_code=$(grep "^HTTP" "$HTTP_HEADER" | _tail_n 1 | cut -d " " -f 2 | tr -d "\\r\\n")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user