Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ad1ec7a61 |
213
README.md
213
README.md
@@ -7,7 +7,6 @@ Dynamix SDK - это библиотека, написанная на языке
|
|||||||
- Версия 9.0.х Dynamix-SDK соответствует 4.1.0 версии платформы
|
- Версия 9.0.х Dynamix-SDK соответствует 4.1.0 версии платформы
|
||||||
- Версия 10.0.х Dynamix-SDK соответствует 4.2.0 версии платформы
|
- Версия 10.0.х Dynamix-SDK соответствует 4.2.0 версии платформы
|
||||||
- Версия 11.0.х Dynamix-SDK соответствует 4.3.0 версии платформы
|
- Версия 11.0.х Dynamix-SDK соответствует 4.3.0 версии платформы
|
||||||
- Версия 12.0.х Dynamix-SDK соответствует 4.4.0 версии платформы
|
|
||||||
|
|
||||||
## Оглавление
|
## Оглавление
|
||||||
|
|
||||||
@@ -77,7 +76,7 @@ Dynamix SDK - это библиотека, написанная на языке
|
|||||||
Выполните команду в терминале:
|
Выполните команду в терминале:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v11
|
||||||
```
|
```
|
||||||
|
|
||||||
## Список API
|
## Список API
|
||||||
@@ -86,7 +85,6 @@ go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
|||||||
|
|
||||||
- `cloudapi` - пользовательская группа, которая позволяет воспользоваться всем стардартным функционалом платформы;
|
- `cloudapi` - пользовательская группа, которая позволяет воспользоваться всем стардартным функционалом платформы;
|
||||||
- `cloudbroker` - административная группа, которая позволяет воспользоваться всем стандартным функционалом платформы и расширенными возможностями, включающими в себя управление пользователями, ресурсами, платформами размещения ресурсов и т.д.
|
- `cloudbroker` - административная группа, которая позволяет воспользоваться всем стандартным функционалом платформы и расширенными возможностями, включающими в себя управление пользователями, ресурсами, платформами размещения ресурсов и т.д.
|
||||||
- `sdn` - группа для работы с SDN;
|
|
||||||
|
|
||||||
### Cloudapi
|
### Cloudapi
|
||||||
|
|
||||||
@@ -109,15 +107,11 @@ go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
|||||||
- `Locations` - получение информации о grid площадки;
|
- `Locations` - получение информации о grid площадки;
|
||||||
- `Prometheus` - получение статистики prometheus;
|
- `Prometheus` - получение статистики prometheus;
|
||||||
- `RG` - управление ресурсными группами аккаунта;
|
- `RG` - управление ресурсными группами аккаунта;
|
||||||
- `Security group` – управление группами безопасности;
|
|
||||||
- `SEP` - управление storage endpoint (sep);
|
- `SEP` - управление storage endpoint (sep);
|
||||||
- `Stack` - получение информации о вычислительных узлах;
|
- `Stack` - получение информации о вычислительных узлах;
|
||||||
- `Storage policy` – получение информации о политиках хранения;
|
|
||||||
- `Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
|
- `Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
|
||||||
- `Trunk` - получение информации о транковых портах;
|
|
||||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||||
- `VINS` - управление виртуальными изолированными сетями;
|
- `VINS` - управление виртуальными изолированными сетями.
|
||||||
- `Zone` - управление зонами.
|
|
||||||
|
|
||||||
### Cloudbroker
|
### Cloudbroker
|
||||||
|
|
||||||
@@ -128,7 +122,6 @@ go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
|||||||
- `Audit` - получение информации о событиях системы;
|
- `Audit` - получение информации о событиях системы;
|
||||||
- `APIAccess` - управление доступом к API и его объектам;
|
- `APIAccess` - управление доступом к API и его объектам;
|
||||||
- `Backup` - управление резервным копированием;
|
- `Backup` - управление резервным копированием;
|
||||||
- `BService` - управление группами виртуальных машин (computes);
|
|
||||||
- `Compute` - управление виртуальными машинами (индивидуально);
|
- `Compute` - управление виртуальными машинами (индивидуально);
|
||||||
- `Disks` - управление виртуальными дисками;
|
- `Disks` - управление виртуальными дисками;
|
||||||
- `DPDK` - управление виртуальными сетями DPDK;
|
- `DPDK` - управление виртуальными сетями DPDK;
|
||||||
@@ -146,24 +139,13 @@ go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
|||||||
- `Prometheus` - получение статистики prometheus;
|
- `Prometheus` - получение статистики prometheus;
|
||||||
- `Resmon` - получение статистики resource monitoring;
|
- `Resmon` - получение статистики resource monitoring;
|
||||||
- `RG` - управление ресурсными группами аккаунта;
|
- `RG` - управление ресурсными группами аккаунта;
|
||||||
- `Security group` – управление группами безопасности;
|
|
||||||
- `SEP` - управление storage endpoint (sep);
|
- `SEP` - управление storage endpoint (sep);
|
||||||
- `Stack` - получение информации о вычислительных узлах;
|
- `Stack` - получение информации о вычислительных узлах;
|
||||||
- `Storage policy` – управление политиками хранения;
|
|
||||||
- `Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
|
- `Tasks` - получение информации о ходе выполнения асинхронных задач (например, создание кластера);
|
||||||
- `Trunk` - управление транковыми портами;
|
|
||||||
- `User` - управление пользователями (индивидуально);
|
- `User` - управление пользователями (индивидуально);
|
||||||
- `VGPU` - управление виртуальными графическими процессорами;
|
- `VGPU` - управление виртуальными графическими процессорами;
|
||||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||||
- `VINS` - управление виртуальными изолированными сетями.
|
- `VINS` - управление виртуальными изолированными сетями.
|
||||||
- `Zone` - управление зонами.
|
|
||||||
|
|
||||||
### SDN
|
|
||||||
|
|
||||||
`SDN` позволяет выполнять запросы к группе пользовательских конечных точек
|
|
||||||
Данная группа ручек позволяет выполнять следующие операции в платформе:
|
|
||||||
|
|
||||||
- `AccessGroup` - управление группами доступа
|
|
||||||
|
|
||||||
## Работа с библиотекой
|
## Работа с библиотекой
|
||||||
|
|
||||||
@@ -194,7 +176,7 @@ go get -u repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main(){
|
func main(){
|
||||||
@@ -219,7 +201,7 @@ func main(){
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -264,8 +246,8 @@ sslSkipVerify: false
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -291,7 +273,6 @@ func main() {
|
|||||||
|
|
||||||
- `pkg/cloudapi` - для `cloudapi`
|
- `pkg/cloudapi` - для `cloudapi`
|
||||||
- `pkg/cloudbroker` - для `cloudbroker`
|
- `pkg/cloudbroker` - для `cloudbroker`
|
||||||
- `pkg/sdn` - для `sdn`
|
|
||||||
|
|
||||||
В каждом пакете находятся пакеты групп API:
|
В каждом пакете находятся пакеты групп API:
|
||||||
|
|
||||||
@@ -312,21 +293,16 @@ func main() {
|
|||||||
- `pkg/cloudapi/locations` - для `Locations`
|
- `pkg/cloudapi/locations` - для `Locations`
|
||||||
- `pkg/cloudapi/prometheus` - для `Prometheus`
|
- `pkg/cloudapi/prometheus` - для `Prometheus`
|
||||||
- `pkg/cloudapi/rg` - для `RG`
|
- `pkg/cloudapi/rg` - для `RG`
|
||||||
- `pkg/cloudapi/secgroup` - для `Security group`
|
|
||||||
- `pkg/cloudapi/sep` - для `SEP`
|
- `pkg/cloudapi/sep` - для `SEP`
|
||||||
- `pkg/cloudapi/stack` - для `Stack`
|
- `pkg/cloudapi/stack` - для `Stack`
|
||||||
- `pkg/cloudapi/stpolicy` - для `Storage policy`
|
|
||||||
- `pkg/cloudapi/tasks` - для `Tasks`
|
- `pkg/cloudapi/tasks` - для `Tasks`
|
||||||
- `pkg/cloudapi/trunk` - для `Trunk`
|
|
||||||
- `pkg/cloudapi/vfpool` - для `VFPool`
|
- `pkg/cloudapi/vfpool` - для `VFPool`
|
||||||
- `pkg/cloudapi/vins` - для `VINS`
|
- `pkg/cloudapi/vins` - для `VINS`
|
||||||
- `pkg/cloudapi/zone` - для `Zone`
|
|
||||||
- **cloudbroker**:
|
- **cloudbroker**:
|
||||||
- `pkg/cloudbroker/account` - для `Account`
|
- `pkg/cloudbroker/account` - для `Account`
|
||||||
- `pkg/cloudbroker/audit` - для `Audit`
|
- `pkg/cloudbroker/audit` - для `Audit`
|
||||||
- `pkg/cloudbroker/apiaccess` - для `APIAccess`
|
- `pkg/cloudbroker/apiaccess` - для `APIAccess`
|
||||||
- `pkg/cloudbroker/backup` - для `Backup`
|
- `pkg/cloudbroker/backup` - для `Backup`
|
||||||
- `pkg/cloudbroker/bservice` - для `Basic Service`
|
|
||||||
- `pkg/cloudbroker/compute` - для `Compute`
|
- `pkg/cloudbroker/compute` - для `Compute`
|
||||||
- `pkg/cloudbroker/disks` - для `Disks`
|
- `pkg/cloudbroker/disks` - для `Disks`
|
||||||
- `pkg/cloudbroker/dpdknet` - для `DPDK`
|
- `pkg/cloudbroker/dpdknet` - для `DPDK`
|
||||||
@@ -344,19 +320,13 @@ func main() {
|
|||||||
- `pkg/cloudbroker/prometheus` - для `Prometheus`
|
- `pkg/cloudbroker/prometheus` - для `Prometheus`
|
||||||
- `pkg/cloudbroker/resmon` - для `Resmon`
|
- `pkg/cloudbroker/resmon` - для `Resmon`
|
||||||
- `pkg/cloudbroker/rg` - для `RG`
|
- `pkg/cloudbroker/rg` - для `RG`
|
||||||
- `pkg/cloudbroker/secgroup` - для `Security group`
|
|
||||||
- `pkg/cloudbroker/sep` - для `SEP`
|
- `pkg/cloudbroker/sep` - для `SEP`
|
||||||
- `pkg/cloudbroker/stack` - для `Stack`
|
- `pkg/cloudbroker/stack` - для `Stack`
|
||||||
- `pkg/cloudbroker/stpolicy` - для `Storage policy`
|
|
||||||
- `pkg/cloudbroker/tasks` - для `Tasks`
|
- `pkg/cloudbroker/tasks` - для `Tasks`
|
||||||
- `pkg/cloudbroker/trunk` - для `Trunk`
|
|
||||||
- `pkg/cloudbroker/user` - для `User`
|
- `pkg/cloudbroker/user` - для `User`
|
||||||
- `pkg/cloudbroker/vgpu` - для `VGPU`
|
- `pkg/cloudbroker/vgpu` - для `VGPU`
|
||||||
- `pkg/cloudbroker/vfpool` - для `VFPool`
|
- `pkg/cloudbroker/vfpool` - для `VFPool`
|
||||||
- `pkg/cloudbroker/vins` - для `VINS`
|
- `pkg/cloudbroker/vins` - для `VINS`
|
||||||
- `pkg/cloudbroker/zone` - для `Zone`
|
|
||||||
- **sdn**:
|
|
||||||
- `pkg/sdn/access_groups` - для `AccessGroups`
|
|
||||||
|
|
||||||
Все поля структуры имеют описание, в которых содержится:
|
Все поля структуры имеют описание, в которых содержится:
|
||||||
|
|
||||||
@@ -456,9 +426,9 @@ type CreateRequest struct {
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/kvmx86"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/kvmx86"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -490,7 +460,7 @@ func main() {
|
|||||||
|
|
||||||
Чтобы выполнить запрос, необходимо:
|
Чтобы выполнить запрос, необходимо:
|
||||||
|
|
||||||
1. Вызвать у клиента метод, отвечающий за определение группы API для взаимодействия, это может быть `.CloudAPI()`, `.CloudBroker()` или `.SDN()`. Данные методы возвращают соответствующие структуры, с помощью которых можно совершать запросы.
|
1. Вызвать у клиента метод, отвечаеющий за определение группы API для взаимодействия, это может быть `.CloudAPI()`, либо `.CloudBroker()`. Данные методы возвращаеют соответствующие структуры, с помощью которых можно совершать запросы.
|
||||||
2. Вызвать у возвращенной структуры метод, определяющий группу ручек для взаимодействия.
|
2. Вызвать у возвращенной структуры метод, определяющий группу ручек для взаимодействия.
|
||||||
|
|
||||||
Доступные методы для `.CloudAPI()`:
|
Доступные методы для `.CloudAPI()`:
|
||||||
@@ -511,15 +481,11 @@ func main() {
|
|||||||
- `.Locations()` - для работы с `Locations`
|
- `.Locations()` - для работы с `Locations`
|
||||||
- `.Prometheus()` - для работы с `Prometheus`
|
- `.Prometheus()` - для работы с `Prometheus`
|
||||||
- `.RG()` - для работы с `RG`
|
- `.RG()` - для работы с `RG`
|
||||||
- `.SecurityGroup()` - для работы с `Security Group`
|
|
||||||
- `.SEP()` - для работы с `SEP`
|
- `.SEP()` - для работы с `SEP`
|
||||||
- `.Stack()` - для работы с `Stack`
|
- `.Stack()` - для работы с `Stack`
|
||||||
- `.StPolicy()` - для работы с `Storage Policy`
|
|
||||||
- `.Tasks()` - для работы с `Tasks`
|
- `.Tasks()` - для работы с `Tasks`
|
||||||
- `.Trunk()` - для работы с `Trunk`
|
|
||||||
- `.VFPool()` - для работы с `VFPool`
|
- `.VFPool()` - для работы с `VFPool`
|
||||||
- `.VINS()` - для работы с `VINS`
|
- `.VINS()` - для работы с `VINS`
|
||||||
- `.Zone()` - для работы с `Zone`
|
|
||||||
|
|
||||||
Доступные методы для `.CloudBroker()`:
|
Доступные методы для `.CloudBroker()`:
|
||||||
|
|
||||||
@@ -527,7 +493,6 @@ func main() {
|
|||||||
- `.Audit()` - для работы с `Audit`
|
- `.Audit()` - для работы с `Audit`
|
||||||
- `.APIAccess()` - для работы с `APIAccess`
|
- `.APIAccess()` - для работы с `APIAccess`
|
||||||
- `.Backup()` - для работы с `Backup`
|
- `.Backup()` - для работы с `Backup`
|
||||||
- `.BService()` - для работы с `BService`
|
|
||||||
- `.Compute()` - для работы с `Compute`
|
- `.Compute()` - для работы с `Compute`
|
||||||
- `.Disks()` - для работы с `Disks`
|
- `.Disks()` - для работы с `Disks`
|
||||||
- `.DPDKNet()` - для работы с `DPDK`
|
- `.DPDKNet()` - для работы с `DPDK`
|
||||||
@@ -545,21 +510,13 @@ func main() {
|
|||||||
- `.Prometheus()` - для работы с `Prometheus`
|
- `.Prometheus()` - для работы с `Prometheus`
|
||||||
- `.Resmon()` - для работы с `Resmon`
|
- `.Resmon()` - для работы с `Resmon`
|
||||||
- `.RG()` - для работы с `RG`
|
- `.RG()` - для работы с `RG`
|
||||||
- `.SecurityGroup()` - для работы с `Security Group`
|
|
||||||
- `.SEP()` - для работы с `SEP`
|
- `.SEP()` - для работы с `SEP`
|
||||||
- `.Stack()` - для работы с `Stack`
|
- `.Stack()` - для работы с `Stack`
|
||||||
- `.StPolicy()` - для работы с `Storage Policy`
|
|
||||||
- `.Tasks()` - для работы с `Tasks`
|
- `.Tasks()` - для работы с `Tasks`
|
||||||
- `.Trunk()` - для работы с `Trunk`
|
|
||||||
- `.User()` - для работы с `User`
|
- `.User()` - для работы с `User`
|
||||||
- `.VGPU()` - для работы с `VGPU`
|
- `.VGPU()` - для работы с `VGPU`
|
||||||
- `.VFPool()` - для работы с `VFPool`
|
- `.VFPool()` - для работы с `VFPool`
|
||||||
- `.VINS()` - для работы с `VINS`
|
- `.VINS()` - для работы с `VINS`
|
||||||
- `.Zone()` - для работы с `Zone`
|
|
||||||
|
|
||||||
Доступные методы для `.SDN()`:
|
|
||||||
|
|
||||||
- `.AccessGroup()` - для работы с `AccessGroup`
|
|
||||||
|
|
||||||
3. Вызвать метод, отвечающий за выполнение запроса и передать в него:
|
3. Вызвать метод, отвечающий за выполнение запроса и передать в него:
|
||||||
|
|
||||||
@@ -585,9 +542,9 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/kvmx86"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/kvmx86"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -635,9 +592,9 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/account"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -815,9 +772,9 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudbroker/compute"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudbroker/compute"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -873,9 +830,9 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/bservice"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/bservice"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -928,10 +885,10 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/tasks"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/tasks"
|
||||||
tasks_cb "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudbroker/tasks"
|
tasks_cb "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudbroker/tasks"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1011,7 +968,7 @@ func main() {
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main(){
|
func main(){
|
||||||
@@ -1035,7 +992,7 @@ func main(){
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1076,8 +1033,8 @@ sslSkipVerify: true
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1104,8 +1061,8 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1187,7 +1144,7 @@ func main() {
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main(){
|
func main(){
|
||||||
@@ -1215,7 +1172,7 @@ func main(){
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1232,7 +1189,7 @@ func main() {
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1298,8 +1255,8 @@ func main() {
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1332,8 +1289,8 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1373,8 +1330,8 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1412,8 +1369,8 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1466,11 +1423,11 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/constants"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/constants"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudbroker/kvmx86"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudbroker/kvmx86"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1532,7 +1489,7 @@ func main() {
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main(){
|
func main(){
|
||||||
@@ -1565,8 +1522,8 @@ func main(){
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -1597,46 +1554,46 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12"
|
decort "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Настройка конфигурации
|
// Настройка конфигурации
|
||||||
legacyCfg := config.LegacyConfig{
|
legacyCfg := config.LegacyConfig{
|
||||||
Username: "<USERNAME>",
|
Username: "<USERNAME>",
|
||||||
Password: "<PASSWORD>",
|
Password: "<PASSWORD>",
|
||||||
Domain: "dynamix",
|
Domain: "dynamix",
|
||||||
DecortURL: "https://mr4.digitalenergy.online",
|
DecortURL: "https://mr4.digitalenergy.online",
|
||||||
Retries: 5,
|
Retries: 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
legacyCfg.SetTimeout(5 * time.Minute)
|
||||||
|
|
||||||
|
cfg := config.UniversalConfig{
|
||||||
|
LegacyConfig: &legacyCfg,
|
||||||
}
|
}
|
||||||
|
|
||||||
legacyCfg.SetTimeout(5 * time.Minute)
|
// Создание клиента
|
||||||
|
universalClient := decort.NewUniversal(cfg)
|
||||||
|
|
||||||
|
// Создание структуры запроса
|
||||||
|
// CreateRequest - реквест на создание виртуальной машины
|
||||||
|
req := kvmx86.CreateRequest{
|
||||||
|
RGID: 123,
|
||||||
|
Name: "compute",
|
||||||
|
CPU: 4,
|
||||||
|
RAM: 4096,
|
||||||
|
ImageID: 321,
|
||||||
|
}
|
||||||
|
|
||||||
cfg := config.UniversalConfig{
|
// Выполнение запроса
|
||||||
LegacyConfig: &legacyCfg,
|
res, err := universalClient.CloudAPI().KVMX86().Create(context.Background(), req)
|
||||||
}
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
// Создание клиента
|
fmt.Println(res)
|
||||||
universalClient := decort.NewUniversal(cfg)
|
|
||||||
|
|
||||||
// Создание структуры запроса
|
|
||||||
// CreateRequest - реквест на создание виртуальной машины
|
|
||||||
req := kvmx86.CreateRequest{
|
|
||||||
RGID: 123,
|
|
||||||
Name: "compute",
|
|
||||||
CPU: 4,
|
|
||||||
RAM: 4096,
|
|
||||||
ImageID: 321,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Выполнение запроса
|
|
||||||
res, err := universalClient.CloudAPI().KVMX86().Create(context.Background(), req)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(res)
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -1650,7 +1607,7 @@ func main() {
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main(){
|
func main(){
|
||||||
|
|||||||
2
check.go
2
check.go
@@ -8,7 +8,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/constants"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/constants"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CheckInfo struct {
|
type CheckInfo struct {
|
||||||
|
|||||||
102
client.go
102
client.go
@@ -4,7 +4,6 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"encoding/base64"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@@ -17,12 +16,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-querystring/query"
|
"github.com/google/go-querystring/query"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/constants"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/constants"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudbroker"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudbroker"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/sdn"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// DecortClient is HTTP-client for platform
|
// DecortClient is HTTP-client for platform
|
||||||
@@ -40,6 +38,12 @@ func New(cfg config.Config) *DecortClient {
|
|||||||
cfg.Retries = 5
|
cfg.Retries = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var expiryTime time.Time
|
||||||
|
|
||||||
|
if cfg.Token != "" {
|
||||||
|
expiryTime = time.Now().AddDate(0, 0, 1)
|
||||||
|
}
|
||||||
|
|
||||||
return &DecortClient{
|
return &DecortClient{
|
||||||
decortURL: cfg.DecortURL,
|
decortURL: cfg.DecortURL,
|
||||||
client: &http.Client{
|
client: &http.Client{
|
||||||
@@ -50,8 +54,9 @@ func New(cfg config.Config) *DecortClient {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
cfg: trimConfig(&cfg),
|
cfg: trimConfig(&cfg),
|
||||||
mutex: &sync.Mutex{},
|
expiryTime: expiryTime,
|
||||||
|
mutex: &sync.Mutex{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,11 +70,6 @@ func (dc *DecortClient) CloudBroker() *cloudbroker.CloudBroker {
|
|||||||
return cloudbroker.New(dc)
|
return cloudbroker.New(dc)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SDN builder
|
|
||||||
func (dc *DecortClient) SDN() *sdn.SDN {
|
|
||||||
return sdn.New(dc)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DecortApiCall method for sending requests to the platform
|
// DecortApiCall method for sending requests to the platform
|
||||||
func (dc *DecortClient) DecortApiCall(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
func (dc *DecortClient) DecortApiCall(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
||||||
|
|
||||||
@@ -107,47 +107,6 @@ func (dc *DecortClient) DecortApiCall(ctx context.Context, method, url string, p
|
|||||||
return respBytes, err
|
return respBytes, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecortApiCallCtype method for sending requests to the platform with content type
|
|
||||||
func (dc *DecortClient) DecortApiCallCtype(ctx context.Context, method, url, ctype string, params interface{}) ([]byte, error) {
|
|
||||||
|
|
||||||
var body *bytes.Buffer
|
|
||||||
|
|
||||||
switch ctype {
|
|
||||||
case constants.MIMESTREAM:
|
|
||||||
body = bytes.NewBuffer(params.([]byte))
|
|
||||||
case constants.MIMEJSON:
|
|
||||||
jsonBody, err := json.Marshal(params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
body = bytes.NewBuffer(jsonBody)
|
|
||||||
default:
|
|
||||||
ctype = constants.MIMEPOSTForm
|
|
||||||
values, err := query.Values(params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
body = bytes.NewBufferString(values.Encode())
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, method, dc.decortURL+constants.RESTMACHINE+url, body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// get token
|
|
||||||
if err = dc.getToken(ctx); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
// perform request
|
|
||||||
respBytes, err := dc.do(req, ctype)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBytes, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// DecortApiCallMP method for sending requests to the platform
|
// DecortApiCallMP method for sending requests to the platform
|
||||||
func (dc *DecortClient) DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
func (dc *DecortClient) DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
||||||
body, ctype, err := multiPartReq(params)
|
body, ctype, err := multiPartReq(params)
|
||||||
@@ -211,13 +170,8 @@ func (dc *DecortClient) getToken(ctx context.Context) error {
|
|||||||
|
|
||||||
// save token in config
|
// save token in config
|
||||||
token := string(tokenBytes)
|
token := string(tokenBytes)
|
||||||
expiryTime, err := getTokenExp(token)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot get expiry time: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
dc.cfg.Token = token
|
dc.cfg.Token = token
|
||||||
dc.expiryTime = expiryTime
|
dc.expiryTime = time.Now().AddDate(0, 0, 1)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -421,29 +375,3 @@ func trimConfig(cfg *config.Config) config.Config {
|
|||||||
cfg.DecortURL = strings.TrimSuffix(cfg.DecortURL, "/")
|
cfg.DecortURL = strings.TrimSuffix(cfg.DecortURL, "/")
|
||||||
return *cfg
|
return *cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTokenExp(token string) (time.Time, error) {
|
|
||||||
parts := strings.Split(token, ".")
|
|
||||||
if len(parts) != 3 {
|
|
||||||
return time.Time{}, fmt.Errorf("invalid token format")
|
|
||||||
}
|
|
||||||
|
|
||||||
payload, err := base64.RawURLEncoding.DecodeString(parts[1])
|
|
||||||
if err != nil {
|
|
||||||
return time.Time{}, fmt.Errorf("error decode payload from token: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var claims map[string]interface{}
|
|
||||||
if err := json.Unmarshal(payload, &claims); err != nil {
|
|
||||||
return time.Time{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
exp, ok := claims["exp"]
|
|
||||||
if !ok {
|
|
||||||
return time.Time{}, fmt.Errorf("exp time bot found")
|
|
||||||
}
|
|
||||||
|
|
||||||
expTime := time.Unix(int64(exp.(float64)), 0)
|
|
||||||
|
|
||||||
return expTime, nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-querystring/query"
|
"github.com/google/go-querystring/query"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/constants"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/constants"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudbroker"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudbroker"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BVSDecortClient is HTTP-client for platform
|
// BVSDecortClient is HTTP-client for platform
|
||||||
@@ -131,72 +131,6 @@ func (bdc *BVSDecortClient) DecortApiCall(ctx context.Context, method, url strin
|
|||||||
return respBytes, err
|
return respBytes, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecortApiCallCtype method for sending requests to the platform with content type
|
|
||||||
func (bdc *BVSDecortClient) DecortApiCallCtype(ctx context.Context, method, url, ctype string, params interface{}) ([]byte, error) {
|
|
||||||
var body *bytes.Buffer
|
|
||||||
|
|
||||||
switch ctype {
|
|
||||||
case constants.MIMESTREAM:
|
|
||||||
body = bytes.NewBuffer(params.([]byte))
|
|
||||||
case constants.MIMEJSON:
|
|
||||||
jsonBody, err := json.Marshal(params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
body = bytes.NewBuffer(jsonBody)
|
|
||||||
default:
|
|
||||||
ctype = constants.MIMEPOSTForm
|
|
||||||
values, err := query.Values(params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
body = bytes.NewBufferString(values.Encode())
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, method, bdc.decortURL+constants.RESTMACHINE+url, body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// get token
|
|
||||||
if bdc.cfg.Token.AccessToken == "" {
|
|
||||||
if _, err = bdc.GetToken(ctx); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// refresh token
|
|
||||||
if bdc.cfg.Token.RefreshToken != "" && bdc.cfg.Token.Expiry.Add(-time.Duration(bdc.cfg.TimeToRefresh)*time.Minute).Before(time.Now()) {
|
|
||||||
if _, err := bdc.RefreshToken(ctx); err != nil {
|
|
||||||
if _, err = bdc.GetToken(ctx); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// perform request
|
|
||||||
reqCopy := req.Clone(ctx)
|
|
||||||
respBytes, err := bdc.do(req, ctype)
|
|
||||||
if err == nil {
|
|
||||||
return respBytes, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// get token and retry in case of access denied
|
|
||||||
if err.Error() == "access is denied" {
|
|
||||||
_, err = bdc.GetToken(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
respBytes, err = bdc.do(reqCopy, "")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBytes, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bdc *BVSDecortClient) DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
func (bdc *BVSDecortClient) DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
||||||
body, ctype, err := multiPartReq(params)
|
body, ctype, err := multiPartReq(params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Configuration for creating request to platform
|
// Configuration for creating request to platform
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/serialization"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/serialization"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BVSConfig struct {
|
type BVSConfig struct {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Legacy client configuration
|
// Legacy client configuration
|
||||||
|
|||||||
16
go.mod
16
go.mod
@@ -1,20 +1,20 @@
|
|||||||
module repository.basistech.ru/BASIS/dynamix-golang-sdk/v12
|
module repository.basistech.ru/BASIS/dynamix-golang-sdk/v11
|
||||||
|
|
||||||
go 1.20
|
go 1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/go-playground/validator/v10 v10.11.2
|
github.com/go-playground/validator/v10 v10.28.0
|
||||||
github.com/google/go-querystring v1.1.0
|
github.com/google/go-querystring v1.1.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.10 // indirect
|
||||||
github.com/go-playground/locales v0.14.1 // indirect
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
github.com/google/go-cmp v0.5.9 // indirect
|
github.com/google/go-cmp v0.5.9 // indirect
|
||||||
github.com/kr/text v0.2.0 // indirect
|
github.com/leodido/go-urn v1.4.0 // indirect
|
||||||
github.com/leodido/go-urn v1.2.1 // indirect
|
golang.org/x/crypto v0.42.0 // indirect
|
||||||
golang.org/x/crypto v0.15.0 // indirect
|
golang.org/x/sys v0.36.0 // indirect
|
||||||
golang.org/x/sys v0.14.0 // indirect
|
golang.org/x/text v0.29.0 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|||||||
38
go.sum
38
go.sum
@@ -1,38 +1,34 @@
|
|||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.10 h1:zyueNbySn/z8mJZHLt6IPw0KoZsiQNszIpU+bX4+ZK0=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.10/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
|
||||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||||
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||||
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||||
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||||
github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU=
|
github.com/go-playground/validator/v10 v10.28.0 h1:Q7ibns33JjyW48gHkuFT91qX48KG0ktULL6FgHdG688=
|
||||||
github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s=
|
github.com/go-playground/validator/v10 v10.28.0/go.mod h1:GoI6I1SjPBh9p7ykNE/yj3fFYbyDOpwMn5KXd+m2hUU=
|
||||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
||||||
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
|
||||||
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
|
|
||||||
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
|
||||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
|
||||||
golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
|
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
|
||||||
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
|
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
|
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
|
||||||
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -7,9 +7,6 @@ type Caller interface {
|
|||||||
// DecortApiCall method for sending requests to the platform
|
// DecortApiCall method for sending requests to the platform
|
||||||
DecortApiCall(ctx context.Context, method, url string, params interface{}) ([]byte, error)
|
DecortApiCall(ctx context.Context, method, url string, params interface{}) ([]byte, error)
|
||||||
|
|
||||||
// DecortApiCallCtype method for sending requests to the platform
|
|
||||||
DecortApiCallCtype(ctx context.Context, method, url, ctype string, params interface{}) ([]byte, error)
|
|
||||||
|
|
||||||
// DecortApiCallMP method for sending requests to the platform
|
// DecortApiCallMP method for sending requests to the platform
|
||||||
DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error)
|
DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,23 +2,9 @@ package constants
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
RESTMACHINE = "/restmachine"
|
RESTMACHINE = "/restmachine"
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
// RAM_DIVISIBILITY sets divisibility of RAM value
|
||||||
MIMEJSON = "application/json"
|
RAM_DIVISIBILITY uint64 = 128
|
||||||
MIMEHTML = "text/html"
|
|
||||||
MIMEXML = "application/xml"
|
|
||||||
MIMEXML2 = "text/xml"
|
|
||||||
MIMEPlain = "text/plain"
|
|
||||||
MIMEPOSTForm = "application/x-www-form-urlencoded"
|
|
||||||
MIMEMultipartPOSTForm = "multipart/form-data"
|
|
||||||
MIMEPROTOBUF = "application/x-protobuf"
|
|
||||||
MIMEMSGPACK = "application/x-msgpack"
|
|
||||||
MIMEMSGPACK2 = "application/msgpack"
|
|
||||||
MIMEYAML = "application/x-yaml"
|
|
||||||
MIMEYAML2 = "application/yaml"
|
|
||||||
MIMETOML = "application/toml"
|
|
||||||
MIMESTREAM = "application/octet-stream"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var FileName = map[string]string{
|
var FileName = map[string]string{
|
||||||
@@ -28,6 +14,5 @@ var FileName = map[string]string{
|
|||||||
var K8sValues = []string{"labels", "taints", "annotations, additionalSANs"}
|
var K8sValues = []string{"labels", "taints", "annotations, additionalSANs"}
|
||||||
|
|
||||||
var VersionMap = map[string]string{
|
var VersionMap = map[string]string{
|
||||||
"4.4.0": "-",
|
"4.3.0": "-",
|
||||||
"4.3.0": "v11.0.0",
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,20 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-playground/validator/v10"
|
"github.com/go-playground/validator/v10"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/interfaces"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/interfaces"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/multierror"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/multierror"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// computeDriverValidator is used to validate Driver field in kvmx86 create.
|
||||||
|
func computeDriverValidator(fe validator.FieldLevel) bool {
|
||||||
|
fieldValue := fe.Field().String()
|
||||||
|
|
||||||
|
return IsInSlice(fieldValue, computeDriverValues)
|
||||||
|
}
|
||||||
|
|
||||||
// protoValidator is used to validate Proto fields.
|
// protoValidator is used to validate Proto fields.
|
||||||
func protoValidator(fe validator.FieldLevel) bool {
|
func protoValidator(fe validator.FieldLevel) bool {
|
||||||
fieldValue := fe.Field().String()
|
fieldValue := fe.Field().String()
|
||||||
@@ -51,6 +57,13 @@ func resTypesValidator(fe validator.FieldLevel) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// driverValidator is used to validate Driver fields.
|
||||||
|
func driverValidator(fe validator.FieldLevel) bool {
|
||||||
|
fieldValue := fe.Field().String()
|
||||||
|
|
||||||
|
return IsInSlice(fieldValue, driverValues)
|
||||||
|
}
|
||||||
|
|
||||||
// accountCUTypeValidator is used to validate CUType field.
|
// accountCUTypeValidator is used to validate CUType field.
|
||||||
func accountCUTypeValidator(fe validator.FieldLevel) bool {
|
func accountCUTypeValidator(fe validator.FieldLevel) bool {
|
||||||
fieldValue := fe.Field().String()
|
fieldValue := fe.Field().String()
|
||||||
@@ -107,27 +120,6 @@ func computex86NetTypeValidator(fe validator.FieldLevel) bool {
|
|||||||
return IsInSlice(fieldValue, computex86NetTypeValues)
|
return IsInSlice(fieldValue, computex86NetTypeValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
// securityGroupDirectionValidator is used to validate Direction field
|
|
||||||
func securityGroupDirectionValidator(fe validator.FieldLevel) bool {
|
|
||||||
fieldValue := fe.Field().String()
|
|
||||||
|
|
||||||
return IsInSlice(fieldValue, securityGroupDirectionValues)
|
|
||||||
}
|
|
||||||
|
|
||||||
// securityGroupEthertypeValidator is used to validate Ethertype field
|
|
||||||
func securityGroupEthertypeValidator(fe validator.FieldLevel) bool {
|
|
||||||
fieldValue := fe.Field().String()
|
|
||||||
|
|
||||||
return IsInSlice(fieldValue, securityGroupEthertypeValues)
|
|
||||||
}
|
|
||||||
|
|
||||||
// securityGroupProtocolValidator is used to validate Protocol field
|
|
||||||
func securityGroupProtocolValidator(fe validator.FieldLevel) bool {
|
|
||||||
fieldValue := fe.Field().String()
|
|
||||||
|
|
||||||
return IsInSlice(fieldValue, securityGroupProtocolValues)
|
|
||||||
}
|
|
||||||
|
|
||||||
// computeOrderValidator is used to validate Order field.
|
// computeOrderValidator is used to validate Order field.
|
||||||
func computeOrderValidator(fe validator.FieldLevel) bool {
|
func computeOrderValidator(fe validator.FieldLevel) bool {
|
||||||
fieldSlice, ok := fe.Field().Interface().([]string)
|
fieldSlice, ok := fe.Field().Interface().([]string)
|
||||||
@@ -214,6 +206,22 @@ func imageTypeValidator(fe validator.FieldLevel) bool {
|
|||||||
return IsInSlice(fieldValue, imageTypeValues)
|
return IsInSlice(fieldValue, imageTypeValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// imageDriversValidator is used to validate Drivers field.
|
||||||
|
func imageDriversValidator(fe validator.FieldLevel) bool {
|
||||||
|
fieldSlice, ok := fe.Field().Interface().([]string)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, item := range fieldSlice {
|
||||||
|
if !IsInSlice(item, imageDriversValues) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// imageArchitectureValidator is used to validate Architecture field.
|
// imageArchitectureValidator is used to validate Architecture field.
|
||||||
func imageArchitectureValidator(fe validator.FieldLevel) bool {
|
func imageArchitectureValidator(fe validator.FieldLevel) bool {
|
||||||
fieldValue := fe.Field().String()
|
fieldValue := fe.Field().String()
|
||||||
@@ -406,12 +414,6 @@ func languageValidator(fe validator.FieldLevel) bool {
|
|||||||
return IsInSlice(fieldValue, languageValues)
|
return IsInSlice(fieldValue, languageValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
func userProviderValidator(fe validator.FieldLevel) bool {
|
|
||||||
fieldValue := fe.Field().String()
|
|
||||||
|
|
||||||
return IsInSlice(fieldValue, userProviders)
|
|
||||||
}
|
|
||||||
|
|
||||||
// sepTypeValidator is used to validate sepType fields
|
// sepTypeValidator is used to validate sepType fields
|
||||||
func sepTypeValidator(fe validator.FieldLevel) bool {
|
func sepTypeValidator(fe validator.FieldLevel) bool {
|
||||||
fieldValue := fe.Field().String()
|
fieldValue := fe.Field().String()
|
||||||
@@ -419,13 +421,6 @@ func sepTypeValidator(fe validator.FieldLevel) bool {
|
|||||||
return IsInSlice(fieldValue, sepTypeValues)
|
return IsInSlice(fieldValue, sepTypeValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
// deviceValidator is used to validate extnet device fields
|
|
||||||
func deviceValidator(fe validator.FieldLevel) bool {
|
|
||||||
fieldValue := fe.Field().String()
|
|
||||||
|
|
||||||
return IsInSlice(fieldValue, deviceValues)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateRAM checks if request contains RAM value that is positive integer divisible by divisibility passed.
|
// ValidateRAM checks if request contains RAM value that is positive integer divisible by divisibility passed.
|
||||||
// It is recommended to pass constants.RAM_DIVISIBILITY as divisility arguement
|
// It is recommended to pass constants.RAM_DIVISIBILITY as divisility arguement
|
||||||
func ValidateRAM(r interfaces.RequestWithRAM, divisibility uint64) error {
|
func ValidateRAM(r interfaces.RequestWithRAM, divisibility uint64) error {
|
||||||
@@ -447,13 +442,3 @@ func ValidateRAM(r interfaces.RequestWithRAM, divisibility uint64) error {
|
|||||||
}
|
}
|
||||||
return multierror.Join(errs...)
|
return multierror.Join(errs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// trunkTagsValidator checks if trunk_tags is in range from 1 to 4095
|
|
||||||
func trunkTagsValidator(fe validator.FieldLevel) bool {
|
|
||||||
fieldValue := fe.Field().String()
|
|
||||||
numFieldValue, err := strconv.ParseInt(fieldValue, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return uint64(numFieldValue) >= uint64(trunkTagsMin) && uint64(numFieldValue) <= uint64(trunkTagsMax)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package validators
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/multierror"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/multierror"
|
||||||
|
|
||||||
"github.com/go-playground/validator/v10"
|
"github.com/go-playground/validator/v10"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ func errorMessage(fe validator.FieldError) string {
|
|||||||
case "isBool":
|
case "isBool":
|
||||||
return fmt.Sprintf("%s %s: must be bool type", prefix, fe.Field())
|
return fmt.Sprintf("%s %s: must be bool type", prefix, fe.Field())
|
||||||
|
|
||||||
|
case "driver":
|
||||||
|
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||||
|
prefix,
|
||||||
|
fe.Field(),
|
||||||
|
joinValues(driverValues))
|
||||||
|
|
||||||
case "accessType":
|
case "accessType":
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||||
prefix,
|
prefix,
|
||||||
@@ -122,6 +128,12 @@ func errorMessage(fe validator.FieldError) string {
|
|||||||
fe.Field(),
|
fe.Field(),
|
||||||
joinValues(computeDataDisksValues))
|
joinValues(computeDataDisksValues))
|
||||||
|
|
||||||
|
case "computeDriver":
|
||||||
|
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||||
|
prefix,
|
||||||
|
fe.Field(),
|
||||||
|
joinValues(computeDriverValues))
|
||||||
|
|
||||||
// Disk Validators
|
// Disk Validators
|
||||||
case "diskType":
|
case "diskType":
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||||
@@ -189,6 +201,12 @@ func errorMessage(fe validator.FieldError) string {
|
|||||||
fe.Field(),
|
fe.Field(),
|
||||||
joinValues(imageTypeValues))
|
joinValues(imageTypeValues))
|
||||||
|
|
||||||
|
case "imageDrivers":
|
||||||
|
return fmt.Sprintf("%s %s must contain only the following: %s",
|
||||||
|
prefix,
|
||||||
|
fe.Field(),
|
||||||
|
joinValues(imageDriversValues))
|
||||||
|
|
||||||
case "imageArchitecture":
|
case "imageArchitecture":
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||||
prefix,
|
prefix,
|
||||||
@@ -315,44 +333,6 @@ func errorMessage(fe validator.FieldError) string {
|
|||||||
prefix,
|
prefix,
|
||||||
fe.Field(),
|
fe.Field(),
|
||||||
joinValues(sepTypeValues))
|
joinValues(sepTypeValues))
|
||||||
|
|
||||||
// user validators
|
|
||||||
case "userProvider":
|
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
|
||||||
prefix,
|
|
||||||
fe.Field(),
|
|
||||||
joinValues(userProviders))
|
|
||||||
|
|
||||||
// security group validators
|
|
||||||
case "securityGroupDirection":
|
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
|
||||||
prefix,
|
|
||||||
fe.Field(),
|
|
||||||
joinValues(securityGroupDirectionValues))
|
|
||||||
|
|
||||||
case "securityGroupEthertype":
|
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
|
||||||
prefix,
|
|
||||||
fe.Field(),
|
|
||||||
joinValues(securityGroupEthertypeValues))
|
|
||||||
|
|
||||||
case "securityGroupProtocol":
|
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
|
||||||
prefix,
|
|
||||||
fe.Field(),
|
|
||||||
joinValues(securityGroupProtocolValues))
|
|
||||||
|
|
||||||
// trunk tags validator
|
|
||||||
case "trunkTags":
|
|
||||||
return fmt.Sprintf("%s %s must be in range from 1 to 4095",
|
|
||||||
prefix,
|
|
||||||
fe.Field())
|
|
||||||
|
|
||||||
case "device":
|
|
||||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
|
||||||
prefix,
|
|
||||||
fe.Field(),
|
|
||||||
joinValues(deviceValues))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return fe.Error()
|
return fe.Error()
|
||||||
|
|||||||
@@ -31,6 +31,11 @@ func registerAllValidators(validate *validator.Validate) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = validate.RegisterValidation("computeDriver", computeDriverValidator)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
err = validate.RegisterValidation("apiGroup", apiGroupValidator)
|
err = validate.RegisterValidation("apiGroup", apiGroupValidator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -46,6 +51,11 @@ func registerAllValidators(validate *validator.Validate) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = validate.RegisterValidation("driver", driverValidator)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
err = validate.RegisterValidation("imageBootType", imageBootTypeValidator)
|
err = validate.RegisterValidation("imageBootType", imageBootTypeValidator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -56,6 +66,11 @@ func registerAllValidators(validate *validator.Validate) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = validate.RegisterValidation("imageDrivers", imageDriversValidator)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
err = validate.RegisterValidation("imageArchitecture", imageArchitectureValidator)
|
err = validate.RegisterValidation("imageArchitecture", imageArchitectureValidator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -266,40 +281,10 @@ func registerAllValidators(validate *validator.Validate) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = validate.RegisterValidation("userProvider", userProviderValidator)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validate.RegisterValidation("sepType", sepTypeValidator)
|
err = validate.RegisterValidation("sepType", sepTypeValidator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = validate.RegisterValidation("device", deviceValidator)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validate.RegisterValidation("trunkTags", trunkTagsValidator)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validate.RegisterValidation("securityGroupDirection", securityGroupDirectionValidator)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validate.RegisterValidation("securityGroupEthertype", securityGroupEthertypeValidator)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validate.RegisterValidation("securityGroupProtocol", securityGroupProtocolValidator)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package validators
|
|||||||
var (
|
var (
|
||||||
apiGroupValues = []string{"cloudapi", "cloudbroker", "system"}
|
apiGroupValues = []string{"cloudapi", "cloudbroker", "system"}
|
||||||
|
|
||||||
|
driverValues = []string{"KVM_X86"}
|
||||||
accessTypeValues = []string{"R", "RCX", "ARCXDU"}
|
accessTypeValues = []string{"R", "RCX", "ARCXDU"}
|
||||||
resTypesValues = []string{"compute", "vins", "k8s", "openshift", "lb", "flipgroup"}
|
resTypesValues = []string{"compute", "vins", "k8s", "openshift", "lb", "flipgroup"}
|
||||||
protoValues = []string{"tcp", "udp"}
|
protoValues = []string{"tcp", "udp"}
|
||||||
@@ -16,16 +17,17 @@ var (
|
|||||||
computeModeValues = []string{"EQ", "EN", "ANY"}
|
computeModeValues = []string{"EQ", "EN", "ANY"}
|
||||||
computeDiskTypeValues = []string{"D", "B"}
|
computeDiskTypeValues = []string{"D", "B"}
|
||||||
computeNetTypeValues = []string{"EXTNET", "VINS"}
|
computeNetTypeValues = []string{"EXTNET", "VINS"}
|
||||||
computex86NetTypeValues = []string{"EXTNET", "VINS", "VFNIC", "DPDK", "SDN", "EMPTY", "TRUNK"}
|
computex86NetTypeValues = []string{"EXTNET", "VINS", "VFNIC", "DPDK"}
|
||||||
computeOrderValues = []string{"cdrom", "network", "hd"}
|
computeOrderValues = []string{"cdrom", "network", "hd"}
|
||||||
computeDataDisksValues = []string{"KEEP", "DETACH", "DESTROY"}
|
computeDataDisksValues = []string{"KEEP", "DETACH", "DESTROY"}
|
||||||
|
computeDriverValues = []string{"KVM_X86", "SVA_KVM_X86"}
|
||||||
|
|
||||||
diskTypeValues = []string{"B", "T", "D"}
|
diskTypeValues = []string{"B", "T", "D"}
|
||||||
|
|
||||||
flipgroupClientTypeValues = []string{"compute", "vins"}
|
flipgroupClientTypeValues = []string{"compute", "vins"}
|
||||||
|
|
||||||
kvmNetTypeValues = []string{"EXTNET", "VINS", "NONE"}
|
kvmNetTypeValues = []string{"EXTNET", "VINS", "NONE"}
|
||||||
kvmx86NetTypeValues = []string{"EXTNET", "VINS", "EMPTY", "VFNIC", "DPDK", "SDN", "TRUNK"}
|
kvmx86NetTypeValues = []string{"EXTNET", "VINS", "NONE", "VFNIC", "DPDK"}
|
||||||
|
|
||||||
lbAlgorithmValues = []string{"roundrobin", "static-rr", "leastconn"}
|
lbAlgorithmValues = []string{"roundrobin", "static-rr", "leastconn"}
|
||||||
|
|
||||||
@@ -36,6 +38,7 @@ var (
|
|||||||
|
|
||||||
imageBootTypeValues = []string{"uefi", "bios"}
|
imageBootTypeValues = []string{"uefi", "bios"}
|
||||||
imageTypeValues = []string{"windows", "linux", "unknown"}
|
imageTypeValues = []string{"windows", "linux", "unknown"}
|
||||||
|
imageDriversValues = []string{"KVM_X86"}
|
||||||
imageArchitectureValues = []string{"X86_64"}
|
imageArchitectureValues = []string{"X86_64"}
|
||||||
|
|
||||||
sepFieldTypeValues = []string{"int", "str", "bool", "list", "dict"}
|
sepFieldTypeValues = []string{"int", "str", "bool", "list", "dict"}
|
||||||
@@ -46,11 +49,11 @@ var (
|
|||||||
|
|
||||||
interfaceStateValues = []string{"on", "off"}
|
interfaceStateValues = []string{"on", "off"}
|
||||||
|
|
||||||
actionValues = []string{"is_powered", "power_on", "shutdown", "force_shutdown", "reboot"}
|
actionValues = []string{"power_on", "shutdown", "force_shutdown", "reboot"}
|
||||||
|
|
||||||
vmActionValues = []string{"stop", "move"}
|
vmActionValues = []string{"stop", "move"}
|
||||||
|
|
||||||
computeFeaturesValues = []string{"hugepages", "numa", "cpupin", "vfnic", "dpdk", "changemac", "trunk"}
|
computeFeaturesValues = []string{"hugepages", "numa", "cpupin", "vfnic", "dpdk", "changemac"}
|
||||||
|
|
||||||
networkInterfaceNamingValues = []string{"eth", "ens"}
|
networkInterfaceNamingValues = []string{"eth", "ens"}
|
||||||
|
|
||||||
@@ -69,20 +72,10 @@ var (
|
|||||||
sepTypeValues = []string{"hitachi", "dorado", "tatlin", "shared", "local", "des"}
|
sepTypeValues = []string{"hitachi", "dorado", "tatlin", "shared", "local", "des"}
|
||||||
|
|
||||||
languageValues = []string{"ru", "en"}
|
languageValues = []string{"ru", "en"}
|
||||||
|
|
||||||
userProviders = []string{"bvs", "decs3o"}
|
|
||||||
|
|
||||||
deviceValues = []string{"primary", "secondary"}
|
|
||||||
|
|
||||||
securityGroupDirectionValues = []string{"inbound", "outbound"}
|
|
||||||
securityGroupEthertypeValues = []string{"IPv4", "IPv6"}
|
|
||||||
securityGroupProtocolValues = []string{"icmp", "tcp", "udp"}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
mtuMin = 1
|
mtuMin = 1
|
||||||
mtuMax = 9216
|
|
||||||
|
|
||||||
trunkTagsMin = 1
|
mtuMax = 9216
|
||||||
trunkTagsMax = 4095
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -14,10 +13,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-querystring/query"
|
"github.com/google/go-querystring/query"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/config"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/config"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/constants"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/constants"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi"
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudbroker"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudbroker"
|
||||||
)
|
)
|
||||||
|
|
||||||
// LegacyDecortClient is Legacy HTTP-client for platform
|
// LegacyDecortClient is Legacy HTTP-client for platform
|
||||||
@@ -103,47 +102,6 @@ func (ldc *LegacyDecortClient) DecortApiCall(ctx context.Context, method, url st
|
|||||||
return respBytes, err
|
return respBytes, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecortApiCallCtype method for sending requests to the platform with content type
|
|
||||||
func (ldc *LegacyDecortClient) DecortApiCallCtype(ctx context.Context, method, url, ctype string, params interface{}) ([]byte, error) {
|
|
||||||
// get token
|
|
||||||
if err := ldc.getToken(ctx); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var body *bytes.Buffer
|
|
||||||
|
|
||||||
switch ctype {
|
|
||||||
case constants.MIMESTREAM:
|
|
||||||
body = bytes.NewBuffer(params.([]byte))
|
|
||||||
case constants.MIMEJSON:
|
|
||||||
jsonBody, err := json.Marshal(params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
body = bytes.NewBuffer(jsonBody)
|
|
||||||
default:
|
|
||||||
ctype = constants.MIMEPOSTForm
|
|
||||||
values, err := query.Values(params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
body = bytes.NewBufferString(values.Encode() + fmt.Sprintf("&authkey=%s", ldc.cfg.Token))
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, method, ldc.decortURL+constants.RESTMACHINE+url, body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// perform request
|
|
||||||
respBytes, err := ldc.do(req, ctype)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBytes, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ldc *LegacyDecortClient) DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
func (ldc *LegacyDecortClient) DecortApiCallMP(ctx context.Context, method, url string, params interface{}) ([]byte, error) {
|
||||||
body, ctype, err := multiPartReq(params)
|
body, ctype, err := multiPartReq(params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package cloudapi
|
package cloudapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/account"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Accessing the Account method group
|
// Accessing the Account method group
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
package account
|
package account
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/interfaces"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Structure for creating request to account
|
// Structure for creating request to account
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AddUserRequest struct to add permission to access account for a user
|
// AddUserRequest struct to add permission to access account for a user
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AuditsRequest struct to give list of account audits
|
// AuditsRequest struct to give list of account audits
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeleteRequest struct to delete account
|
// DeleteRequest struct to delete account
|
||||||
@@ -19,18 +19,18 @@ type DeleteRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Delete completes delete an account from the system Returns true if account is deleted or was already deleted or never existed
|
// Delete completes delete an account from the system Returns true if account is deleted or was already deleted or never existed
|
||||||
func (a Account) Delete(ctx context.Context, req DeleteRequest) (string, error) {
|
func (a Account) Delete(ctx context.Context, req DeleteRequest) (bool, error) {
|
||||||
err := validators.ValidateRequest(req)
|
err := validators.ValidateRequest(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", validators.ValidationErrors(validators.GetErrors(err))
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
url := "/cloudapi/account/delete"
|
url := "/cloudapi/account/delete"
|
||||||
|
|
||||||
result, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
_, err = a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return string(result), nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeleteUserRequest struct to revoke access to account
|
// DeleteUserRequest struct to revoke access to account
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DisableEnableRequest struct to change status of account
|
// DisableEnableRequest struct to change status of account
|
||||||
@@ -13,6 +13,10 @@ type DisableEnableRequest struct {
|
|||||||
// ID of account
|
// ID of account
|
||||||
// Required: true
|
// Required: true
|
||||||
AccountID uint64 `url:"accountId" json:"accountId" validate:"required"`
|
AccountID uint64 `url:"accountId" json:"accountId" validate:"required"`
|
||||||
|
|
||||||
|
// Reason of disabling
|
||||||
|
// Required: false
|
||||||
|
Reason string `url:"reason,omitempty" json:"reason,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable disables an account
|
// Disable disables an account
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
var accounts = ListAccounts{
|
var accounts = ListAccounts{
|
||||||
Data: []ItemAccount{
|
Data: []ItemAccount{
|
||||||
{
|
{
|
||||||
ACL: []ListRecordACL{
|
ACL: []RecordACL{
|
||||||
{
|
{
|
||||||
IsExplicit: true,
|
IsExplicit: true,
|
||||||
GUID: "",
|
GUID: "",
|
||||||
@@ -25,7 +25,7 @@ var accounts = ListAccounts{
|
|||||||
UpdatedTime: 1676645275,
|
UpdatedTime: 1676645275,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ACL: []ListRecordACL{
|
ACL: []RecordACL{
|
||||||
{
|
{
|
||||||
IsExplicit: true,
|
IsExplicit: true,
|
||||||
GUID: "",
|
GUID: "",
|
||||||
@@ -43,7 +43,7 @@ var accounts = ListAccounts{
|
|||||||
UpdatedTime: 1676645275,
|
UpdatedTime: 1676645275,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ACL: []ListRecordACL{
|
ACL: []RecordACL{
|
||||||
{
|
{
|
||||||
IsExplicit: true,
|
IsExplicit: true,
|
||||||
GUID: "",
|
GUID: "",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetRequest struct to get information about account
|
// GetRequest struct to get information about account
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetConsumedAccountUnitsRequest struct to calculate the currently consumed units for all cloudspaces and resource groups in the account
|
// GetConsumedAccountUnitsRequest struct to calculate the currently consumed units for all cloudspaces and resource groups in the account
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetConsumedCloudUnitsByTypeRequest struct to calculate the currently consumed cloud units of the specified type for all cloudspaces and resource groups in the account
|
// GetConsumedCloudUnitsByTypeRequest struct to calculate the currently consumed cloud units of the specified type for all cloudspaces and resource groups in the account
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetReservedAccountUnitsRequest struct to calculate the reserved units for all cloudspaces and resource groups in the account
|
// GetReservedAccountUnitsRequest struct to calculate the reserved units for all cloudspaces and resource groups in the account
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetResourceConsumptionRequest struct to get resource consumption
|
// GetResourceConsumptionRequest struct to get resource consumption
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListRequest struct to get list of accounts
|
// ListRequest struct to get list of accounts
|
||||||
@@ -30,11 +30,6 @@ type ListRequest struct {
|
|||||||
// Required: false
|
// Required: false
|
||||||
SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty" validate:"omitempty,sortBy"`
|
SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty" validate:"omitempty,sortBy"`
|
||||||
|
|
||||||
// Sort by zone id
|
|
||||||
// Default value: 0
|
|
||||||
// Required: false
|
|
||||||
ZoneID uint64 `url:"zone_id,omitempty" json:"zone_id,omitempty"`
|
|
||||||
|
|
||||||
// Page number
|
// Page number
|
||||||
// Required: false
|
// Required: false
|
||||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListComputesRequest struct to get a list of compute instances
|
// ListComputesRequest struct to get a list of compute instances
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListDeletedRequest struct to get a list of deleted accounts
|
// ListDeletedRequest struct to get a list of deleted accounts
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListDisksRequest struct to get a list of deleted disks
|
// ListDisksRequest struct to get a list of deleted disks
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListFLIPGroupsRequest struct to get a list of FLIPGroups
|
// ListFLIPGroupsRequest struct to get a list of FLIPGroups
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListRGRequest struct to get a list of resource groups
|
// ListRGRequest struct to get a list of resource groups
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListTemplatesRequest struct to get a list of templates
|
// ListTemplatesRequest struct to get a list of templates
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListVINSRequest struct to get a list of VINS
|
// ListVINSRequest struct to get a list of VINS
|
||||||
|
|||||||
@@ -1,34 +1,7 @@
|
|||||||
package account
|
package account
|
||||||
|
|
||||||
// Access Control List
|
|
||||||
type ListRecordACL struct {
|
|
||||||
// Whether access is explicitly specified
|
|
||||||
IsExplicit bool `json:"explicit"`
|
|
||||||
|
|
||||||
// GUID
|
|
||||||
GUID string `json:"guid"`
|
|
||||||
|
|
||||||
// Access rights
|
|
||||||
Rights string `json:"right"`
|
|
||||||
|
|
||||||
// Status
|
|
||||||
Status string `json:"status"`
|
|
||||||
|
|
||||||
// Account Type
|
|
||||||
Type string `json:"type"`
|
|
||||||
|
|
||||||
// Account owner ID
|
|
||||||
UgroupID string `json:"userGroupId"`
|
|
||||||
|
|
||||||
// Is it possible to remove
|
|
||||||
CanBeDeleted bool `json:"canBeDeleted"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Access Control List
|
// Access Control List
|
||||||
type RecordACL struct {
|
type RecordACL struct {
|
||||||
// Emails
|
|
||||||
Emails []string `json:"emails"`
|
|
||||||
|
|
||||||
// Whether access is explicitly specified
|
// Whether access is explicitly specified
|
||||||
IsExplicit bool `json:"explicit"`
|
IsExplicit bool `json:"explicit"`
|
||||||
|
|
||||||
@@ -73,21 +46,12 @@ type ResourceLimits struct {
|
|||||||
|
|
||||||
// Number of graphics cores
|
// Number of graphics cores
|
||||||
GPUUnits float64 `json:"gpu_units"`
|
GPUUnits float64 `json:"gpu_units"`
|
||||||
|
|
||||||
// Storage policy
|
|
||||||
StoragePolicy []StoragePolicyItem `json:"storage_policy"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type StoragePolicyItem struct {
|
|
||||||
ID uint64 `json:"id"`
|
|
||||||
|
|
||||||
Limit int `json:"limit"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main information in one of if the list of accounts
|
// Main information in one of if the list of accounts
|
||||||
type ItemAccount struct {
|
type ItemAccount struct {
|
||||||
// Access Control List
|
// Access Control List
|
||||||
ACL []ListRecordACL `json:"acl"`
|
ACL []RecordACL `json:"acl"`
|
||||||
|
|
||||||
// Compute Features
|
// Compute Features
|
||||||
ComputeFeatures []string `json:"computeFeatures"`
|
ComputeFeatures []string `json:"computeFeatures"`
|
||||||
@@ -112,9 +76,6 @@ type ItemAccount struct {
|
|||||||
|
|
||||||
// Updated time
|
// Updated time
|
||||||
UpdatedTime uint64 `json:"updatedTime"`
|
UpdatedTime uint64 `json:"updatedTime"`
|
||||||
|
|
||||||
// Zones
|
|
||||||
ZoneIDs []uint64 `json:"zoneIds"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of accounts
|
// List of accounts
|
||||||
@@ -124,18 +85,6 @@ type ListAccounts struct {
|
|||||||
EntryCount uint64 `json:"entryCount"`
|
EntryCount uint64 `json:"entryCount"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Policy
|
|
||||||
type Policy struct {
|
|
||||||
// Size of the disk
|
|
||||||
DiskSize float64 `json:"disksize"`
|
|
||||||
|
|
||||||
// Max size of the disk
|
|
||||||
DiskSizeMax float64 `json:"disksizemax"`
|
|
||||||
|
|
||||||
// SEPs used
|
|
||||||
SEPs map[string]map[string]DiskUsage `json:"seps"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resources used
|
// Resources used
|
||||||
type Resource struct {
|
type Resource struct {
|
||||||
// Number of cores
|
// Number of cores
|
||||||
@@ -156,9 +105,6 @@ type Resource struct {
|
|||||||
// Number of grafic cores
|
// Number of grafic cores
|
||||||
GPU int64 `json:"gpu"`
|
GPU int64 `json:"gpu"`
|
||||||
|
|
||||||
// Policies
|
|
||||||
Policies map[string]Policy `json:"policies"`
|
|
||||||
|
|
||||||
// Number of RAM
|
// Number of RAM
|
||||||
RAM int64 `json:"ram"`
|
RAM int64 `json:"ram"`
|
||||||
|
|
||||||
@@ -219,20 +165,14 @@ type Machines struct {
|
|||||||
Halted uint64 `json:"halted"`
|
Halted uint64 `json:"halted"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Detailed information about the account zone
|
|
||||||
type ZoneID struct {
|
|
||||||
// ID of zone
|
|
||||||
ID int64 `json:"id"`
|
|
||||||
|
|
||||||
// Name of zone
|
|
||||||
Name string `json:"name"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Main information about account
|
// Main information about account
|
||||||
type RecordAccount struct {
|
type RecordAccount struct {
|
||||||
// DCLocation
|
// DCLocation
|
||||||
DCLocation string `json:"DCLocation"`
|
DCLocation string `json:"DCLocation"`
|
||||||
|
|
||||||
|
// CKey
|
||||||
|
CKey string `json:"_ckey"`
|
||||||
|
|
||||||
// Access control list
|
// Access control list
|
||||||
ACL []RecordACL `json:"acl"`
|
ACL []RecordACL `json:"acl"`
|
||||||
|
|
||||||
@@ -299,9 +239,6 @@ type RecordAccount struct {
|
|||||||
// Status
|
// Status
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
|
|
||||||
// Storage policy ids
|
|
||||||
StoragePolicyIDs []uint64 `json:"storage_policy_ids"`
|
|
||||||
|
|
||||||
// UniqPools
|
// UniqPools
|
||||||
UniqPools []interface{} `json:"uniqPools"`
|
UniqPools []interface{} `json:"uniqPools"`
|
||||||
|
|
||||||
@@ -316,12 +253,6 @@ type RecordAccount struct {
|
|||||||
|
|
||||||
// VINSes
|
// VINSes
|
||||||
VINSes uint64 `json:"vinses"`
|
VINSes uint64 `json:"vinses"`
|
||||||
|
|
||||||
// Zone
|
|
||||||
ZoneIDs []ZoneID `json:"zoneIds"`
|
|
||||||
|
|
||||||
// Zones
|
|
||||||
DefaultZoneID uint64 `json:"defaultZoneId"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main information about compute
|
// Main information about compute
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RestoreRequest struct to restore a deleted account
|
// RestoreRequest struct to restore a deleted account
|
||||||
@@ -15,18 +15,18 @@ type RestoreRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Restore restores a deleted account
|
// Restore restores a deleted account
|
||||||
func (a Account) Restore(ctx context.Context, req RestoreRequest) (string, error) {
|
func (a Account) Restore(ctx context.Context, req RestoreRequest) (bool, error) {
|
||||||
err := validators.ValidateRequest(req)
|
err := validators.ValidateRequest(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", validators.ValidationErrors(validators.GetErrors(err))
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
url := "/cloudapi/account/restore"
|
url := "/cloudapi/account/restore"
|
||||||
|
|
||||||
result, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
_, err = a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return string(result), nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package account
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/serialization"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/serialization"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Serialize returns JSON-serialized []byte. Used as a wrapper over json.Marshal and json.MarshalIndent functions.
|
// Serialize returns JSON-serialized []byte. Used as a wrapper over json.Marshal and json.MarshalIndent functions.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UpdateRequest struct to update account
|
// UpdateRequest struct to update account
|
||||||
@@ -54,10 +54,6 @@ type UpdateRequest struct {
|
|||||||
// i.e.: ["sep1_poolName1", "sep2_poolName2", etc]
|
// i.e.: ["sep1_poolName1", "sep2_poolName2", etc]
|
||||||
// Required: false
|
// Required: false
|
||||||
UniqPools []string `url:"uniqPools,omitempty" json:"uniqPools,omitempty"`
|
UniqPools []string `url:"uniqPools,omitempty" json:"uniqPools,omitempty"`
|
||||||
|
|
||||||
// Default zone ID
|
|
||||||
// Required: false
|
|
||||||
DefaultZoneID uint64 `url:"defaultZoneId,omitempty" json:"defaultZoneId,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update updates an account name and resource types and limits
|
// Update updates an account name and resource types and limits
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UpdateUserRequest struct to update user access rights
|
// UpdateUserRequest struct to update user access rights
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package cloudapi
|
package cloudapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/audit"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/audit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Accessing the Stack method group
|
// Accessing the Stack method group
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package audit
|
package audit
|
||||||
|
|
||||||
import "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/interfaces"
|
import "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/interfaces"
|
||||||
|
|
||||||
// Structure for creating request to audit
|
// Structure for creating request to audit
|
||||||
type Audit struct {
|
type Audit struct {
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
package audit
|
|
||||||
|
|
||||||
// FilterByID returns ListAudits with specified ID.
|
|
||||||
func (la ListAudits) FilterByID(guid string) ListAudits {
|
|
||||||
predicate := func(ia ItemAudit) bool {
|
|
||||||
return ia.GUID == guid
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.FilterFunc(predicate)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FilterByCall returns ListAudits with specified call.
|
|
||||||
func (la ListAudits) FilterByCall(call string) ListAudits {
|
|
||||||
predicate := func(ic ItemAudit) bool {
|
|
||||||
return ic.Call == call
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.FilterFunc(predicate)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FilterByCorrelationID returns ListAudits with specified correlation id.
|
|
||||||
func (la ListAudits) FilterByCorrelationID(correlationID string) ListAudits {
|
|
||||||
predicate := func(ic ItemAudit) bool {
|
|
||||||
return ic.CorrelationID == correlationID
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.FilterFunc(predicate)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FilterByRemoteAddr returns ListAudits with specified remote address.
|
|
||||||
func (la ListAudits) FilterByRemoteAddr(remoteAddr string) ListAudits {
|
|
||||||
predicate := func(ic ItemAudit) bool {
|
|
||||||
return ic.RemoteAddr == remoteAddr
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.FilterFunc(predicate)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FilterByUser returns ListAudits with specified user name.
|
|
||||||
func (la ListAudits) FilterByUser(user string) ListAudits {
|
|
||||||
predicate := func(ic ItemAudit) bool {
|
|
||||||
return ic.User == user
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.FilterFunc(predicate)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FilterByStatusCode return ListAudits with specified status code.
|
|
||||||
func (la ListAudits) FilterByStatusCode(statusCode uint64) ListAudits {
|
|
||||||
predicate := func(ic ItemAudit) bool {
|
|
||||||
return ic.StatusCode == statusCode
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.FilterFunc(predicate)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// FilterFunc allows filtering ListAudits based on a user-specified predicate.
|
|
||||||
func (la ListAudits) FilterFunc(predicate func(ItemAudit) bool) ListAudits {
|
|
||||||
var result ListAudits
|
|
||||||
|
|
||||||
for _, item := range la.Data {
|
|
||||||
if predicate(item) {
|
|
||||||
result.Data = append(result.Data, item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result.EntryCount = uint64(len(result.Data))
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
// FindOne returns first found ItemAudit
|
|
||||||
// If none was found, returns an empty struct.
|
|
||||||
func (la ListAudits) FindOne() ItemAudit {
|
|
||||||
if len(la.Data) == 0 {
|
|
||||||
return ItemAudit{}
|
|
||||||
}
|
|
||||||
|
|
||||||
return la.Data[0]
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
package audit
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var audits = ListAudits{
|
|
||||||
Data: []ItemAudit{
|
|
||||||
{
|
|
||||||
Args: "[]",
|
|
||||||
Call: "/restmachine/cloudapi/audit/linkedJobs",
|
|
||||||
GUID: "550e8400-e29b-41d4-a716-446655440001",
|
|
||||||
CorrelationID: "550e8400-e29b-41d4-a716-446655440001",
|
|
||||||
Kwargs: `{\"audit_guid\":\"dd8623a1-a887-48c1-a500-c10210d404cf\"}`,
|
|
||||||
RemoteAddr: "192.168.1.100",
|
|
||||||
ResponseTime: 1,
|
|
||||||
Result: `[]`,
|
|
||||||
StatusCode: 200,
|
|
||||||
Timestamp: 1640995200,
|
|
||||||
TimestampEnd: 1640995201,
|
|
||||||
User: "test@example.com",
|
|
||||||
TTL: "2025-07-31T14:22:57.028000",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Args: "[]",
|
|
||||||
Call: "/restmachine/cloudapi/audit/test",
|
|
||||||
GUID: "550e8400-e29b-41d4-a716-446655440002",
|
|
||||||
CorrelationID: "550e8400-e29b-41d4-a716-446655440002",
|
|
||||||
Kwargs: `{\"audit_guid\":\"dd8623a1-a887-48c1-a500-c10210d404cf\"}`,
|
|
||||||
RemoteAddr: "192.168.1.105",
|
|
||||||
ResponseTime: 5,
|
|
||||||
Result: `[]`,
|
|
||||||
StatusCode: 400,
|
|
||||||
Timestamp: 1640995200,
|
|
||||||
TimestampEnd: 1640995201,
|
|
||||||
User: "test2@example.com",
|
|
||||||
TTL: "2025-07-31T14:22:57.028000",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
EntryCount: 2,
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFilterByID(t *testing.T) {
|
|
||||||
actual := audits.FilterByID("550e8400-e29b-41d4-a716-446655440002").FindOne()
|
|
||||||
|
|
||||||
if actual.GUID != "550e8400-e29b-41d4-a716-446655440002" {
|
|
||||||
t.Fatal("expected GUID 550e8400-e29b-41d4-a716-446655440002, found: ", actual.GUID)
|
|
||||||
}
|
|
||||||
|
|
||||||
actualEmpty := audits.FilterByID("")
|
|
||||||
|
|
||||||
if len(actualEmpty.Data) != 0 {
|
|
||||||
t.Fatal("expected empty, actual: ", len(actualEmpty.Data))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFilterByCorrelationID(t *testing.T) {
|
|
||||||
actual := audits.FilterByCorrelationID("550e8400-e29b-41d4-a716-446655440002").FindOne()
|
|
||||||
|
|
||||||
if actual.CorrelationID != "550e8400-e29b-41d4-a716-446655440002" {
|
|
||||||
t.Fatal("expected GUID 550e8400-e29b-41d4-a716-446655440002, found: ", actual.CorrelationID)
|
|
||||||
}
|
|
||||||
|
|
||||||
actualEmpty := audits.FilterByCorrelationID("")
|
|
||||||
|
|
||||||
if len(actualEmpty.Data) != 0 {
|
|
||||||
t.Fatal("expected empty, actual: ", len(actualEmpty.Data))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFilterByRemoteAddr(t *testing.T) {
|
|
||||||
actual := audits.FilterByRemoteAddr("192.168.1.100").FindOne()
|
|
||||||
|
|
||||||
if actual.RemoteAddr != "192.168.1.100" {
|
|
||||||
t.Fatal("expected remote address 192.168.1.100, found: ", actual.RemoteAddr)
|
|
||||||
}
|
|
||||||
|
|
||||||
actualEmpty := audits.FilterByRemoteAddr("")
|
|
||||||
|
|
||||||
if len(actualEmpty.Data) != 0 {
|
|
||||||
t.Fatal("expected empty, actual: ", len(actualEmpty.Data))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFilterByUser(t *testing.T) {
|
|
||||||
actual := audits.FilterByUser("test@example.com").FindOne()
|
|
||||||
|
|
||||||
if actual.User != "test@example.com" {
|
|
||||||
t.Fatal("expected user test@example.com, found: ", actual.RemoteAddr)
|
|
||||||
}
|
|
||||||
|
|
||||||
actualEmpty := audits.FilterByUser("")
|
|
||||||
|
|
||||||
if len(actualEmpty.Data) != 0 {
|
|
||||||
t.Fatal("expected empty, actual: ", len(actualEmpty.Data))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFilterByCall(t *testing.T) {
|
|
||||||
actual := audits.FilterByCall("/restmachine/cloudapi/audit/test").FindOne()
|
|
||||||
|
|
||||||
if actual.Call != "/restmachine/cloudapi/audit/test" {
|
|
||||||
t.Fatal("expected call /restmachine/cloudapi/audit/test, found: ", actual.Call)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFilterByStatusCode(t *testing.T) {
|
|
||||||
actual := audits.FilterByStatusCode(200)
|
|
||||||
|
|
||||||
for _, item := range actual.Data {
|
|
||||||
if item.StatusCode != 200 {
|
|
||||||
t.Fatal("expected 200 status code, found: ", item.StatusCode)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetRequest struct to get information about account
|
// GetRequest struct to get information about account
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
package audit
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ListRequest struct to give list of account audits
|
|
||||||
type ListRequest struct {
|
|
||||||
|
|
||||||
// Find all audits after point in time (unixtime)
|
|
||||||
// Required: false
|
|
||||||
TimestampAt uint64 `url:"timestamp_at,omitempty" json:"timestamp_at,omitempty"`
|
|
||||||
|
|
||||||
// Find all audits before point in time (unixtime)
|
|
||||||
// Required: false
|
|
||||||
TimestampTo uint64 `url:"timestamp_to,omitempty" json:"timestamp_to,omitempty"`
|
|
||||||
|
|
||||||
// Find by user (Mongo RegExp supported)
|
|
||||||
// Required: false
|
|
||||||
User string `url:"user,omitempty" json:"user,omitempty"`
|
|
||||||
|
|
||||||
// Find by api endpoint (Mongo RegExp supported)
|
|
||||||
// Required: false
|
|
||||||
Call string `url:"call,omitempty" json:"call,omitempty"`
|
|
||||||
|
|
||||||
// Find by request id
|
|
||||||
// Required: false
|
|
||||||
RequestID string `url:"request_id,omitempty" json:"request_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by HTTP min status code
|
|
||||||
// Required: false
|
|
||||||
MinStatusCode uint64 `url:"min_status_code,omitempty" json:"min_status_code,omitempty"`
|
|
||||||
|
|
||||||
// Find by HTTP max status code
|
|
||||||
// Required: false
|
|
||||||
MaxStatusCode uint64 `url:"max_status_code,omitempty" json:"max_status_code,omitempty"`
|
|
||||||
|
|
||||||
// Sort by one of supported fields, format +|-(field)
|
|
||||||
// Required: false
|
|
||||||
SortBy string `url:"sort_by,omitempty" json:"sort_by,omitempty" validate:"omitempty,sortBy"`
|
|
||||||
|
|
||||||
// Page number
|
|
||||||
// Required: false
|
|
||||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
|
||||||
|
|
||||||
// Page size
|
|
||||||
// Required: false
|
|
||||||
Size uint64 `url:"size,omitempty" json:"size,omitempty"`
|
|
||||||
|
|
||||||
// Find by resource group id
|
|
||||||
// Required: false
|
|
||||||
RGID uint64 `url:"resgroup_id,omitempty" json:"resgroup_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by compute id
|
|
||||||
// Required: false
|
|
||||||
ComputeID uint64 `url:"compute_id,omitempty" json:"compute_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by account id
|
|
||||||
// Required: false
|
|
||||||
AccountID uint64 `url:"account_id,omitempty" json:"account_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by vins id
|
|
||||||
// Required: false
|
|
||||||
VINSID uint64 `url:"vins_id,omitempty" json:"vins_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by service id
|
|
||||||
// Required: false
|
|
||||||
ServiceID uint64 `url:"service_id,omitempty" json:"service_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by k8s id
|
|
||||||
// Required: false
|
|
||||||
K8SID uint64 `url:"k8s_id,omitempty" json:"k8s_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by flipgroup id
|
|
||||||
// Required: false
|
|
||||||
FLIPGroupID uint64 `url:"flipgroup_id,omitempty" json:"flipgroup_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by load balancer id
|
|
||||||
// Required: false
|
|
||||||
LBID uint64 `url:"lb_id,omitempty" json:"lb_id,omitempty"`
|
|
||||||
|
|
||||||
// Find by sep id
|
|
||||||
// Required: false
|
|
||||||
SEPID uint64 `url:"sep_id,omitempty" json:"sep_id,omitempty"`
|
|
||||||
|
|
||||||
// Exclude audit lines from response
|
|
||||||
// Required: false
|
|
||||||
ExcludeAuditLines bool `url:"exclude_audit_lines,omitempty" json:"exclude_audit_lines,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets audit records for the specified account object
|
|
||||||
func (a Audit) List(ctx context.Context, req ListRequest) (*ListAudits, error) {
|
|
||||||
|
|
||||||
res, err := a.ListRaw(ctx, req)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
list := ListAudits{}
|
|
||||||
|
|
||||||
err = json.Unmarshal(res, &list)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &list, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListRaw gets list of audit records an array of bytes
|
|
||||||
func (a Audit) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) {
|
|
||||||
|
|
||||||
if err := validators.ValidateRequest(req); err != nil {
|
|
||||||
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
url := "/cloudapi/audit/list"
|
|
||||||
|
|
||||||
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
|
||||||
return res, err
|
|
||||||
}
|
|
||||||
@@ -12,9 +12,6 @@ type RecordAudit struct {
|
|||||||
// GUID
|
// GUID
|
||||||
GUID string `json:"guid"`
|
GUID string `json:"guid"`
|
||||||
|
|
||||||
// Correlation ID
|
|
||||||
CorrelationID string `json:"correlation_id"`
|
|
||||||
|
|
||||||
// Kwargs
|
// Kwargs
|
||||||
Kwargs string `json:"kwargs"`
|
Kwargs string `json:"kwargs"`
|
||||||
|
|
||||||
@@ -42,54 +39,3 @@ type RecordAudit struct {
|
|||||||
// User
|
// User
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main info about audit
|
|
||||||
type ItemAudit struct {
|
|
||||||
// Args
|
|
||||||
Args string `json:"args"`
|
|
||||||
|
|
||||||
// Call
|
|
||||||
Call string `json:"call"`
|
|
||||||
|
|
||||||
// GUID
|
|
||||||
GUID string `json:"guid"`
|
|
||||||
|
|
||||||
// Correlation ID
|
|
||||||
CorrelationID string `json:"correlation_id"`
|
|
||||||
|
|
||||||
// Kwargs
|
|
||||||
Kwargs string `json:"kwargs"`
|
|
||||||
|
|
||||||
// RemoteAddr
|
|
||||||
RemoteAddr string `json:"remote_addr"`
|
|
||||||
|
|
||||||
// Response time
|
|
||||||
ResponseTime float64 `json:"responsetime"`
|
|
||||||
|
|
||||||
// Result
|
|
||||||
Result string `json:"result"`
|
|
||||||
|
|
||||||
// Status code
|
|
||||||
StatusCode uint64 `json:"statuscode"`
|
|
||||||
|
|
||||||
// Timestamp
|
|
||||||
Timestamp float64 `json:"timestamp"`
|
|
||||||
|
|
||||||
// Timestamp End
|
|
||||||
TimestampEnd float64 `json:"timestampEnd"`
|
|
||||||
|
|
||||||
// User
|
|
||||||
User string `json:"user"`
|
|
||||||
|
|
||||||
// TTL
|
|
||||||
TTL string `json:"_ttl"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// List of audits
|
|
||||||
type ListAudits struct {
|
|
||||||
// Data
|
|
||||||
Data []ItemAudit `json:"data"`
|
|
||||||
|
|
||||||
// EntryCount
|
|
||||||
EntryCount uint64 `json:"entryCount"`
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package cloudapi
|
package cloudapi
|
||||||
|
|
||||||
import "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/bservice"
|
import "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/bservice"
|
||||||
|
|
||||||
// Accessing the BService method group
|
// Accessing the BService method group
|
||||||
func (ca *CloudAPI) BService() *bservice.BService {
|
func (ca *CloudAPI) BService() *bservice.BService {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// API Actor for managing Compute Group. This actor is a final API for endusers to manage Compute Group
|
// API Actor for managing Compute Group. This actor is a final API for endusers to manage Compute Group
|
||||||
package bservice
|
package bservice
|
||||||
|
|
||||||
import "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/interfaces"
|
import "repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/interfaces"
|
||||||
|
|
||||||
// Structure for creating request to bservice
|
// Structure for creating request to bservice
|
||||||
type BService struct {
|
type BService struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CreateRequest struct for BasicService
|
// CreateRequest struct for BasicService
|
||||||
@@ -25,10 +25,6 @@ type CreateRequest struct {
|
|||||||
// SSH key to deploy for the specified user. Same key will be deployed to all computes of the service
|
// SSH key to deploy for the specified user. Same key will be deployed to all computes of the service
|
||||||
// Required: false
|
// Required: false
|
||||||
SSHKey string `url:"sshKey,omitempty" json:"sshKey,omitempty"`
|
SSHKey string `url:"sshKey,omitempty" json:"sshKey,omitempty"`
|
||||||
|
|
||||||
// Zone ID
|
|
||||||
// Required: false
|
|
||||||
ZoneID uint64 `url:"zoneId,omitempty" json:"zoneId,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create creates blank BasicService instance
|
// Create creates blank BasicService instance
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeleteRequest struct to delete basic service
|
// DeleteRequest struct to delete basic service
|
||||||
@@ -16,7 +16,6 @@ type DeleteRequest struct {
|
|||||||
|
|
||||||
// If set to False, Basic service will be deleted to recycle bin. Otherwise destroyed immediately
|
// If set to False, Basic service will be deleted to recycle bin. Otherwise destroyed immediately
|
||||||
// Required: false
|
// Required: false
|
||||||
// Default: false
|
|
||||||
Permanently bool `url:"permanently,omitempty" json:"permanently,omitempty"`
|
Permanently bool `url:"permanently,omitempty" json:"permanently,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DisableRequest struct for disable service
|
// DisableRequest struct for disable service
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EnableRequest struct to disable service
|
// EnableRequest struct to disable service
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetRequest struct to get detailed information about service
|
// GetRequest struct to get detailed information about service
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupAddRequest struct to create new compute group within BasicService
|
// GroupAddRequest struct to create new compute group within BasicService
|
||||||
@@ -38,9 +38,11 @@ type GroupAddRequest struct {
|
|||||||
// Required: true
|
// Required: true
|
||||||
ImageID uint64 `url:"imageId" json:"imageId" validate:"required"`
|
ImageID uint64 `url:"imageId" json:"imageId" validate:"required"`
|
||||||
|
|
||||||
// Compute driver like a KVM_X86, etc.
|
// Compute driver
|
||||||
|
// should be one of:
|
||||||
|
// - KVM_X86
|
||||||
// Required: true
|
// Required: true
|
||||||
Driver string `url:"driver" json:"driver" validate:"required"`
|
Driver string `url:"driver" json:"driver" validate:"driver"`
|
||||||
|
|
||||||
// Storage endpoint provider ID
|
// Storage endpoint provider ID
|
||||||
// Required: false
|
// Required: false
|
||||||
@@ -73,10 +75,6 @@ type GroupAddRequest struct {
|
|||||||
//Chipset "i440fx" or "Q35
|
//Chipset "i440fx" or "Q35
|
||||||
//Required: false
|
//Required: false
|
||||||
Chipset string `url:"chipset,omitempty" json:"chipset,omitempty" validate:"chipset,omitempty"`
|
Chipset string `url:"chipset,omitempty" json:"chipset,omitempty" validate:"chipset,omitempty"`
|
||||||
|
|
||||||
// ID of the chosen storage policy
|
|
||||||
// Required: false
|
|
||||||
StoragePolicyID uint64 `url:"storage_policy_id,omitempty" json:"storage_policy_id,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRAM returns RAM field values
|
// GetRAM returns RAM field values
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupComputeRemoveRequest struct to remove group compute
|
// GroupComputeRemoveRequest struct to remove group compute
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupGetRequest struct to get detailed information about Compute Group
|
// GroupGetRequest struct to get detailed information about Compute Group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupParentAddRequest struct to add parent Compute Group relation to the specified Compute Group
|
// GroupParentAddRequest struct to add parent Compute Group relation to the specified Compute Group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupParentRemoveRequest struct to remove parent Compute Group
|
// GroupParentRemoveRequest struct to remove parent Compute Group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupRemoveRequest struct for destroy the specified Compute Group
|
// GroupRemoveRequest struct for destroy the specified Compute Group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupResizeRequest struct to resize the group
|
// GroupResizeRequest struct to resize the group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupStartRequest struct to start the specified Compute Group
|
// GroupStartRequest struct to start the specified Compute Group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupStopRequest struct to stop the specified Compute Group
|
// GroupStopRequest struct to stop the specified Compute Group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupUpdateRequest struct to update existing Compute group
|
// GroupUpdateRequest struct to update existing Compute group
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupUpdateExtNetRequest struct to update External Network settings
|
// GroupUpdateExtNetRequest struct to update External Network settings
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupUpdateVINSRequest struct to update VINS settings
|
// GroupUpdateVINSRequest struct to update VINS settings
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListRequest struct to get list of BasicService instances
|
// ListRequest struct to get list of BasicService instances
|
||||||
@@ -46,11 +46,6 @@ type ListRequest struct {
|
|||||||
// Required: false
|
// Required: false
|
||||||
SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty" validate:"omitempty,sortBy"`
|
SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty" validate:"omitempty,sortBy"`
|
||||||
|
|
||||||
// Sort by zone id
|
|
||||||
// Default value: 0
|
|
||||||
// Required: false
|
|
||||||
ZoneID uint64 `url:"zone_id,omitempty" json:"zone_id,omitempty"`
|
|
||||||
|
|
||||||
// Page number
|
// Page number
|
||||||
// Required: false
|
// Required: false
|
||||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListDeletedRequest struct to get list of deleted BasicService instances
|
// ListDeletedRequest struct to get list of deleted BasicService instances
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
package bservice
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"net/http"
|
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MigrateToZone struct to move basic service to another zone
|
|
||||||
type MigrateToZoneRequest struct {
|
|
||||||
// ID of the BasicService to move
|
|
||||||
// Required: true
|
|
||||||
ServiceID uint64 `url:"serviceId" json:"serviceId" validate:"required"`
|
|
||||||
|
|
||||||
// ID of the zone to move
|
|
||||||
// Required: true
|
|
||||||
ZoneID uint64 `url:"zoneId" json:"zoneId" validate:"required"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// MigrateToZone moves basic service instance to new zone
|
|
||||||
func (b BService) MigrateToZone(ctx context.Context, req MigrateToZoneRequest) (bool, error) {
|
|
||||||
err := validators.ValidateRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
return false, validators.ValidationErrors(validators.GetErrors(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
url := "/cloudapi/bservice/migrateToZone"
|
|
||||||
|
|
||||||
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := strconv.ParseBool(string(res))
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
@@ -88,9 +88,6 @@ type RecordBasicService struct {
|
|||||||
|
|
||||||
// Whether user controlled
|
// Whether user controlled
|
||||||
UserManaged bool `json:"userManaged"`
|
UserManaged bool `json:"userManaged"`
|
||||||
|
|
||||||
// Zone ID
|
|
||||||
ZoneID uint64 `json:"zoneId"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main information about Compute
|
// Main information about Compute
|
||||||
@@ -385,9 +382,6 @@ type ItemBasicService struct {
|
|||||||
|
|
||||||
// User Managed or not
|
// User Managed or not
|
||||||
UserManaged bool `json:"userManaged"`
|
UserManaged bool `json:"userManaged"`
|
||||||
|
|
||||||
// Zone ID
|
|
||||||
ZoneID uint64 `json:"zoneId"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of BasicServices
|
// List of BasicServices
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RestoreRequest struct to restore BasicService instance
|
// RestoreRequest struct to restore BasicService instance
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package bservice
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/serialization"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/serialization"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Serialize returns JSON-serialized []byte. Used as a wrapper over json.Marshal and json.MarshalIndent functions.
|
// Serialize returns JSON-serialized []byte. Used as a wrapper over json.Marshal and json.MarshalIndent functions.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SnapshotCreateRequest struct to create snapshot
|
// SnapshotCreateRequest struct to create snapshot
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SnapshotDeleteRequest struct to delete snapshot
|
// SnapshotDeleteRequest struct to delete snapshot
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SnapshotListRequest struct to get list of existing snapshots
|
// SnapshotListRequest struct to get list of existing snapshots
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SnapshotRollbackRequest struct to rollback snapshot
|
// SnapshotRollbackRequest struct to rollback snapshot
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StartRequest struct to start service
|
// StartRequest struct to start service
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StopRequest struct to stop service
|
// StopRequest struct to stop service
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
package cloudapi
|
package cloudapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/interfaces"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Structure for creating request to CloudAPI groups
|
// Structure for creating request to CloudAPI groups
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package cloudapi
|
package cloudapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/pkg/cloudapi/compute"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/pkg/cloudapi/compute"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Accessing the Compute method group
|
// Accessing the Compute method group
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
package compute
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"net/http"
|
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
|
||||||
)
|
|
||||||
|
|
||||||
// AbortSharedSnapshotMergeRequest struct to abort shared snapshots merge
|
|
||||||
type AbortSharedSnapshotMergeRequest struct {
|
|
||||||
// ID of the compute
|
|
||||||
// Required: true
|
|
||||||
ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"`
|
|
||||||
|
|
||||||
// Label of the snapshot
|
|
||||||
// Required: true
|
|
||||||
Label string `url:"label" json:"label" validate:"required"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// AbortSharedSnapshotMerge shared snapshots merge abort
|
|
||||||
func (c Compute) AbortSharedSnapshotMerge(ctx context.Context, req AbortSharedSnapshotMergeRequest) (bool, error) {
|
|
||||||
err := validators.ValidateRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
return false, validators.ValidationErrors(validators.GetErrors(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
url := "/cloudapi/compute/abort_shared_snapshot_merge"
|
|
||||||
|
|
||||||
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := strconv.ParseBool(string(res))
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityGroupCheckStartRequest struct to check all computes with current affinity label can start
|
// AffinityGroupCheckStartRequest struct to check all computes with current affinity label can start
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityLabelRemoveRequest struct to clear affinity label for compute
|
// AffinityLabelRemoveRequest struct to clear affinity label for compute
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityLabelSetRequest struct to set affinity label for compute
|
// AffinityLabelSetRequest struct to set affinity label for compute
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityRelationsRequest struct to get dict of computes
|
// AffinityRelationsRequest struct to get dict of computes
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityRuleAddRequest struct to add affinity rule
|
// AffinityRuleAddRequest struct to add affinity rule
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityRuleRemoveRequest struct to remove affinity rule
|
// AffinityRuleRemoveRequest struct to remove affinity rule
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AffinityRulesClearRequest struct to clear affinity rules
|
// AffinityRulesClearRequest struct to clear affinity rules
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AntiAffinityRuleAddRequest struct to add anti affinity rule
|
// AntiAffinityRuleAddRequest struct to add anti affinity rule
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AntiAffinityRuleRemoveRequest struct to remove anti affinity rule
|
// AntiAffinityRuleRemoveRequest struct to remove anti affinity rule
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AntiAffinityRulesClearRequest struct to clear anti affinity rules
|
// AntiAffinityRulesClearRequest struct to clear anti affinity rules
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AttachGPURequest struct to attach GPU for compute
|
// AttachGPURequest struct to attach GPU for compute
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AttachPCIDeviceRequest struct to attach PCI device
|
// AttachPCIDeviceRequest struct to attach PCI device
|
||||||
|
|||||||
@@ -5,54 +5,18 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AuditsRequest struct to get audit records
|
// AuditsRequest struct to get audit records
|
||||||
type AuditsRequest struct {
|
type AuditsRequest struct {
|
||||||
// ID of the compute
|
// ID of the compute
|
||||||
// Required: true
|
// Required: true
|
||||||
ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"`
|
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
|
||||||
|
|
||||||
// Find all audits after point in time
|
|
||||||
// Required: false
|
|
||||||
TimestampAT uint64 `url:"timestamp_at,omitempty" json:"timestamp_at,omitempty"`
|
|
||||||
|
|
||||||
// Find all audits before point in time
|
|
||||||
// Required: false
|
|
||||||
TimestampTO uint64 `url:"timestamp_to,omitempty" json:"timestamp_to,omitempty"`
|
|
||||||
|
|
||||||
// Find by user
|
|
||||||
// Required: false
|
|
||||||
User string `url:"user,omitempty" json:"user,omitempty"`
|
|
||||||
|
|
||||||
// Find by api endpoints
|
|
||||||
// Required: false
|
|
||||||
Call string `url:"call,omitempty" json:"call,omitempty"`
|
|
||||||
|
|
||||||
// Sort by one of supported fields, format ±<field>
|
|
||||||
// Required: false
|
|
||||||
SortBy string `url:"sort_by,omitempty" json:"sort_by,omitempty"`
|
|
||||||
|
|
||||||
// Page number
|
|
||||||
// Required: false
|
|
||||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
|
||||||
|
|
||||||
// Page size
|
|
||||||
// Required: false
|
|
||||||
Size uint64 `url:"size,omitempty" json:"size,omitempty"`
|
|
||||||
|
|
||||||
// Find by HTTP min status code
|
|
||||||
// Required: false
|
|
||||||
MinStatusCode uint64 `url:"min_status_code,omitempty" json:"min_status_code,omitempty"`
|
|
||||||
|
|
||||||
// Find by HTTP max status code
|
|
||||||
// Required: false
|
|
||||||
MaxStatusCode uint64 `url:"max_status_code,omitempty" json:"max_status_code,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Audits gets audit records for the specified compute object
|
// Audits gets audit records for the specified compute object
|
||||||
func (c Compute) Audits(ctx context.Context, req AuditsRequest) (*ListAudits, error) {
|
func (c Compute) Audits(ctx context.Context, req AuditsRequest) (ListAudits, error) {
|
||||||
err := validators.ValidateRequest(req)
|
err := validators.ValidateRequest(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
@@ -60,7 +24,7 @@ func (c Compute) Audits(ctx context.Context, req AuditsRequest) (*ListAudits, er
|
|||||||
|
|
||||||
url := "/cloudapi/compute/audits"
|
url := "/cloudapi/compute/audits"
|
||||||
|
|
||||||
res, err := c.client.DecortApiCall(ctx, http.MethodGet, url, req)
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -72,5 +36,5 @@ func (c Compute) Audits(ctx context.Context, req AuditsRequest) (*ListAudits, er
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &list, nil
|
return list, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BootDiskSetRequest struct to set boot disk for compute
|
// BootDiskSetRequest struct to set boot disk for compute
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BootOrderGetRequest struct to get boot order
|
// BootOrderGetRequest struct to get boot order
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
|
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v11/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BootOrderSetRequest struct to set boot order
|
// BootOrderSetRequest struct to set boot order
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user