v1.8.0
This commit is contained in:
218
README.md
218
README.md
@@ -12,49 +12,63 @@ Decort SDK - это библиотека, написанная на языке G
|
||||
- Версия 1.5.x Decort-SDK соответствует 3.8.7 версии платформы
|
||||
- Версия 1.6.x Decort-SDK соответствует 3.8.8 версии платформы
|
||||
- Версия 1.7.х Decort-SDK соответствует 3.8.9 версии платформы
|
||||
- Версия 1.8.х Decort-SDK соответствует 4.0.0 версии платформы
|
||||
|
||||
## Оглавление
|
||||
|
||||
- [Установка](#установка)
|
||||
- [Список API](#список-api)
|
||||
- [Decort SDK](#decort-sdk)
|
||||
- [Версии](#версии)
|
||||
- [Оглавление](#оглавление)
|
||||
- [Установка](#установка)
|
||||
- [Список API](#список-api)
|
||||
- [Cloudapi](#cloudapi)
|
||||
- [Cloudbroker](#cloudbroker)
|
||||
- [Работа с библиотекой](#работа-с-библиотекой)
|
||||
- [Работа с библиотекой](#работа-с-библиотекой)
|
||||
- [Настройка конфигурации клиента](#настройка-конфигурации-клиента)
|
||||
- [Пример конфигурации клиента](#пример-конфигурации-клиента)
|
||||
- [Парсинг конфигурации из файла](#парсинг-конфигурации-из-файла)
|
||||
- [Пример JSON конфигурации](#пример-json-конфигурации)
|
||||
- [Пример YAML конфигурации](#пример-yaml-конфигурации)
|
||||
- [Пример конфигурации клиента](#пример-конфигурации-клиента)
|
||||
- [Парсинг конфигурации из файла](#парсинг-конфигурации-из-файла)
|
||||
- [Пример JSON конфигурации](#пример-json-конфигурации)
|
||||
- [Пример YAML конфигурации](#пример-yaml-конфигурации)
|
||||
- [Создание клиента](#создание-клиента)
|
||||
- [Создание структуры запроса](#cоздание-структуры-запроса)
|
||||
- [Пример](#пример)
|
||||
- [Создание структуры запроса](#создание-структуры-запроса)
|
||||
- [Пример комментариев структуры](#пример-комментариев-структуры)
|
||||
- [Пример создания запроса для развертывания виртуальной машины:](#пример-создания-запроса-для-развертывания-виртуальной-машины)
|
||||
- [Выполнение запроса](#выполнение-запроса)
|
||||
- [Пример выполнения запроса](#пример-выполнения-запроса)
|
||||
- [Пример выполнения GetRaw и ListRaw запросов](#пример-выполнения-getraw-и-listraw-запросов)
|
||||
- [Фильтрация](#фильтрация)
|
||||
- [Использование на примере `compute.FilterByK8SID`:](#использование-на-примере-computefilterbyk8sid)
|
||||
- [Сортировка](#сортировка)
|
||||
- [Сериализация](#сериализация)
|
||||
- [Получение списка уникальных идентификаторов (ID) объекта](#получение-списка-уникальных-идентификаторов-id-объекта)
|
||||
- [Работа с legacy клиентом](#работа-с-legacy-клиентом)
|
||||
- [Комплексный пример](#комплексный-пример)
|
||||
- [Получение списка уникальных идентификаторов ID объекта](#получение-списка-уникальных-идентификаторов-id-объекта)
|
||||
- [Методы поля Result для группы tasks](#методы-поля-result-для-группы-tasks)
|
||||
- [Работа с legacy клиентом](#работа-с-legacy-клиентом)
|
||||
- [Настройка конфигурации legacy клиента](#настройка-конфигурации-legacy-клиента)
|
||||
- [Пример конфигурации legacy клиента](#пример-конфигурации-legacy-клиента)
|
||||
- [Парсинг legacy конфигурации из файла](#парсинг-legacy-конфигурации-из-файла)
|
||||
- [Пример legacy JSON конфигурации](#пример-legacy-json-конфигурации)
|
||||
- [Пример legacy YAML конфигурации](#пример-legacy-yaml-конфигурации)
|
||||
- [Пример конфигурации legacy клиента](#пример-конфигурации-legacy-клиента)
|
||||
- [Парсинг legacy конфигурации из файла](#парсинг-legacy-конфигурации-из-файла)
|
||||
- [Пример legacy JSON конфигурации](#пример-legacy-json-конфигурации)
|
||||
- [Пример legacy YAML конфигурации](#пример-legacy-yaml-конфигурации)
|
||||
- [Создание legacy клиента](#создание-legacy-клиента)
|
||||
- [Создание структуры запроса](#cоздание-структуры-запроса)
|
||||
- [Выполнение запроса](#выполнение-запроса)
|
||||
- [Работа с BVS клиентом](#работа-с-bvs-клиентом)
|
||||
- [Пример создания legacy клиента](#пример-создания-legacy-клиента)
|
||||
- [Пример выполнения запроса](#пример-выполнения-запроса-1)
|
||||
- [Работа с BVS клиентом](#работа-с-bvs-клиентом)
|
||||
- [Настройка параметров BVS в кабинете администратора](#настройка-параметров-bvs-в-кабинете-администратора)
|
||||
- [Настройка конфигурации BVS клиента](#настройка-конфигурации-bvs-клиента)
|
||||
- [Описание структуры token](#описание-структуры-token)
|
||||
- [Пример конфигурации BVS клиента](#пример-конфигурации-bvs-клиента)
|
||||
- [Парсинг BVS конфигурации из файла](#парсинг-bvs-конфигурации-из-файла)
|
||||
- [Парсинг BVS токена из файла](#парсинг-bvs-токена-из-файла)
|
||||
- [Пример BVS JSON конфигурации](#пример-bvs-json-конфигурации)
|
||||
- [Пример BVS YAML конфигурации](#пример-bvs-yaml-конфигурации)
|
||||
- [Пример конфигурации BVS клиента](#пример-конфигурации-bvs-клиента)
|
||||
- [Парсинг BVS конфигурации из файла](#парсинг-bvs-конфигурации-из-файла)
|
||||
- [Парсинг BVS токена из файла](#парсинг-bvs-токена-из-файла)
|
||||
- [Пример BVS JSON конфигурации](#пример-bvs-json-конфигурации)
|
||||
- [Пример BVS YAML конфигурации](#пример-bvs-yaml-конфигурации)
|
||||
- [Создание BVS клиента](#создание-bvs-клиента)
|
||||
- [Пример создания BVS клиента](#пример-создания-bvs-клиента)
|
||||
- [Пример получения BVS токена](#пример-получения-bvs-токена)
|
||||
- [Пример обновления BVS токена](#пример-обновления-bvs-токена)
|
||||
- [Пример выполнения запроса](#пример-выполнения-запроса)
|
||||
- [Пример создания BVS клиента](#пример-создания-bvs-клиента)
|
||||
- [Пример получения BVS токена](#пример-получения-bvs-токена)
|
||||
- [Пример обновления BVS токена](#пример-обновления-bvs-токена)
|
||||
- [Пример выполнения запроса](#пример-выполнения-запроса-2)
|
||||
- [Пример валидации запросов, имеющих в своей структуре поле RAM (или MasterRam/WorkerRAM)](#пример-валидации-запросов-имеющих-в-своей-структуре-поле-ram-или-masterramworkerram)
|
||||
- [Пример выполнения запроса](#пример-выполнения-запроса-3)
|
||||
|
||||
## Установка
|
||||
|
||||
@@ -93,6 +107,7 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
|
||||
- `Sizes` - получение информации о потребляемых ресурсах виртуальными машинами и дисками;
|
||||
- `Stack` - получение информации о вычислительных узлах;
|
||||
- `Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
|
||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||
- `VINS` - управление виртуальными изолированными сетями.
|
||||
|
||||
### Cloudbroker
|
||||
@@ -115,6 +130,7 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
|
||||
- `KVMPPC` - создание виртуальной машины Power PC (IBM);
|
||||
- `KVMx86` - создание виртуальной машины x86;
|
||||
- `LB` - управление балансировщиками нагрузки;
|
||||
- `Node` - управление нодами платформы;
|
||||
- `PCIDevice` - управление устройствами;
|
||||
- `RG` - управление ресурсными группами аккаунта;
|
||||
- `SEP` - управление storage endpoint (sep);
|
||||
@@ -122,6 +138,7 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
|
||||
- `Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
|
||||
- `User` - управление пользователями (индивидуально);
|
||||
- `VGPU` - управление виртуальными графическими процессорами;
|
||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||
- `VINS` - управление виртуальными изолированными сетями.
|
||||
|
||||
## Работа с библиотекой
|
||||
@@ -271,6 +288,7 @@ func main() {
|
||||
- `pkg/cloudapi/sizes` - для `Sizes`
|
||||
- `pkg/cloudapi/stack` - для `Stack`
|
||||
- `pkg/cloudapi/tasks` - для `Tasks`
|
||||
- `pkg/cloudapi/vfpool` - для `VFPool`
|
||||
- `pkg/cloudapi/vins` - для `VINS`
|
||||
- **cloudbroker**:
|
||||
- `pkg/cloudbroker/account` - для `Account`
|
||||
@@ -288,6 +306,7 @@ func main() {
|
||||
- `pkg/cloudbroker/kvmppc` - для `KVMPPC`
|
||||
- `pkg/cloudbroker/kvmx86` - для `KVMX86`
|
||||
- `pkg/cloudbroker/lb` - для `LB`
|
||||
- `pkg/cloudbroker/node` - для `Node`
|
||||
- `pkg/cloudbroker/pcidevice` - для `PCIDevice`
|
||||
- `pkg/cloudbroker/rg` - для `RG`
|
||||
- `pkg/cloudbroker/sep` - для `SEP`
|
||||
@@ -295,6 +314,7 @@ func main() {
|
||||
- `pkg/cloudbroker/tasks` - для `Tasks`
|
||||
- `pkg/cloudbroker/user` - для `User`
|
||||
- `pkg/cloudbroker/vgpu` - для `VGPU`
|
||||
- `pkg/cloudbroker/vfpool` - для `VFPool`
|
||||
- `pkg/cloudbroker/vins` - для `VINS`
|
||||
|
||||
Все поля структуры имеют описание, в которых содержится:
|
||||
@@ -453,6 +473,7 @@ func main() {
|
||||
- `.Sizes()` - для работы с `Sizes`
|
||||
- `.Stack()` - для работы с `Stack`
|
||||
- `.Tasks()` - для работы с `Tasks`
|
||||
- `.VFPool()` - для работы с `VFPool`
|
||||
- `.VINS()` - для работы с `VINS`
|
||||
|
||||
Доступные методы для `.CloudBroker()`:
|
||||
@@ -472,6 +493,7 @@ func main() {
|
||||
- `.KVMPPC()` - для работы с `KVMPPC`
|
||||
- `.KVMx86()` - для работы с `KVMX86`
|
||||
- `.LB()` - для работы с `LB`
|
||||
- `.Node()` - для работы с `Node`
|
||||
- `.PCIDevice()` - для работы с `PCIDevice`
|
||||
- `.RG()` - для работы с `RG`
|
||||
- `.SEP()` - для работы с `SEP`
|
||||
@@ -479,6 +501,7 @@ func main() {
|
||||
- `.Tasks()` - для работы с `Tasks`
|
||||
- `.User()` - для работы с `User`
|
||||
- `.VGPU()` - для работы с `VGPU`
|
||||
- `.VFPool()` - для работы с `VFPool`
|
||||
- `.VINS()` - для работы с `VINS`
|
||||
|
||||
3. Вызвать метод, отвечающий за выполнение запроса и передать в него:
|
||||
@@ -828,6 +851,87 @@ func main() {
|
||||
}
|
||||
```
|
||||
|
||||
### Методы поля Result для группы tasks
|
||||
|
||||
Поле Result внутри структур группы tasks имеет тип интерфейс и может содержать:
|
||||
- строку о результате выполнения задачи, например `true`
|
||||
- массив, содержащий ID и имя созданного ресурса, например `[12345, "resource_name"]`
|
||||
- массив, содержащий информацию о восстновленных дисках, например `[{"computeId": 123, "diskId": 456}, {"computeId": 789, "diskId": 10}]`
|
||||
|
||||
Соответственно, для получения информации из поля Result доступны следующие методы:
|
||||
- ToString(): строковое представление результата выполнения задачи
|
||||
- ID() и Name(): получение ID и имени созданного в результате выполнения задачи ресурса
|
||||
- ToMaps(): получение списка карт, содержащих информацию о дисках, восстановленных в результате выполнения задачи.
|
||||
Все методы оборудованы возвратом ошибок. Непустая ошибка означает, что из поля Result нельзя получить информацию, которую предоставляет метод.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"fmt"
|
||||
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/tasks"
|
||||
tasks_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/tasks"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Настройка конфигурации
|
||||
cfg := config.Config{
|
||||
AppID: "<APPID>",
|
||||
AppSecret: "<APPSECRET>",
|
||||
SSOURL: "https://sso.digitalenergy.online",
|
||||
DecortURL: "https://mr4.digitalenergy.online",
|
||||
Retries: 5,
|
||||
}
|
||||
|
||||
// Создание клиента
|
||||
client := decort.New(cfg)
|
||||
|
||||
// Создание структуры запроса GetRequest на получение информации о конкретной задаче и выполнение запроса с помощью конвейера
|
||||
getReq := tasks.GetRequest{
|
||||
AuditID: "b6316",
|
||||
}
|
||||
task, err := client.CloudAPI().Tasks().Get(context.Background(), getReq)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// Получение списка карт с информацией о восстановленных дисках
|
||||
maps, err := task.Result.ToMaps()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Println(maps)
|
||||
|
||||
// Получение строкового результата выполнения задачи task
|
||||
res, _ := task.Result.ToString()
|
||||
fmt.Println(res)
|
||||
|
||||
// Создание структуры запроса ListRequest на получение информации о всех задачах и выполнение запроса с помощью конвейера
|
||||
listReq := tasks_cb.ListRequest{}
|
||||
tasks, err := client.CloudBroker().Tasks().List(context.Background(), listReq)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, t := range tasks {
|
||||
// Получение id ресурса, созданного в результате выполнения задачи t
|
||||
id, err := task.Result.ID()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Println(id)
|
||||
|
||||
// Получение имени ресурса, созданного в результате выполнения задачи t
|
||||
name, _ := task.Result.Name()
|
||||
fmt.Println(name)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Работа с legacy клиентом
|
||||
|
||||
Работа с legacy клиентом применяется для пользователей, которые не используют для авторизации decs3o.
|
||||
@@ -1290,3 +1394,65 @@ func main() {
|
||||
fmt.Println(res)
|
||||
}
|
||||
```
|
||||
#### Пример валидации запросов, имеющих в своей структуре поле RAM (или MasterRam/WorkerRAM)
|
||||
|
||||
Если структура запроса содержит поле RAM (или MasterRam/WorkerRAM), то он может быть проверен на валидность. Для этого запрос должен быть передан в функцию ValidateRAM. Вторым аргументом ValidateRAM ожидает число uint64. Рекомендуется использовать константу constants.RAM_DIVISIBILITY. Функция проверит кратно ли значение поля RAM (или MasterRam/WorkerRAM) этому числу.
|
||||
|
||||
#### Пример выполнения запроса
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/kvmx86"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Настройка конфигурации
|
||||
cfg := config.Config{
|
||||
AppID: "<APPID>",
|
||||
AppSecret: "<APPSECRET>",
|
||||
SSOURL: "https://sso-delta.qa.loc:8443",
|
||||
DecortURL: "https://delta.qa.loc",
|
||||
Retries: 5,
|
||||
SSLSkipVerify: true,
|
||||
}
|
||||
|
||||
// Создание клиента
|
||||
client := decort.New(cfg)
|
||||
|
||||
// Создание структуры запроса
|
||||
// CreateRequest - реквест на создание виртуальной машины
|
||||
req := kvmx86.CreateRequest{
|
||||
Name: "kvmx86",
|
||||
RGID: 907,
|
||||
CPU: 2048,
|
||||
RAM: 1024,
|
||||
ImageID: 161,
|
||||
}
|
||||
|
||||
// Валидация запроса
|
||||
err := validators.ValidateRAM(req, constants.RAM_DIVISIBILITY)
|
||||
if err != nil {
|
||||
log.Fatalf("unable to validate request: %v", err)
|
||||
}
|
||||
//Выполнение запроса с помощью конвейера
|
||||
res, err := client.CloudBroker().KVMX86().Create(context.Background(), req)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
log.Println(res)
|
||||
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user