Провайдеры

Подготовка переменных для авторизации

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