Провайдеры
Подготовка переменных для авторизации
export CLUSTERNAME=my-cluster
export SH_USERNAME=admin
export SH_PASS="my-password"
export INGRESS="apps.ip-x-x-x-x.shturval.link"
export AUTHENDPOINT="https://auth.$INGRESS"
export BACKENDPOINT="https://back.$INGRESS"
export KUBECONFIG_PATH=/tmp/$CLUSTERNAME.kubeconfig
export COOKIE_PATH=/tmp/cookie
curl -k -v --silent $AUTHENDPOINT/login -c $COOKIE_PATH --data-urlencode "username=$SH_USERNAME" \
--data-urlencode "password=$SH_PASS" &>/dev/null
echo "Got cookie"
code=$(curl -k -b $COOKIE_PATH -v "$AUTHENDPOINT/oauth/authorize?response_type=code&client_id=backend&redirect_uri=localhost/cb" -v 2>&1 | grep -E -o "\<code=[A-Z0-9]+")
echo "Got code"
token=$(curl -k --silent "$AUTHENDPOINT/oauth/token" \
--header 'Content-Type: application/x-www-form-urlencoded' \
-b $COOKIE_PATH \
--data-urlencode 'client_id=backend' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode "$code" \
--data-urlencode "redirect_uri=localhost/cb" | jq -r '.access_token')
echo "Got token"
curl -k --silent "$BACKENDPOINT/api/v1/clusters/$CLUSTERNAME/kubeconfig" -H "Authorization: Bearer $token" -H 'accept: application/json, text/plain, */*' > $KUBECONFIG_PATH
echo "Kubeconfig is ready"
echo "export KUBECONFIG=$KUBECONFIG_PATH"
Получить список провайдеров
curl --silent --location --request GET $BACKENDPOINT/api/v1/platform/providers/capvs
--header "Authorization: Bearer $TOKEN" | jq -r
В ответе ожидается json такого формата:
[
{
"providerType": "capsm",
"configs": [
{
"name": "default",
"kubeVers": [
"v1.26.5"
],
"allowEditCSI": false
}
]
},
{
"providerType": "capvs",
"configs": [
{
"name": "capvs",
"kubeVers": [
"v1.25.9"
],
"allowEditCSI": false
}
]
Создание провайдера vSphere
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/capvs
--header "Authorization: Bearer $TOKEN" | jq -r
--data @<(cat <<EOF
{
"allowEditCSI": false,
"cloneMode": "linkedClone",
"connectInfo": {
"passwd": "string",
"url": "string",
"user": "string"
},
"datacenter": "string",
"datastore": "string",
"folder": "string",
"identityName": "string",
"network": "string",
"resourcePool": "string",
"storagePolicyName": "string",
"template": [
{
"key": "string",
"value": "string"
}
],
"templateNetInterface": "string"
}
Пример:
{
"allowEditCSI": false,
"cloneMode": "linkedClone",
"connectInfo": {
"passwd": "mypassword",
"url": "stendcloud.aaaaaaa.bb:443",
"user": "myusername"
},
"datacenter": "/StendCloud",
"datastore": "StendCloud_Name",
"folder": "/StendCloud/vm/StendCloud/Name/",
"identityName": "ownername",
"network": "/StendCloud/network/data",
"resourcePool": "/StendCloud/host/StendCloud/Resources/Name",
"storagePolicyName": "",
"template": [
{
"key": "redos-7.3.2-shturval",
"value": "v1.25.9"
}
],
"templateNetInterface": "enp1s0"
}
При успешном создании провайдера vsphere, в ответе ожидается json такого формата:
{
"vCenterAddress": "stendcloud.aaaaaaa.aa:443",
"user": "",
"passwd": "",
"thumbprint": "A1:F1:C8:9F:04:E8:13:7A:87:39:D0:EA:10:96:40:57:FE:D0:77:3E",
"datacenter": "/StendCloud",
"datastore": "StendCloud_Name",
"storagePolicyName": "",
"cloneMode": "",
"folder": "/StendCloud/vm/StendCloud/Name/",
"network": "/StendCloud/network/data",
"template": [
{
"key": "redos-7.3.2-shturval",
"value": "v1.25.9"
}
],
"templateNetInterface": "enp1s0",
"resourcePool": "/StendCloud/host/StendCloud/Resources/Name",
"allowEditCSI": false
}
Удаление провайдера
Удаление провайдера vSphere:
export PROVIDERNAME="provider-name"
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/capvs/$PROVIDERNAME
--header "Authorization: Bearer $TOKEN" | jq -r
Удаление провайдера oVirt:
export PROVIDERNAME="provider-name"
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/capov/$PROVIDERNAME
--header "Authorization: Bearer $TOKEN" | jq -r