Decort SDK - это библиотека, написанная на языке GO, позволяющая взаимодействовать с API облачной платформы **DECORT**. Библиотека содеражит в себе структуры и методы, необходимые для отправки запросов. Decort SDK имеет встроенный http-клиент и поддерживает разные способы авторизации на платформе. Библиотека так же содержит в себе модели ответов от платформы.
-`cloudapi` - пользовательская группа, которая позволяет воспользоваться всем стардартным функционалом платформы;
-`cloudbroker` - административная группа, которая позволяет воспользоваться всем стандартным функционалом платформы и расширенными возможностями, включающими в себя управление пользователями, ресурсами, платформами размещения ресурсов и т.д.
### Cloudapi
`Cloudapi` позволяет выполнять запросы к группе пользовательских конечных точек
Данная группа ручек позволяет выполнять следующие операции в платформе:
-`Account` - управление аккаунтами - внутренними учетными записями платформы, которые являются владельцами вычислительных ресурсов;
-`BService` - управление группами виртуальных машин (computes);
-`Compute` - управление виртуальными машинами (индивидуально);
-`ComputeCI` - управление конвейром для создания виртуальных машин;
-`Disks` - управление виртуальными дисками;
-`ExtNet` - управление виртуальными сетями, отвечающими за внешний доступ;
-`FLIPgroup` - управление группами "плавающими" ip - адресами;
-`Image` - управление образами операционных систем;
-`K8CI` - управление конвейром для создания кластера;
-`K8S` - управление кластерами kubernetes;
-`KVMPPC` - создание виртуальной машины Power PC (IBM);
-`KVMx86` - создание виртуальной машины x86;
-`LB` - управление балансировщиками нагрузки;
-`Locations` - получение информации о grid площадки;
-`RG` - управление ресурсными группами аккаунта;
-`Sizes` - получение информации о потребляемых ресурсах виртуальными машинами и дисками;
-`Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
-`VINS` - управление виртуальными изолированными сетями.
### Cloudbroker
`Cloudbroker` позволяет выполнять запросы к группе пользовательских конечных точек
Данная группа ручек позволяет выполнять следующие операции в платформе:
-`Account` - управление аккаунтами - внутренними учетными записями платформы, которые являются владельцами вычислительных ресурсов;
-`Compute` - управление виртуальными машинами (индивидуально);
-`Disks` - управление виртуальными дисками;
-`ExtNet` - управление виртуальными сетями, отвечающими за внешний доступ;
-`Grid` - управление площадками;
-`Image` - управление образами операционных систем;
-`K8CI` - управление конвейром для создания кластера;
-`K8S` - управление кластерами kubernetes;
-`KVMPPC` - создание виртуальной машины Power PC (IBM);
-`KVMx86` - создание виртуальной машины x86;
-`LB` - управление балансировщиками нагрузки;
-`RG` - управление ресурсными группами аккаунта;
-`SEP` - управление storage endpoint (sep);
-`Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
-`VINS` - управление виртуальными изолированными сетями.
## Работа с библиотекой
Алгоритм работы с библиотекой выглядит следующим образом:
1. Настройка конфигурации клиента.
2. Создание клиента.
3. Создание структуры запроса.
4. Выполнение запроса.
### Настройка конфигурации клиента
Сначала, необходимо создать переменную конфигурации клиента. Конфигурация состоит как из обязательных, так и необязательных полей.
| Поле | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| AppID | string | Да | app_id ключа для выполнения запросов |
| AppSecret | string | Да | app_secret ключ для выполнения запроса |
| SSOURL | string | Да | URL адрес сервиса аутентификации и авторизации |
| DecortURL | string | Да | URL адрес платформы, с которой будет осуществляться взаимодействие |
| Retries | uint | Нет | Кол-во неудачных попыток выполнения запроса, по умолчанию - 5 |
| SSLSkipVerify | bool | Нет | Пропуск проверки подлинности сертификата, по умолчанию - true |
| Token | string | Нет | JWT токен |
Пример кода:
```go
import (
"github.com/rudecs/decort-sdk/config"
)
func main(){
// Настройка конфигурации
cfg := config.Config{
AppID: "<APP_ID>",
AppSecret: "<APP_SECRET>",
SSOURL: "https://sso.digitalenergy.online",
DecortURL: "https://mr4.digitalenergy.online",
Retries: 5,
}
}
```
### Создание клиента
Создание клиента происходит с помощью функции-строителя `New` из основного пакета `decort-sdk`, для избежания проблем с именами, пакету можно присвоить алиас `decort`. Функция принимает конфигурацию, возвращает структуру `DecortClient`, с помощью которой можно взаимодействовать с платформой.
// CreateRequest - реквест на создание виртуальной машины
req := kvmx86.CreateRequest{
RGID: 123,
Name: "compute",
CPU: 4,
RAM: 4096,
ImageID: 321,
}
}
```
### Выполнение запроса
Чтобы выполнить запрос, необходимо:
1. Вызвать у клиента метод, отвечаеющий за определение группы API для взаимодействия, это может быть `.CloudAPI()`, либо `.CloudBroker()`. Данные методы возвращаеют соответствующие структуры, с помощью которых можно соверать запросы.
2. Вызвать у возвращенной структуры метод, определяющий группу ручек для взаимодействия.
Доступные методы для `.CloudAPI()`:
-`.Account()` - для работы с`Account`
-`.BService()` - для работы с`BService`
-`.Compute()` - для работы с`Compute`
-`.ComputeCI()` - для работы с`ComputeCI`
-`.Disks()` - для работы с`Disks`
-`.ExtNet()` - для работы с`ExtNet`
-`.FLIPgroup()` - для работы с`FLIPGroup`
-`.Image()` - для работы с`Image`
-`.K8CI()` - для работы с`K8CI`
-`.K8S()` - для работы с`K8S`
-`.KVMPPC()` - для работы с`KVMPPC`
-`.KVMx86()` - для работы с`KVMX86`
-`.LB()` - для работы с`LB`
-`.Locations()` - для работы с`Locations`
-`.RG()` - для работы с`RG`
-`.Sizes()` - для работы с`Sizes`
-`.Tasks()` - для работы с`Tasks`
-`.VINS()` - для работы с`VINS`
Доступные методы для `.CloudBroker()`:
-`.Account()` - для работы с`Account`
-`.Compute()` - для работы с`Compute`
-`.Disks()` - для работы с`Disks`
-`.ExtNet()` - для работы с`ExtNet`
-`.Grid()` - для работы с`Grid`
-`.Image()` - для работы с`Image`
-`.K8CI()` - для работы с`K8CI`
-`.K8S()` - для работы с`K8S`
-`.KVMPPC()` - для работы с`KVMPPC`
-`.KVMx86()` - для работы с`KVMX86`
-`.LB()` - для работы с`LB`
-`.RG()` - для работы с`RG`
-`.SEP()` - для работы с`SEP`
-`.Tasks()` - для работы с`Tasks`
-`.VINS()` - для работы с`VINS`
3. Вызвать метод, отвечающий за выполнение запроса и передать в него:
- контекст;
- структуру запроса.
У кождой группы ручек API имеются свои доступные методы, которые определяются платформой.
4. Обработать результат и ошибки.
Т.к. все вызовы методов идут последовательно, можно их объеденить в конвейер: