v1.8.0
This commit is contained in:
5
tests/platform_upgrade/.env.template
Normal file
5
tests/platform_upgrade/.env.template
Normal file
@@ -0,0 +1,5 @@
|
||||
# delta
|
||||
AppID="app_id"
|
||||
AppSecret="app_secret"
|
||||
SSOURL="https://sso-delta.qa.loc:8443"
|
||||
DecortURL="https://delta.qa.loc/"
|
||||
133
tests/platform_upgrade/README.md
Normal file
133
tests/platform_upgrade/README.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# Авто тесты при переходе на новую версию платформы
|
||||
|
||||
## Содержание
|
||||
|
||||
- [Авто тесты при переходе на новую версию платформы](#авто-тесты-при-переходе-на-новую-версию-платформы)
|
||||
- [Содержание](#содержание)
|
||||
- [Подготовка к тестам](#подготовка-к-тестам)
|
||||
- [Тесты Raw методов (Get, List)](#тесты-raw-методов-get-list)
|
||||
- [Cloudapi](#cloudapi)
|
||||
- [Cloudbroker](#cloudbroker)
|
||||
- [Тесты запросов](#тесты-запросов)
|
||||
- [Cloudapi](#cloudapi-1)
|
||||
- [Cloudbroker](#cloudbroker-1)
|
||||
- [Тесты API методов](#тесты-api-методов)
|
||||
|
||||
## Подготовка к тестам
|
||||
|
||||
1. Тесты находятся по директории `decort-sdk/tests/platform_upgrade`
|
||||
2. Внутри директории нужно создать и заполнить файл `.env` по аналогии с `.env.template` для доступа к платформе
|
||||
3. Внутри директории нужно создать и заполнить файл `input.json`, содержащий json с раздела [POST /system/docgenerator/prepareCatalog](https://delta.qa.loc/system/ActorApi?group=system#!/system__docgenerator/post_system_docgenerator_prepareCatalog) (для получения json нажать кнопку Try it Out!) - требуется только для тестов запросов
|
||||
|
||||
## Тесты Raw методов (Get, List)
|
||||
|
||||
### Cloudapi
|
||||
|
||||
Запустить тест `TestGetListCloudAPI` в `decort-sdk/tests/platform_upgrade/cloud_test.go`
|
||||
При наличии подсвеченных полей, проверить, что они содержатся на платформе и не содержатся в go структурах, завести и исправить ошибку.
|
||||
|
||||
Пример вывода:
|
||||
```go
|
||||
utils_get_list.go:71: Sizes list: OK
|
||||
utils_get_list.go:71: Tasks list:
|
||||
Platform has these fields that golang struct doesn't: [updatedBy guid]
|
||||
utils_get_list.go:71: VINS list:
|
||||
Platform has these fields that golang struct doesn't: [freeIPs extnetId]
|
||||
utils_get_list.go:71: VINS get: OK
|
||||
--- FAIL: TestGetListCloudAPI (66.13s)
|
||||
```
|
||||
|
||||
### Cloudbroker
|
||||
|
||||
**ВНИМАНИЕ: из-за особенностей архитектуры моделей (вложенные структуры без json-тегов) в cloudbroker этот тест часто выдает некорректные результаты - ложноположительные на предмет багов.**
|
||||
|
||||
Запустить тест `TestGetListCloudbroker` в `decort-sdk/tests/platform_upgrade/cloud_test.go`
|
||||
При наличии подсвеченных полей, проверить, что они содержатся на платформе и не содержатся в go структурах, завести и исправить ошибку.
|
||||
|
||||
## Тесты запросов
|
||||
|
||||
### Cloudapi
|
||||
|
||||
Запустить тест `TestRequestsCloudAPI` в `decort-sdk/tests/platform_upgrade/cloud_test.go`
|
||||
При наличии подсвеченных ошибок, проверить, что они являются ошибками (возможны ситуации, когда расхождение платформы и sdk задумано специально), завести и исправить ошибку.
|
||||
|
||||
Пример вывода:
|
||||
```go
|
||||
=== RUN TestRequestsCloudAPI
|
||||
utils_requests.go:125: Path /cloudapi/compute/affinityRuleRemove has following errors: [Field value has different required parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudapi/lb/listDeleted has following errors: [Platform has field accountId that golang structure doesn't]
|
||||
utils_requests.go:125: Path /cloudapi/compute/pfwAdd has following errors: [Field localBasePort has different required parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudapi/kvmppc/create has following errors: [Field interfaces has different type parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudapi/image/create has following errors: [Platform (14) and golang structure (15) have different amount of fields. Field accountId has different required parameters on the platform and in golang structure]
|
||||
<...>
|
||||
utils_requests.go:125: Path /cloudapi/compute/affinityRuleAdd has following errors: [Field value has different required parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudapi/compute/antiAffinityRuleAdd has following errors: [Field value has different required parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudapi/lb/create has following errors: [Platform (7) and golang structure (8) have different amount of fields. Field extnetId has different required parameters on the platform and in golang structure Field vinsId has different required parameters on the platform and in golang structure]
|
||||
--- FAIL: TestRequestsCloudAPI (0.02s)
|
||||
FAIL
|
||||
```
|
||||
|
||||
### Cloudbroker
|
||||
|
||||
Запустить тест `TestRequestsCloudbroker` в `decort-sdk/tests/platform_upgrade/cloud_test.go`
|
||||
При наличии подсвеченных ошибок, проверить, что они являются ошибками (возможны ситуации, когда расхождение платформы и sdk задумано специально), завести и исправить ошибку.
|
||||
|
||||
Пример вывода:
|
||||
```go
|
||||
=== RUN TestRequestsCloudbroker
|
||||
utils_requests.go:125: Path /cloudbroker/image/updateNodes has following errors: [Field enabledStacks has different type parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudbroker/lb/listDeleted has following errors: [Platform has field accountId that golang structure doesn't]
|
||||
utils_requests.go:125: Path /cloudbroker/k8ci/listDeleted has following errors: [Platform has field k8cId that golang structure doesn't]
|
||||
<...>
|
||||
utils_requests.go:125: Path /cloudbroker/account/setCpuAllocationRatio has following errors: [Platform has field accountId that golang structure doesn't Field ratio has different required parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudbroker/image/list has following errors: [Field size has different type parameters on the platform and in golang structure]
|
||||
utils_requests.go:125: Path /cloudbroker/rg/create has following errors: [Platform has field uniqPools that golang structure doesn't]
|
||||
utils_requests.go:125: Path /cloudbroker/sep/create has following errors: [Field config has different required parameters on the platform and in golang structure]
|
||||
--- FAIL: TestRequestsCloudbroker (0.02s)
|
||||
FAIL
|
||||
```
|
||||
|
||||
## Тесты API методов
|
||||
|
||||
Запустить тест `TestGetAllPaths` в `decort-sdk/tests/platform_upgrade/cloud_test.go`
|
||||
При наличии подсвеченных ошибок, проверить, что указанные методы API не являются устаревшими (deprecated). В противном случе добавить устаревшие методы в переменную `DEPRECATED_GROUPS` по адресу `decort-sdk/tests/platform_upgrade/utils_url.go`.
|
||||
|
||||
Пример вывода:
|
||||
```go
|
||||
=== RUN TestGetAllPaths
|
||||
cloud_test.go:692: Below API handlers (30 in total) need to be added to decort-sdk:
|
||||
/cloudbroker/grid/addCustomBackupPath
|
||||
/cloudapi/user/getResourceConsumption
|
||||
/cloudapi/user/authenticate
|
||||
/cloudbroker/compute/getCustomFields
|
||||
/cloudapi/user/isValidInviteUserToken
|
||||
/cloudapi/pcidevice/list
|
||||
/cloudbroker/compute/createTemplateFromBlank
|
||||
/cloudbroker/account/listVMs
|
||||
/cloudapi/user/brief
|
||||
/cloudapi/user/search
|
||||
/cloudbroker/stack/setMemAllocationRatio
|
||||
/cloudbroker/image/computeciUnset
|
||||
/cloudbroker/image/uploadImageFile
|
||||
/cloudapi/account/getStats
|
||||
/cloudapi/disks/fromPlatformDisk
|
||||
/cloudbroker/stack/getLogicalCoresCount
|
||||
/cloudapi/lb/stop
|
||||
/cloudapi/account/listVMs
|
||||
/cloudapi/user/setData
|
||||
/cloudapi/compute/createTemplateFromBlank
|
||||
/cloudbroker/grid/removeCustomBackupPath
|
||||
/cloudapi/user/getAudit
|
||||
/cloudbroker/account/listCS
|
||||
/cloudapi/account/listCS
|
||||
/cloudbroker/stack/setCpuAllocationRatio
|
||||
/cloudbroker/grid/setPasswordPolicy
|
||||
/cloudapi/user/apiList
|
||||
/cloudbroker/disks/fromPlatformDisk
|
||||
/cloudapi/user/get
|
||||
/cloudapi/vgpu/list
|
||||
--- FAIL: TestGetAllPaths (0.03s)
|
||||
FAIL
|
||||
exit status 1
|
||||
FAIL repository.basistech.ru/BASIS/decort-golang-sdk/tests/platform_upgrade 0.031s
|
||||
```
|
||||
696
tests/platform_upgrade/cloud_test.go
Normal file
696
tests/platform_upgrade/cloud_test.go
Normal file
@@ -0,0 +1,696 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/account"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/bservice"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/disks"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/extnet"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/flipgroup"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/image"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8ci"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/locations"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/rg"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/sizes"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/stack"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/tasks"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
|
||||
|
||||
account_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/account"
|
||||
audit_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
compute_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/compute"
|
||||
disks_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/disks"
|
||||
extnet_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/extnet"
|
||||
flipgroup_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/flipgroup"
|
||||
grid_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/grid"
|
||||
image_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/image"
|
||||
k8ci_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/k8ci"
|
||||
k8s_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/k8s"
|
||||
lb_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/lb"
|
||||
pcidevice_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/pcidevice"
|
||||
rg_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/rg"
|
||||
sep_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
|
||||
stack_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/stack"
|
||||
tasks_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/tasks"
|
||||
vins_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/vins"
|
||||
)
|
||||
|
||||
// TestGetListCloudAPI tests platforms responses vs. json tags of golang structures in cloudapi get/list methods
|
||||
func TestGetListCloudAPI(t *testing.T) {
|
||||
var bytes []byte
|
||||
var err error
|
||||
client, err := getClient()
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot get client: %v", err)
|
||||
}
|
||||
|
||||
// Account
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Account().ListRaw(context.Background(), account.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Account list", bytes, account.ListAccounts{}, t)
|
||||
// Get
|
||||
listAcc, _ := client.CloudAPI().Account().List(context.Background(), account.ListRequest{})
|
||||
if len(listAcc.Data) > 0 {
|
||||
id := listAcc.Data[0].ID
|
||||
bytes, err = client.CloudAPI().Account().GetRaw(context.Background(), account.GetRequest{AccountID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Account get", bytes, account.RecordAccount{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Account get because account list is empty")
|
||||
}
|
||||
|
||||
// Bservice
|
||||
// List
|
||||
bytes, err = client.CloudAPI().BService().ListRaw(context.Background(), bservice.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Bservice list", bytes, bservice.ListBasicServices{}, t)
|
||||
// Get
|
||||
listBServ, _ := client.CloudAPI().BService().List(context.Background(), bservice.ListRequest{})
|
||||
if len(listBServ.Data) > 0 {
|
||||
id := listBServ.Data[0].ID
|
||||
bytes, err = client.CloudAPI().BService().GetRaw(context.Background(), bservice.GetRequest{ServiceID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Bservice get", bytes, bservice.RecordBasicService{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Bservice get because bservice list is empty")
|
||||
}
|
||||
|
||||
// Compute
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Compute().ListRaw(context.Background(), compute.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Compute list", bytes, compute.ListComputes{}, t)
|
||||
// Get
|
||||
listComp, _ := client.CloudAPI().Compute().List(context.Background(), compute.ListRequest{})
|
||||
if len(listComp.Data) > 0 {
|
||||
id := listComp.Data[0].ID
|
||||
bytes, err = client.CloudAPI().Compute().GetRaw(context.Background(), compute.GetRequest{ComputeID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Compute get", bytes, compute.RecordCompute{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Compute get because compute list is empty")
|
||||
}
|
||||
|
||||
// Disk
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Disks().ListRaw(context.Background(), disks.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Disk list", bytes, disks.ListDisks{}, t)
|
||||
// Get
|
||||
listDisk, _ := client.CloudAPI().Disks().List(context.Background(), disks.ListRequest{})
|
||||
if len(listDisk.Data) > 0 {
|
||||
id := listDisk.Data[0].ID
|
||||
bytes, err = client.CloudAPI().Disks().GetRaw(context.Background(), disks.GetRequest{DiskID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Disk get", bytes, disks.RecordDisk{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Disk get because disk list is empty")
|
||||
}
|
||||
|
||||
// ExtNet
|
||||
// List
|
||||
bytes, err = client.CloudAPI().ExtNet().ListRaw(context.Background(), extnet.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("ExtNet list", bytes, extnet.ListExtNets{}, t)
|
||||
// Get
|
||||
listExtNet, _ := client.CloudAPI().ExtNet().List(context.Background(), extnet.ListRequest{})
|
||||
if len(listExtNet.Data) > 0 {
|
||||
id := listExtNet.Data[0].ID
|
||||
bytes, err = client.CloudAPI().ExtNet().GetRaw(context.Background(), extnet.GetRequest{NetID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("ExtNet get", bytes, extnet.RecordExtNet{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test ExtNet get because listExtNet list is empty")
|
||||
}
|
||||
|
||||
// FLIPGroup
|
||||
// List
|
||||
bytes, err = client.CloudAPI().FLIPGroup().ListRaw(context.Background(), flipgroup.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("FLIPGroup list", bytes, flipgroup.ListFLIPGroups{}, t)
|
||||
// Get
|
||||
listFG, _ := client.CloudAPI().FLIPGroup().List(context.Background(), flipgroup.ListRequest{})
|
||||
if len(listFG.Data) > 0 {
|
||||
id := listFG.Data[0].ID
|
||||
bytes, err = client.CloudAPI().FLIPGroup().GetRaw(context.Background(), flipgroup.GetRequest{FLIPGroupID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("FLIPGroup get", bytes, flipgroup.RecordFLIPGroup{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test FLIPGroup get because flipgroup list is empty")
|
||||
}
|
||||
|
||||
// Image
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Image().ListRaw(context.Background(), image.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Image list", bytes, image.ListImages{}, t)
|
||||
// Get
|
||||
listImg, _ := client.CloudAPI().Image().List(context.Background(), image.ListRequest{})
|
||||
if len(listImg.Data) > 0 {
|
||||
id := listImg.Data[0].ID
|
||||
bytes, err = client.CloudAPI().Image().GetRaw(context.Background(), image.GetRequest{ImageID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Image get", bytes, image.RecordImage{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Image get because Image list is empty")
|
||||
}
|
||||
|
||||
// K8CI
|
||||
// List
|
||||
bytes, err = client.CloudAPI().K8CI().ListRaw(context.Background(), k8ci.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8CI list", bytes, k8ci.ListK8CI{}, t)
|
||||
// Get
|
||||
listk8ci, _ := client.CloudAPI().K8CI().List(context.Background(), k8ci.ListRequest{})
|
||||
if len(listk8ci.Data) > 0 {
|
||||
id := listk8ci.Data[0].ID
|
||||
bytes, err = client.CloudAPI().K8CI().GetRaw(context.Background(), k8ci.GetRequest{K8CIID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8CI get", bytes, k8ci.RecordK8CI{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test K8CI get because K8CI list is empty")
|
||||
}
|
||||
|
||||
// K8S
|
||||
// List
|
||||
bytes, err = client.CloudAPI().K8S().ListRaw(context.Background(), k8s.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8S list", bytes, k8s.ListK8SClusters{}, t)
|
||||
// Get
|
||||
listk8s, _ := client.CloudAPI().K8S().List(context.Background(), k8s.ListRequest{})
|
||||
if len(listk8s.Data) > 0 {
|
||||
id := listk8s.Data[0].ID
|
||||
bytes, err = client.CloudAPI().K8S().GetRaw(context.Background(), k8s.GetRequest{K8SID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8S get", bytes, k8s.RecordK8S{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test K8S get because K8S list is empty")
|
||||
}
|
||||
|
||||
// LB
|
||||
// List
|
||||
bytes, err = client.CloudAPI().LB().ListRaw(context.Background(), lb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("LB list", bytes, lb.ListLB{}, t)
|
||||
// Get
|
||||
listLB, _ := client.CloudAPI().LB().List(context.Background(), lb.ListRequest{})
|
||||
if len(listLB.Data) > 0 {
|
||||
id := listLB.Data[0].ID
|
||||
bytes, err = client.CloudAPI().LB().GetRaw(context.Background(), lb.GetRequest{LBID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("LB get", bytes, lb.RecordLB{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test LB get because LB list is empty")
|
||||
}
|
||||
|
||||
// Locations
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Locations().ListRaw(context.Background(), locations.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Locations list", bytes, locations.ListLocations{}, t)
|
||||
|
||||
// RG
|
||||
// List
|
||||
bytes, err = client.CloudAPI().RG().ListRaw(context.Background(), rg.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("RG list", bytes, rg.ListResourceGroups{}, t)
|
||||
// Get
|
||||
listRG, _ := client.CloudAPI().RG().List(context.Background(), rg.ListRequest{})
|
||||
if len(listRG.Data) > 0 {
|
||||
id := listRG.Data[0].ID
|
||||
bytes, err = client.CloudAPI().RG().GetRaw(context.Background(), rg.GetRequest{RGID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("RG get", bytes, rg.RecordResourceGroup{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test RG get because RG list is empty")
|
||||
}
|
||||
|
||||
// Sizes
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Sizes().ListRaw(context.Background(), sizes.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Sizes list", bytes, sizes.ListSizes{}, t)
|
||||
|
||||
// Stack
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Stack().ListRaw(context.Background(), stack.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Stack list", bytes, stack.ListStacks{}, t)
|
||||
|
||||
// Tasks
|
||||
// List
|
||||
bytes, err = client.CloudAPI().Tasks().ListRaw(context.Background(), tasks.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Tasks list", bytes, tasks.ListTasks{}, t)
|
||||
// Get
|
||||
listTasks, _ := client.CloudAPI().Tasks().List(context.Background(), tasks.ListRequest{})
|
||||
if len(listTasks.Data) > 0 {
|
||||
id := listTasks.Data[0].AuditID
|
||||
bytes, err = client.CloudAPI().Tasks().GetRaw(context.Background(), tasks.GetRequest{AuditID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Tasks get", bytes, tasks.RecordAsyncTask{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Tasks get because Tasks list is empty")
|
||||
}
|
||||
|
||||
// VINS
|
||||
// List
|
||||
bytes, err = client.CloudAPI().VINS().ListRaw(context.Background(), vins.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("VINS list", bytes, vins.ListVINS{}, t)
|
||||
// Get
|
||||
listVINS, _ := client.CloudAPI().VINS().List(context.Background(), vins.ListRequest{})
|
||||
if len(listVINS.Data) > 0 {
|
||||
id := listVINS.Data[0].ID
|
||||
bytes, err = client.CloudAPI().VINS().GetRaw(context.Background(), vins.GetRequest{VINSID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("VINS get", bytes, vins.RecordVINS{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test VINS get because VINS list is empty")
|
||||
}
|
||||
}
|
||||
|
||||
// WARNING: not working correctly due to inclusions of tagless structures in cloudbroker
|
||||
// TestGetListCloudbroker tests platforms responses vs. json tags of golang structures in cloudbroker get/list methods
|
||||
func TestGetListCloudbroker(t *testing.T) {
|
||||
var bytes []byte
|
||||
var err error
|
||||
client, err := getClient()
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot get client: %v", err)
|
||||
}
|
||||
|
||||
// Account
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Account().ListRaw(context.Background(), account_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Account list", bytes, account_cb.ListAccounts{}, t)
|
||||
// Get
|
||||
listAcc, _ := client.CloudBroker().Account().List(context.Background(), account_cb.ListRequest{})
|
||||
if len(listAcc.Data) > 0 {
|
||||
id := listAcc.Data[0].ID
|
||||
bytes, err = client.CloudBroker().Account().GetRaw(context.Background(), account_cb.GetRequest{AccountID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Account get", bytes, account_cb.RecordAccount{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Account get because account list is empty")
|
||||
}
|
||||
|
||||
// Audit
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Audit().ListRaw(context.Background(), audit_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Audit list", bytes, audit_cb.ListAudits{}, t)
|
||||
// Get
|
||||
listAudits, _ := client.CloudBroker().Audit().List(context.Background(), audit_cb.ListRequest{})
|
||||
if len(listAudits.Data) > 0 {
|
||||
id := listAudits.Data[0].GUID
|
||||
bytes, err = client.CloudBroker().Audit().GetRaw(context.Background(), audit_cb.GetRequest{AuditGuid: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Audit get", bytes, audit_cb.RecordAudit{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Audit get because Audit list is empty")
|
||||
}
|
||||
|
||||
// Compute
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Compute().ListRaw(context.Background(), compute_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Compute list", bytes, compute_cb.ListComputes{}, t)
|
||||
// Get
|
||||
listComp, _ := client.CloudBroker().Compute().List(context.Background(), compute_cb.ListRequest{})
|
||||
if len(listComp.Data) > 0 {
|
||||
id := listComp.Data[0].ID
|
||||
bytes, err = client.CloudBroker().Compute().GetRaw(context.Background(), compute_cb.GetRequest{ComputeID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Compute get", bytes, compute_cb.RecordCompute{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Compute get because compute list is empty")
|
||||
}
|
||||
|
||||
// Disk
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Disks().ListRaw(context.Background(), disks_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Disk list", bytes, disks_cb.ListDisks{}, t)
|
||||
// Get
|
||||
listDisk, _ := client.CloudBroker().Disks().List(context.Background(), disks_cb.ListRequest{})
|
||||
if len(listDisk.Data) > 0 {
|
||||
id := listDisk.Data[0].ID
|
||||
bytes, err = client.CloudBroker().Disks().GetRaw(context.Background(), disks_cb.GetRequest{DiskID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Disk get", bytes, disks_cb.RecordDisk{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Disk get because disk list is empty")
|
||||
}
|
||||
|
||||
// ExtNet
|
||||
// List
|
||||
bytes, err = client.CloudBroker().ExtNet().ListRaw(context.Background(), extnet_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("ExtNet list", bytes, extnet_cb.ListExtNet{}, t)
|
||||
// Get
|
||||
listExtNet, _ := client.CloudBroker().ExtNet().List(context.Background(), extnet_cb.ListRequest{})
|
||||
if len(listExtNet.Data) > 0 {
|
||||
id := listExtNet.Data[0].ID
|
||||
bytes, err = client.CloudBroker().ExtNet().GetRaw(context.Background(), extnet_cb.GetRequest{NetID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("ExtNet get", bytes, extnet_cb.RecordExtNet{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test ExtNet get because listExtNet list is empty")
|
||||
}
|
||||
|
||||
// FLIPGroup
|
||||
// List
|
||||
bytes, err = client.CloudBroker().FLIPGroup().ListRaw(context.Background(), flipgroup_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("FLIPGroup list", bytes, flipgroup_cb.ListFLIPGroups{}, t)
|
||||
// Get
|
||||
listFG, _ := client.CloudBroker().FLIPGroup().List(context.Background(), flipgroup_cb.ListRequest{})
|
||||
if len(listFG.Data) > 0 {
|
||||
id := listFG.Data[0].ID
|
||||
bytes, err = client.CloudBroker().FLIPGroup().GetRaw(context.Background(), flipgroup_cb.GetRequest{FLIPGroupID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("FLIPGroup get", bytes, flipgroup_cb.RecordFLIPGroup{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test FLIPGroup get because flipgroup list is empty")
|
||||
}
|
||||
|
||||
// Grid
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Grid().ListRaw(context.Background(), grid_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Grid list", bytes, grid_cb.ListGrids{}, t)
|
||||
// Get
|
||||
listGrid, _ := client.CloudBroker().Grid().List(context.Background(), grid_cb.ListRequest{})
|
||||
if len(listGrid.Data) > 0 {
|
||||
id := listGrid.Data[0].ID
|
||||
bytes, err = client.CloudBroker().Grid().GetRaw(context.Background(), grid_cb.GetRequest{GID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Grid get", bytes, grid_cb.RecordGrid{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Grid get because Grid list is empty")
|
||||
}
|
||||
|
||||
// Image
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Image().ListRaw(context.Background(), image_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Image list", bytes, image_cb.ListImages{}, t)
|
||||
// Get
|
||||
listImg, _ := client.CloudBroker().Image().List(context.Background(), image_cb.ListRequest{})
|
||||
if len(listImg.Data) > 0 {
|
||||
id := listImg.Data[0].ID
|
||||
bytes, err = client.CloudBroker().Image().GetRaw(context.Background(), image_cb.GetRequest{ImageID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Image get", bytes, image_cb.RecordImage{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Image get because Image list is empty")
|
||||
}
|
||||
|
||||
// K8CI
|
||||
// List
|
||||
bytes, err = client.CloudBroker().K8CI().ListRaw(context.Background(), k8ci_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8CI list", bytes, k8ci_cb.ListK8CI{}, t)
|
||||
// Get
|
||||
listk8ci, _ := client.CloudBroker().K8CI().List(context.Background(), k8ci_cb.ListRequest{})
|
||||
if len(listk8ci.Data) > 0 {
|
||||
id := listk8ci.Data[0].ID
|
||||
bytes, err = client.CloudBroker().K8CI().GetRaw(context.Background(), k8ci_cb.GetRequest{K8CIID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8CI get", bytes, k8ci_cb.RecordK8CI{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test K8CI get because K8CI list is empty")
|
||||
}
|
||||
|
||||
// K8S
|
||||
// List
|
||||
bytes, err = client.CloudBroker().K8S().ListRaw(context.Background(), k8s_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8S list", bytes, k8s_cb.ListK8S{}, t)
|
||||
// Get
|
||||
listk8s, _ := client.CloudBroker().K8S().List(context.Background(), k8s_cb.ListRequest{})
|
||||
if len(listk8s.Data) > 0 {
|
||||
id := listk8s.Data[0].ID
|
||||
bytes, err = client.CloudBroker().K8S().GetRaw(context.Background(), k8s_cb.GetRequest{K8SID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("K8S get", bytes, k8s_cb.RecordK8S{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test K8S get because K8S list is empty")
|
||||
}
|
||||
|
||||
// LB
|
||||
// List
|
||||
bytes, err = client.CloudBroker().LB().ListRaw(context.Background(), lb_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("LB list", bytes, lb_cb.ListLB{}, t)
|
||||
// Get
|
||||
listLB, _ := client.CloudBroker().LB().List(context.Background(), lb_cb.ListRequest{})
|
||||
if len(listLB.Data) > 0 {
|
||||
id := listLB.Data[0].ID
|
||||
bytes, err = client.CloudBroker().LB().GetRaw(context.Background(), lb_cb.GetRequest{LBID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("LB get", bytes, lb_cb.RecordLB{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test LB get because LB list is empty")
|
||||
}
|
||||
|
||||
// Pcidevice
|
||||
// List
|
||||
bytes, err = client.CloudBroker().PCIDevice().ListRaw(context.Background(), pcidevice_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Pcidevice list", bytes, pcidevice_cb.ListPCIDevices{}, t)
|
||||
|
||||
// RG
|
||||
// List
|
||||
bytes, err = client.CloudBroker().RG().ListRaw(context.Background(), rg_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("RG list", bytes, rg_cb.ListRG{}, t)
|
||||
// Get
|
||||
listRG, _ := client.CloudBroker().RG().List(context.Background(), rg_cb.ListRequest{})
|
||||
if len(listRG.Data) > 0 {
|
||||
id := listRG.Data[0].ID
|
||||
bytes, err = client.CloudBroker().RG().GetRaw(context.Background(), rg_cb.GetRequest{RGID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("RG get", bytes, rg_cb.RecordRG{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test RG get because RG list is empty")
|
||||
}
|
||||
|
||||
// SEP
|
||||
// List
|
||||
bytes, err = client.CloudBroker().SEP().ListRaw(context.Background(), sep_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("SEP list", bytes, sep_cb.ListSEP{}, t)
|
||||
// Get
|
||||
listSEP, _ := client.CloudBroker().SEP().List(context.Background(), sep_cb.ListRequest{})
|
||||
if len(listSEP.Data) > 0 {
|
||||
id := listSEP.Data[0].ID
|
||||
bytes, err = client.CloudBroker().SEP().GetRaw(context.Background(), sep_cb.GetRequest{SEPID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("SEP get", bytes, sep_cb.RecordSEP{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test SEP get because SEP list is empty")
|
||||
}
|
||||
|
||||
// Stack
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Stack().ListRaw(context.Background(), stack_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Stack list", bytes, stack_cb.ListStacks{}, t)
|
||||
// Get
|
||||
listStack, _ := client.CloudBroker().Stack().List(context.Background(), stack_cb.ListRequest{})
|
||||
if len(listStack.Data) > 0 {
|
||||
id := listStack.Data[0].ID
|
||||
bytes, err = client.CloudBroker().Stack().GetRaw(context.Background(), stack_cb.GetRequest{StackId: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Stack get", bytes, stack_cb.InfoStack{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test Stack get because Stack list is empty")
|
||||
}
|
||||
|
||||
// Tasks
|
||||
// List
|
||||
bytes, err = client.CloudBroker().Tasks().ListRaw(context.Background(), tasks_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("Tasks list", bytes, tasks_cb.ListTasks{}, t)
|
||||
|
||||
// VINS
|
||||
// List
|
||||
bytes, err = client.CloudBroker().VINS().ListRaw(context.Background(), vins_cb.ListRequest{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("VINS list", bytes, vins_cb.ListVINS{}, t)
|
||||
// Get
|
||||
listVINS, _ := client.CloudBroker().VINS().List(context.Background(), vins_cb.ListRequest{})
|
||||
if len(listVINS.Data) > 0 {
|
||||
id := listVINS.Data[0].ID
|
||||
bytes, err = client.CloudBroker().VINS().GetRaw(context.Background(), vins_cb.GetRequest{VINSID: id})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
getResult("VINS get", bytes, vins_cb.RecordVINS{}, t)
|
||||
} else {
|
||||
t.Errorf("Can not test VINS get because VINS list is empty")
|
||||
}
|
||||
}
|
||||
|
||||
// TestRequestsCloudAPI tests platform requests vs. golang request structures in sdk for cloudapi requests
|
||||
func TestRequestsCloudAPI(t *testing.T) {
|
||||
bytes := getBytesFromJSON("input.json", t)
|
||||
getErrorsFromJSON(bytes, t, "cloudapi")
|
||||
}
|
||||
|
||||
// TestRequestsCloudbroker tests platform requests vs. golang request structures in sdk for cloudbroker requests
|
||||
func TestRequestsCloudbroker(t *testing.T) {
|
||||
bytes := getBytesFromJSON("input.json", t)
|
||||
getErrorsFromJSON(bytes, t, "cloudbroker")
|
||||
}
|
||||
|
||||
// TestGetAllPaths tests if platform has any handlers that golang sdk doesn't. In this case, list of missing handlers is provided.
|
||||
// Note that DEPRECATED_GROUPS stores list of groups that are considered deprecated. You can add additional grops to DEPRECATED_GROUPS if required.
|
||||
func TestGetAllPaths(t *testing.T) {
|
||||
bytes := getBytesFromJSON("input.json", t)
|
||||
jsonUrls, err := getUrlsFromBytes(bytes)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
decortUrls := readUrlFromDir("../../pkg", len(jsonUrls))
|
||||
|
||||
result := getMissingDecortUrls(jsonUrls, decortUrls)
|
||||
if len(result) > 0 {
|
||||
errorText := fmt.Sprintf("Below API handlers (%d in total) need to be added to decort-sdk:\n", len(result))
|
||||
for _, r := range result {
|
||||
errorText += fmt.Sprintln(r)
|
||||
}
|
||||
t.Errorf(errorText)
|
||||
}
|
||||
}
|
||||
912
tests/platform_upgrade/request_map.go
Normal file
912
tests/platform_upgrade/request_map.go
Normal file
@@ -0,0 +1,912 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/account"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/bservice"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/disks"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/extnet"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/flipgroup"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/image"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8ci"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/kvmppc"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/kvmx86"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/locations"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/pcidevice"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/rg"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/sizes"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/stack"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/tasks"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/user"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vfpool"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
|
||||
|
||||
account_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/account"
|
||||
apiaccess_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/apiaccess"
|
||||
audit_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
backup_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/backup"
|
||||
compute_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/compute"
|
||||
disks_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/disks"
|
||||
extnet_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/extnet"
|
||||
flipgroup_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/flipgroup"
|
||||
grid_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/grid"
|
||||
group_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/group"
|
||||
image_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/image"
|
||||
k8ci_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/k8ci"
|
||||
k8s_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/k8s"
|
||||
kvmppc_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/kvmppc"
|
||||
kvmx86_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/kvmx86"
|
||||
lb_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/lb"
|
||||
node_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/node"
|
||||
pcidevice_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/pcidevice"
|
||||
rg_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/rg"
|
||||
sep_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
|
||||
stack_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/stack"
|
||||
tasks_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/tasks"
|
||||
user_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/user"
|
||||
vfpool_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/vfpool"
|
||||
vgpu_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/vgpu"
|
||||
vins_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/vins"
|
||||
)
|
||||
|
||||
type EmptyStruct struct{}
|
||||
|
||||
// getRequestsMapCloudAPI maps request path with request golang sdk structures for cloudapi most used requests
|
||||
func getRequestsMapCloudAPI() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
// account
|
||||
"/cloudapi/account/addUser": account.AddUserRequest{},
|
||||
"/cloudapi/account/audits": account.AuditsRequest{},
|
||||
"/cloudapi/account/delete": account.DeleteRequest{},
|
||||
"/cloudapi/account/deleteUser": account.DeleteUserRequest{},
|
||||
"/cloudapi/account/disable": account.DisableEnableRequest{},
|
||||
"/cloudapi/account/enable": account.DisableEnableRequest{},
|
||||
"/cloudapi/account/get": account.GetRequest{},
|
||||
"/cloudapi/account/getConsumedAccountUnits": account.GetConsumedAccountUnitsRequest{},
|
||||
"/cloudapi/account/getConsumedCloudUnitsByType": account.GetConsumedCloudUnitsByTypeRequest{},
|
||||
"/cloudapi/account/getConsumption": account.GetConsumptionRequest{},
|
||||
"/cloudapi/account/getReservedAccountUnits": account.GetReservedAccountUnitsRequest{},
|
||||
"/cloudapi/account/getResourceConsumption": account.GetResourceConsumptionRequest{},
|
||||
"/cloudapi/account/list": account.ListRequest{},
|
||||
"/cloudapi/account/listComputes": account.ListComputesRequest{},
|
||||
"/cloudapi/account/listDeleted": account.ListDeletedRequest{},
|
||||
"/cloudapi/account/listDisks": account.ListDisksRequest{},
|
||||
"/cloudapi/account/listFlipGroups": account.ListFLIPGroupsRequest{},
|
||||
"/cloudapi/account/listRG": account.ListRGRequest{},
|
||||
"/cloudapi/account/listResourceConsumption": EmptyStruct{},
|
||||
"/cloudapi/account/listTemplates": account.ListTemplatesRequest{},
|
||||
"/cloudapi/account/listVins": account.ListVINSRequest{},
|
||||
"/cloudapi/account/restore": account.RestoreRequest{},
|
||||
"/cloudapi/account/update": account.UpdateRequest{},
|
||||
"/cloudapi/account/updateUser": account.UpdateUserRequest{},
|
||||
|
||||
//bservice
|
||||
"/cloudapi/bservice/create": bservice.CreateRequest{},
|
||||
"/cloudapi/bservice/delete": bservice.DeleteRequest{},
|
||||
"/cloudapi/bservice/disable": bservice.DisableRequest{},
|
||||
"/cloudapi/bservice/enable": bservice.EnableRequest{},
|
||||
"/cloudapi/bservice/get": bservice.GetRequest{},
|
||||
"/cloudapi/bservice/groupAdd": bservice.GroupAddRequest{},
|
||||
"/cloudapi/bservice/groupComputeRemove": bservice.GroupComputeRemoveRequest{},
|
||||
"/cloudapi/bservice/groupGet": bservice.GroupGetRequest{},
|
||||
"/cloudapi/bservice/groupParentAdd": bservice.GroupParentAddRequest{},
|
||||
"/cloudapi/bservice/groupParentRemove": bservice.GroupParentRemoveRequest{},
|
||||
"/cloudapi/bservice/groupRemove": bservice.GroupRemoveRequest{},
|
||||
"/cloudapi/bservice/groupResize": bservice.GroupResizeRequest{},
|
||||
"/cloudapi/bservice/groupStart": bservice.GroupStartRequest{},
|
||||
"/cloudapi/bservice/groupStop": bservice.GroupStopRequest{},
|
||||
"/cloudapi/bservice/groupUpdate": bservice.GroupUpdateRequest{},
|
||||
"/cloudapi/bservice/groupUpdateExtnet": bservice.GroupUpdateExtNetRequest{},
|
||||
"/cloudapi/bservice/groupUpdateVins": bservice.GroupUpdateVINSRequest{},
|
||||
"/cloudapi/bservice/list": bservice.ListRequest{},
|
||||
"/cloudapi/bservice/listDeleted": bservice.ListDeletedRequest{},
|
||||
"/cloudapi/bservice/restore": bservice.RestoreRequest{},
|
||||
"/cloudapi/bservice/snapshotCreate": bservice.SnapshotCreateRequest{},
|
||||
"/cloudapi/bservice/snapshotDelete": bservice.SnapshotDeleteRequest{},
|
||||
"/cloudapi/bservice/snapshotList": bservice.SnapshotListRequest{},
|
||||
"/cloudapi/bservice/snapshotRollback": bservice.SnapshotRollbackRequest{},
|
||||
"/cloudapi/bservice/start": bservice.StartRequest{},
|
||||
"/cloudapi/bservice/stop": bservice.StopRequest{},
|
||||
|
||||
// compute
|
||||
"/cloudapi/compute/affinityGroupCheckStart": compute.AffinityGroupCheckStartRequest{},
|
||||
"/cloudapi/compute/affinityLabelRemove": compute.AffinityLabelRemoveRequest{},
|
||||
"/cloudapi/compute/affinityLabelSet": compute.AffinityLabelSetRequest{},
|
||||
"/cloudapi/compute/affinityRelations": compute.AffinityRelationsRequest{},
|
||||
"/cloudapi/compute/affinityRuleAdd": compute.AffinityRuleAddRequest{},
|
||||
"/cloudapi/compute/affinityRuleRemove": compute.AffinityRuleRemoveRequest{},
|
||||
"/cloudapi/compute/affinityRulesClear": compute.AffinityRulesClearRequest{},
|
||||
"/cloudapi/compute/antiAffinityRuleAdd": compute.AntiAffinityRuleAddRequest{},
|
||||
"/cloudapi/compute/antiAffinityRuleRemove": compute.AntiAffinityRuleRemoveRequest{},
|
||||
"/cloudapi/compute/antiAffinityRulesClear": compute.AffinityRulesClearRequest{},
|
||||
"/cloudapi/compute/attachGpu": compute.AttachGPURequest{},
|
||||
"/cloudapi/compute/attachPciDevice": compute.AttachPCIDeviceRequest{},
|
||||
"/cloudapi/compute/audits": compute.AuditsRequest{},
|
||||
"/cloudapi/compute/bootDiskSet": compute.BootDiskSetRequest{},
|
||||
"/cloudapi/compute/bootOrderGet": compute.BootOrderGetRequest{},
|
||||
"/cloudapi/compute/bootOrderSet": compute.BootOrderSetRequest{},
|
||||
"/cloudapi/compute/cdEject": compute.CDEjectRequest{},
|
||||
"/cloudapi/compute/cdInsert": compute.CDInsertRequest{},
|
||||
"/cloudapi/compute/changeLinkState": compute.ChangeLinkStateRequest{},
|
||||
"/cloudapi/compute/clone": compute.CloneRequest{},
|
||||
"/cloudapi/compute/createTemplate": compute.CreateTemplateRequest{},
|
||||
"/cloudapi/compute/createTemplateFromBlank": compute.CreateTemplateFromBlankRequest{},
|
||||
"/cloudapi/compute/delete": compute.DeleteRequest{},
|
||||
"/cloudapi/compute/deleteCustomFields": compute.DeleteCustomFieldsRequest{},
|
||||
"/cloudapi/compute/detachGpu": compute.DetachGPURequest{},
|
||||
"/cloudapi/compute/detachPciDevice": compute.DetachPCIDeviceRequest{},
|
||||
"/cloudapi/compute/disable": compute.DisableRequest{},
|
||||
"/cloudapi/compute/diskAdd": compute.DiskAddRequest{},
|
||||
"/cloudapi/compute/diskAttach": compute.DiskAttachRequest{},
|
||||
"/cloudapi/compute/diskDel": compute.DiskDelRequest{},
|
||||
"/cloudapi/compute/diskDetach": compute.DiskDetachRequest{},
|
||||
"/cloudapi/compute/diskMigrate": compute.DiskMigrateRequest{},
|
||||
"/cloudapi/compute/diskQos": compute.DiskQOSRequest{},
|
||||
"/cloudapi/compute/diskSwitchToReplication": compute.DiskSwitchToReplicationRequest{},
|
||||
"/cloudapi/compute/diskResize": compute.DiskResizeRequest{},
|
||||
"/cloudapi/compute/enable": compute.EnableRequest{},
|
||||
"/cloudapi/compute/get": compute.GetRequest{},
|
||||
"/cloudapi/compute/getAudits": compute.GetAuditsRequest{},
|
||||
"/cloudapi/compute/getConsoleUrl": compute.GetConsoleURLRequest{},
|
||||
"/cloudapi/compute/getCustomFields": compute.GetCustomFieldsRequest{},
|
||||
"/cloudapi/compute/getLog": compute.GetLogRequest{},
|
||||
"/cloudapi/compute/list": compute.ListRequest{},
|
||||
"/cloudapi/compute/listDeleted": compute.ListDeletedRequest{},
|
||||
"/cloudapi/compute/listPciDevice": compute.ListPCIDeviceRequest{},
|
||||
"/cloudapi/compute/listVGpu": compute.ListVGPURequest{},
|
||||
"/cloudapi/compute/moveToRg": compute.MoveToRGRequest{},
|
||||
"/cloudapi/compute/netAttach": compute.NetAttachRequest{},
|
||||
"/cloudapi/compute/netDetach": compute.NetDetachRequest{},
|
||||
"/cloudapi/compute/pfwAdd": compute.PFWAddRequest{},
|
||||
"/cloudapi/compute/pfwDel": compute.PFWDelRequest{},
|
||||
"/cloudapi/compute/pfwList": compute.PFWListRequest{},
|
||||
"/cloudapi/compute/pause": compute.PauseRequest{},
|
||||
"/cloudapi/compute/pinToStack": compute.PinToStackRequest{},
|
||||
"/cloudapi/compute/powerCycle": compute.PowerCycleRequest{},
|
||||
"/cloudapi/compute/reboot": compute.RebootRequest{},
|
||||
"/cloudapi/compute/redeploy": compute.RedeployRequest{},
|
||||
"/cloudapi/compute/reset": compute.ResetRequest{},
|
||||
"/cloudapi/compute/resize": compute.ResizeRequest{},
|
||||
"/cloudapi/compute/restore": compute.RestoreRequest{},
|
||||
"/cloudapi/compute/resume": compute.ResumeRequest{},
|
||||
"/cloudapi/compute/setCustomFields": compute.SetCustomFieldsRequest{},
|
||||
"/cloudapi/compute/snapshotCreate": compute.SnapshotCreateRequest{},
|
||||
"/cloudapi/compute/snapshotDelete": compute.SnapshotDeleteRequest{},
|
||||
"/cloudapi/compute/snapshotList": compute.SnapshotListRequest{},
|
||||
"/cloudapi/compute/snapshotRollback": compute.SnapshotRollbackRequest{},
|
||||
"/cloudapi/compute/snapshotUsage": compute.SnapshotUsageRequest{},
|
||||
"/cloudapi/compute/start": compute.StartRequest{},
|
||||
"/cloudapi/compute/stop": compute.StopRequest{},
|
||||
"/cloudapi/compute/tagAdd": compute.TagAddRequest{},
|
||||
"/cloudapi/compute/tagRemove": compute.TagRemoveRequest{},
|
||||
"/cloudapi/compute/unpinFromStack": compute.UnpinFromStackRequest{},
|
||||
"/cloudapi/compute/update": compute.UpdateRequest{},
|
||||
"/cloudapi/compute/userGrant": compute.UserGrantRequest{},
|
||||
"/cloudapi/compute/userList": compute.UserListRequest{},
|
||||
"/cloudapi/compute/userRevoke": compute.UserRevokeRequest{},
|
||||
"/cloudapi/compute/userUpdate": compute.UserUpdateRequest{},
|
||||
|
||||
// disks
|
||||
"/cloudapi/disks/create": disks.CreateRequest{},
|
||||
"/cloudapi/disks/delete": disks.DeleteRequest{},
|
||||
"/cloudapi/disks/deleteDisks": disks.DisksDeleteRequest{},
|
||||
"/cloudapi/disks/fromPlatformDisk": disks.FromPlatformDiskRequest{},
|
||||
"/cloudapi/disks/get": disks.GetRequest{},
|
||||
"/cloudapi/disks/limitIO": disks.LimitIORequest{},
|
||||
"/cloudapi/disks/list": disks.ListRequest{},
|
||||
"/cloudapi/disks/listDeleted": disks.ListDeletedRequest{},
|
||||
"/cloudapi/disks/listTypes": disks.ListTypesRequest{},
|
||||
"/cloudapi/disks/listUnattached": disks.ListUnattachedRequest{},
|
||||
"/cloudapi/disks/rename": disks.RenameRequest{},
|
||||
"/cloudapi/disks/replicate": disks.ReplicateRequest{},
|
||||
"/cloudapi/disks/replicationResume": disks.ReplicationResumeRequest{},
|
||||
"/cloudapi/disks/replicationReverse": disks.ReplicationReverseRequest{},
|
||||
"/cloudapi/disks/replicationStart": disks.ReplicationStartRequest{},
|
||||
"/cloudapi/disks/replicationStatus": disks.ReplicationStatusRequest{},
|
||||
"/cloudapi/disks/replicationStop": disks.ReplicationStopRequest{},
|
||||
"/cloudapi/disks/replicationSuspend": disks.ReplicationSuspendRequest{},
|
||||
"/cloudapi/disks/resize": disks.ResizeRequest{},
|
||||
"/cloudapi/disks/resize2": disks.ResizeRequest{},
|
||||
"/cloudapi/disks/restore": disks.RestoreRequest{},
|
||||
"/cloudapi/disks/search": disks.SearchRequest{},
|
||||
"/cloudapi/disks/share": disks.ShareRequest{},
|
||||
"/cloudapi/disks/snapshotDelete": disks.SnapshotDeleteRequest{},
|
||||
"/cloudapi/disks/snapshotRollback": disks.SnapshotRollbackRequest{},
|
||||
"/cloudapi/disks/unshare": disks.UnshareRequest{},
|
||||
|
||||
// extnet
|
||||
"/cloudapi/extnet/get": extnet.GetRequest{},
|
||||
"/cloudapi/extnet/getDefault": EmptyStruct{},
|
||||
"/cloudapi/extnet/list": extnet.ListRequest{},
|
||||
"/cloudapi/extnet/listComputes": extnet.ListComputesRequest{},
|
||||
|
||||
// flipgroup
|
||||
"/cloudapi/flipgroup/computeAdd": flipgroup.ComputeAddRequest{},
|
||||
"/cloudapi/flipgroup/computeRemove": flipgroup.ComputeRemoveRequest{},
|
||||
"/cloudapi/flipgroup/create": flipgroup.CreateRequest{},
|
||||
"/cloudapi/flipgroup/delete": flipgroup.DeleteRequest{},
|
||||
"/cloudapi/flipgroup/edit": flipgroup.EditRequest{},
|
||||
"/cloudapi/flipgroup/get": flipgroup.GetRequest{},
|
||||
"/cloudapi/flipgroup/list": flipgroup.ListRequest{},
|
||||
|
||||
// image
|
||||
"/cloudapi/image/create": image.CreateRequest{},
|
||||
"/cloudapi/image/createVirtual": image.CreateVirtualRequest{},
|
||||
"/cloudapi/image/delete": image.DeleteRequest{},
|
||||
"/cloudapi/image/get": image.GetRequest{},
|
||||
"/cloudapi/image/link": image.LinkRequest{},
|
||||
"/cloudapi/image/list": image.ListRequest{},
|
||||
"/cloudapi/image/rename": image.RenameRequest{},
|
||||
|
||||
// k8ci, k8s
|
||||
"/cloudapi/k8ci/get": k8ci.GetRequest{},
|
||||
"/cloudapi/k8ci/list": k8ci.ListRequest{},
|
||||
"/cloudapi/k8ci/listDeleted": k8ci.ListDeletedRequest{},
|
||||
"/cloudapi/k8s/create": k8s.CreateRequest{},
|
||||
"/cloudapi/k8s/delete": k8s.DeleteRequest{},
|
||||
"/cloudapi/k8s/deleteMasterFromGroup": k8s.DeleteMasterFromGroupRequest{},
|
||||
"/cloudapi/k8s/deleteWorkerFromGroup": k8s.DeleteWorkerFromGroupRequest{},
|
||||
"/cloudapi/k8s/disable": k8s.DisableEnableRequest{},
|
||||
"/cloudapi/k8s/enable": k8s.DisableEnableRequest{},
|
||||
"/cloudapi/k8s/findGroupByLabel": k8s.FindGroupByLabelRequest{},
|
||||
"/cloudapi/k8s/get": k8s.GetRequest{},
|
||||
"/cloudapi/k8s/getConfig": k8s.GetConfigRequest{},
|
||||
"/cloudapi/k8s/getNodeAnnotations": k8s.GetNodeAnnotationsRequest{},
|
||||
"/cloudapi/k8s/getNodeLabels": k8s.GetNodeLabelsRequest{},
|
||||
"/cloudapi/k8s/getNodeTaints": k8s.GetNodeTaintsRequest{},
|
||||
"/cloudapi/k8s/getWorkerNodesMetaData": k8s.GetWorkerNodesMetaDataRequest{},
|
||||
"/cloudapi/k8s/list": k8s.ListRequest{},
|
||||
"/cloudapi/k8s/listDeleted": k8s.ListDeletedRequest{},
|
||||
"/cloudapi/k8s/restore": k8s.RestoreRequest{},
|
||||
"/cloudapi/k8s/start": k8s.StartRequest{},
|
||||
"/cloudapi/k8s/stop": k8s.StopRequest{},
|
||||
"/cloudapi/k8s/update": k8s.UpdateRequest{},
|
||||
"/cloudapi/k8s/updateWorkerNodesMetaData": k8s.UpdateWorkerNodesMetaDataRequest{},
|
||||
"/cloudapi/k8s/workerAdd": k8s.WorkerAddRequest{},
|
||||
"/cloudapi/k8s/workersGroupAdd": k8s.WorkersGroupAddRequest{},
|
||||
"/cloudapi/k8s/workersGroupDelete": k8s.WorkersGroupDeleteRequest{},
|
||||
"/cloudapi/k8s/workersGroupGetByName": k8s.WorkersGroupGetByNameRequest{},
|
||||
"/cloudapi/k8s/workerReset": k8s.WorkerResetRequest{},
|
||||
"/cloudapi/k8s/workerRestart": k8s.WorkerRestartRequest{},
|
||||
|
||||
// kvmppc
|
||||
"/cloudapi/kvmppc/create": kvmppc.CreateRequest{},
|
||||
"/cloudapi/kvmppc/createBlank": kvmppc.CreateBlankRequest{},
|
||||
"/cloudapi/kvmx86/create": kvmx86.CreateRequest{},
|
||||
"/cloudapi/kvmx86/createBlank": kvmx86.CreateBlankRequest{},
|
||||
|
||||
// lb
|
||||
"/cloudapi/lb/backendCreate": lb.BackendCreateRequest{},
|
||||
"/cloudapi/lb/backendDelete": lb.BackendDeleteRequest{},
|
||||
"/cloudapi/lb/backendServerAdd": lb.BackendServerAddRequest{},
|
||||
"/cloudapi/lb/backendServerDelete": lb.BackendServerDeleteRequest{},
|
||||
"/cloudapi/lb/backendServerUpdate": lb.BackendServerUpdateRequest{},
|
||||
"/cloudapi/lb/backendUpdate": lb.BackendUpdateRequest{},
|
||||
"/cloudapi/lb/configReset": lb.ConfigResetRequest{},
|
||||
"/cloudapi/lb/create": lb.CreateRequest{},
|
||||
"/cloudapi/lb/delete": lb.DeleteRequest{},
|
||||
"/cloudapi/lb/disable": lb.DisableEnableRequest{},
|
||||
"/cloudapi/lb/enable": lb.DisableEnableRequest{},
|
||||
"/cloudapi/lb/frontendBind": lb.FrontendBindRequest{},
|
||||
"/cloudapi/lb/frontendBindDelete": lb.FrontendBindDeleteRequest{},
|
||||
"/cloudapi/lb/frontendBindingUpdate": lb.FrontendBindUpdateRequest{},
|
||||
"/cloudapi/lb/frontendCreate": lb.FrontendCreateRequest{},
|
||||
"/cloudapi/lb/frontendDelete": lb.FrontendDeleteRequest{},
|
||||
"/cloudapi/lb/get": lb.GetRequest{},
|
||||
"/cloudapi/lb/makeHighlyAvailable": lb.HighlyAvailableRequest{},
|
||||
"/cloudapi/lb/list": lb.ListRequest{},
|
||||
"/cloudapi/lb/listDeleted": lb.ListDeletedRequest{},
|
||||
"/cloudapi/lb/restart": lb.RestartRequest{},
|
||||
"/cloudapi/lb/restore": lb.RestoreRequest{},
|
||||
"/cloudapi/lb/start": lb.StartRequest{},
|
||||
"/cloudapi/lb/stop": lb.StopRequest{},
|
||||
"/cloudapi/lb/update": lb.UpdateRequest{},
|
||||
"/cloudapi/lb/updateSysctlParams": lb.UpdateSysctParamsRequest{},
|
||||
|
||||
// locations
|
||||
"/cloudapi/locations/getUrl": EmptyStruct{},
|
||||
"/cloudapi/locations/list": locations.ListRequest{},
|
||||
|
||||
// pcidevice
|
||||
"/cloudapi/pcidevice/list": pcidevice.ListRequest{},
|
||||
|
||||
// rg
|
||||
"/cloudapi/rg/accessGrant": rg.AccessGrantRequest{},
|
||||
"/cloudapi/rg/accessRevoke": rg.AccessRevokeRequest{},
|
||||
"/cloudapi/rg/affinityGroupComputes": rg.AffinityGroupComputesRequest{},
|
||||
"/cloudapi/rg/affinityGroupsGet": rg.AffinityGroupsGetRequest{},
|
||||
"/cloudapi/rg/affinityGroupsList": rg.AffinityGroupsListRequest{},
|
||||
"/cloudapi/rg/audits": rg.AuditsRequest{},
|
||||
"/cloudapi/rg/create": rg.CreateRequest{},
|
||||
"/cloudapi/rg/delete": rg.DeleteRequest{},
|
||||
"/cloudapi/rg/disable": rg.DisableRequest{},
|
||||
"/cloudapi/rg/enable": rg.EnableRequest{},
|
||||
"/cloudapi/rg/get": rg.GetRequest{},
|
||||
"/cloudapi/rg/getResourceConsumption": rg.GetResourceConsumptionRequest{},
|
||||
"/cloudapi/rg/list": rg.ListRequest{},
|
||||
"/cloudapi/rg/listComputes": rg.ListComputesRequest{},
|
||||
"/cloudapi/rg/listDeleted": rg.ListDeletedRequest{},
|
||||
"/cloudapi/rg/listLb": rg.ListLBRequest{},
|
||||
"/cloudapi/rg/listPFW": rg.ListPFWRequest{},
|
||||
"/cloudapi/rg/listResourceConsumption": EmptyStruct{},
|
||||
"/cloudapi/rg/listVins": rg.ListVINSRequest{},
|
||||
"/cloudapi/rg/restore": rg.RestoreRequest{},
|
||||
"/cloudapi/rg/setDefNet": rg.SetDefNetRequest{},
|
||||
"/cloudapi/rg/update": rg.UpdateRequest{},
|
||||
"/cloudapi/rg/usage": rg.UsageRequest{},
|
||||
|
||||
// stack, tasks, sizes
|
||||
"/cloudapi/sizes/list": sizes.ListRequest{},
|
||||
"/cloudapi/stack/get": stack.GetRequest{},
|
||||
"/cloudapi/stack/list": stack.ListRequest{},
|
||||
"/cloudapi/tasks/get": tasks.GetRequest{},
|
||||
"/cloudapi/tasks/list": tasks.ListRequest{},
|
||||
|
||||
// user
|
||||
"/cloudapi/user/apiList": user.APIListRequest{},
|
||||
"/cloudapi/user/authenticate": user.AuthenticateRequest{},
|
||||
"/cloudapi/user/brief": EmptyStruct{},
|
||||
"/cloudapi/user/get": user.GetRequest{},
|
||||
"/cloudapi/user/getAudit": user.GetAuditRequest{},
|
||||
"/cloudapi/user/getResourceConsumption": EmptyStruct{},
|
||||
"/cloudapi/user/isValidInviteUserToken": user.IsValidInviteUserTokenRequest{},
|
||||
"/cloudapi/user/search": user.SearchRequest{},
|
||||
"/cloudapi/user/setData": user.SetDataRequest{},
|
||||
|
||||
// vfpool
|
||||
"/cloudapi/vfpool/get": vfpool.GetRequest{},
|
||||
"/cloudapi/vfpool/list": vfpool.ListRequest{},
|
||||
|
||||
// vins
|
||||
"/cloudapi/vins/audits": vins.AuditsRequest{},
|
||||
"/cloudapi/vins/createInAccount": vins.CreateInAccountRequest{},
|
||||
"/cloudapi/vins/createInRG": vins.CreateInRGRequest{},
|
||||
"/cloudapi/vins/delete": vins.DeleteRequest{},
|
||||
"/cloudapi/vins/disable": vins.DisableEnableRequest{},
|
||||
"/cloudapi/vins/dnsApply": vins.DNSApplyRequest{},
|
||||
"/cloudapi/vins/enable": vins.DisableEnableRequest{},
|
||||
"/cloudapi/vins/extNetConnect": vins.ExtNetConnectRequest{},
|
||||
"/cloudapi/vins/extNetDisconnect": vins.ExtNetDisconnectRequest{},
|
||||
"/cloudapi/vins/extNetList": vins.ExtNetListRequest{},
|
||||
"/cloudapi/vins/get": vins.GetRequest{},
|
||||
"/cloudapi/vins/ipList": vins.IPListRequest{},
|
||||
"/cloudapi/vins/ipRelease": vins.IPReleaseRequest{},
|
||||
"/cloudapi/vins/ipReserve": vins.IPReserveRequest{},
|
||||
"/cloudapi/vins/list": vins.ListRequest{},
|
||||
"/cloudapi/vins/listDeleted": vins.ListDeletedRequest{},
|
||||
"/cloudapi/vins/natRuleAdd": vins.NATRuleAddRequest{},
|
||||
"/cloudapi/vins/natRuleDel": vins.NATRuleDelRequest{},
|
||||
"/cloudapi/vins/natRuleList": vins.NATRuleListRequest{},
|
||||
"/cloudapi/vins/restore": vins.RestoreRequest{},
|
||||
"/cloudapi/vins/search": vins.SearchRequest{},
|
||||
"/cloudapi/vins/staticRouteAccessGrant": vins.StaticRouteAccessGrantRequest{},
|
||||
"/cloudapi/vins/staticRouteAccessRevoke": vins.StaticRouteAccessRevokeRequest{},
|
||||
"/cloudapi/vins/staticRouteAdd": vins.StaticRouteAddRequest{},
|
||||
"/cloudapi/vins/staticRouteDel": vins.StaticRouteDelRequest{},
|
||||
"/cloudapi/vins/staticRouteList": vins.StaticRouteListRequest{},
|
||||
"/cloudapi/vins/vnfdevRedeploy": vins.VNFDevRedeployRequest{},
|
||||
"/cloudapi/vins/vnfdevRestart": vins.VNFDevRestartRequest{},
|
||||
}
|
||||
}
|
||||
|
||||
// getRequestsMapCloudbroker maps request path with request golang sdk structures for cloudbroker most used requests
|
||||
func getRequestsMapCloudbroker() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
// account_cb
|
||||
"/cloudbroker/account/addUser": account_cb.AddUserRequest{},
|
||||
"/cloudbroker/account/audits": account_cb.AuditsRequest{},
|
||||
"/cloudbroker/account/create": account_cb.CreateRequest{},
|
||||
"/cloudbroker/account/delete": account_cb.DeleteRequest{},
|
||||
"/cloudbroker/account/deleteAccounts": account_cb.DeleteAccountsRequest{},
|
||||
"/cloudbroker/account/deleteUser": account_cb.DeleteUserRequest{},
|
||||
"/cloudbroker/account/disable": account_cb.DisableRequest{},
|
||||
"/cloudbroker/account/disableAccounts": account_cb.DisableAccountsRequest{},
|
||||
"/cloudbroker/account/enable": account_cb.EnableRequest{},
|
||||
"/cloudbroker/account/enableAccounts": account_cb.EnableAccountsRequest{},
|
||||
"/cloudbroker/account/get": account_cb.GetRequest{},
|
||||
"/cloudbroker/account/getResourceConsumption": account_cb.GetResourceConsumptionRequest{},
|
||||
"/cloudbroker/account/grantAccessTemplates": account_cb.GrantAccessTemplatesRequest{},
|
||||
"/cloudbroker/account/list": account_cb.ListRequest{},
|
||||
"/cloudbroker/account/listAvailableTemplates": account_cb.ListAvailableTemplatesRequest{},
|
||||
"/cloudbroker/account/listComputes": account_cb.ListComputesRequest{},
|
||||
"/cloudbroker/account/listDeleted": account_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/account/listDisks": account_cb.ListDisksRequest{},
|
||||
"/cloudbroker/account/listFlipGroups": account_cb.ListFLIPGroupsRequest{},
|
||||
"/cloudbroker/account/listRG": account_cb.ListRGRequest{},
|
||||
"/cloudbroker/account/listResourceConsumption": EmptyStruct{},
|
||||
"/cloudbroker/account/listVins": account_cb.ListVINSRequest{},
|
||||
"/cloudbroker/account/restore": account_cb.RestoreRequest{},
|
||||
"/cloudbroker/account/revokeAccessTemplates": account_cb.RevokeAccessTemplatesRequest{},
|
||||
"/cloudbroker/account/setCpuAllocationParameter": account_cb.SetCPUAllocationParameterRequest{},
|
||||
"/cloudbroker/account/setCpuAllocationRatio": account_cb.SetCPUAllocationRatioRequest{},
|
||||
"/cloudbroker/account/update": account_cb.UpdateRequest{},
|
||||
"/cloudbroker/account/updateComputeFeatures": account_cb.UpdateComputeFeaturesRequest{},
|
||||
"/cloudbroker/account/updateResourceTypes": account_cb.UpdateResourceTypesRequest{},
|
||||
"/cloudbroker/account/updateUser": account_cb.UpdateUserRequest{},
|
||||
|
||||
// apiaccess_cb
|
||||
"/cloudbroker/apiaccess/apisExclude": apiaccess_cb.APIsExcludeRequest{},
|
||||
"/cloudbroker/apiaccess/apiFind": apiaccess_cb.APIFindRequest{},
|
||||
"/cloudbroker/apiaccess/apisInclude": apiaccess_cb.APIsIncludeRequest{},
|
||||
"/cloudbroker/apiaccess/copy": apiaccess_cb.CopyRequest{},
|
||||
"/cloudbroker/apiaccess/create": apiaccess_cb.CreateRequest{},
|
||||
"/cloudbroker/apiaccess/delete": apiaccess_cb.DeleteRequest{},
|
||||
"/cloudbroker/apiaccess/descUpdate": apiaccess_cb.DescUpdateRequest{},
|
||||
"/cloudbroker/apiaccess/get": apiaccess_cb.GetRequest{},
|
||||
"/cloudbroker/apiaccess/getFull": EmptyStruct{},
|
||||
"/cloudbroker/apiaccess/getPreGroups": EmptyStruct{},
|
||||
"/cloudbroker/apiaccess/list": apiaccess_cb.ListRequest{},
|
||||
"/cloudbroker/apiaccess/listDeleted": apiaccess_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/apiaccess/setDefault": apiaccess_cb.SetDefaultRequest{},
|
||||
"/cloudbroker/apiaccess/subtract": apiaccess_cb.SubtractRequest{},
|
||||
"/cloudbroker/apiaccess/union": apiaccess_cb.UnionRequest{},
|
||||
"/cloudbroker/apiaccess/update": apiaccess_cb.UpdateRequest{},
|
||||
"/cloudbroker/apiaccess/userList": apiaccess_cb.UserListRequest{},
|
||||
|
||||
// audit_cb
|
||||
"/cloudbroker/audit/get": audit_cb.GetRequest{},
|
||||
"/cloudbroker/audit/linkedJobs": audit_cb.LinkedJobsRequest{},
|
||||
"/cloudbroker/audit/list": audit_cb.ListRequest{},
|
||||
|
||||
// backup_cb
|
||||
"/cloudbroker/backup/createDiskBackup": backup_cb.CreateDiskBackupRequest{},
|
||||
"/cloudbroker/backup/createDisksBackup": backup_cb.CreateDisksBackupRequest{},
|
||||
"/cloudbroker/backup/deleteDiskBackup": backup_cb.DeleteDiskBackupRequest{},
|
||||
"/cloudbroker/backup/listBackupPaths": backup_cb.ListBackupPathsRequest{},
|
||||
"/cloudbroker/backup/restoreDiskFromBackup": backup_cb.RestoreDiskFromBackupRequest{},
|
||||
"/cloudbroker/backup/restoreDisksFromBackup": backup_cb.RestoreDisksFromBackupRequest{},
|
||||
|
||||
// compute_cb
|
||||
"/cloudbroker/compute/affinityGroupCheckStart": compute_cb.AffinityGroupCheckStartRequest{},
|
||||
"/cloudbroker/compute/affinityLabelRemove": compute_cb.AffinityLabelRemoveRequest{},
|
||||
"/cloudbroker/compute/affinityLabelSet": compute_cb.AffinityLabelSetRequest{},
|
||||
"/cloudbroker/compute/affinityRelations": compute_cb.AffinityRelationsRequest{},
|
||||
"/cloudbroker/compute/affinityRuleAdd": compute_cb.AffinityRuleAddRequest{},
|
||||
"/cloudbroker/compute/affinityRuleRemove": compute_cb.AffinityRuleRemoveRequest{},
|
||||
"/cloudbroker/compute/affinityRulesClear": compute_cb.AffinityRulesClearRequest{},
|
||||
"/cloudbroker/compute/antiAffinityRuleAdd": compute_cb.AntiAffinityRuleAddRequest{},
|
||||
"/cloudbroker/compute/antiAffinityRuleRemove": compute_cb.AntiAffinityRuleRemoveRequest{},
|
||||
"/cloudbroker/compute/antiAffinityRulesClear": compute_cb.AffinityRulesClearRequest{},
|
||||
"/cloudbroker/compute/attachGpu": compute_cb.AttachGPURequest{},
|
||||
"/cloudbroker/compute/attachPciDevice": compute_cb.AttachPCIDeviceRequest{},
|
||||
"/cloudbroker/compute/audits": compute_cb.AuditsRequest{},
|
||||
"/cloudbroker/compute/bootDiskSet": compute_cb.BootDiskSetRequest{},
|
||||
"/cloudbroker/compute/bootOrderGet": compute_cb.BootOrderGetRequest{},
|
||||
"/cloudbroker/compute/bootOrderSet": compute_cb.BootOrderSetRequest{},
|
||||
"/cloudbroker/compute/cdEject": compute_cb.CDEjectRequest{},
|
||||
"/cloudbroker/compute/cdInsert": compute_cb.CDInsertRequest{},
|
||||
"/cloudbroker/compute/changeLinkState": compute_cb.ChangeLinkStateRequest{},
|
||||
"/cloudbroker/compute/clone": compute_cb.CloneRequest{},
|
||||
"/cloudbroker/compute/computeciSet": compute_cb.ComputeCISetRequest{},
|
||||
"/cloudbroker/compute/computeciUnset": compute_cb.ComputeCIUnsetRequest{},
|
||||
"/cloudbroker/compute/createTemplate": compute_cb.CreateTemplateRequest{},
|
||||
"/cloudbroker/compute/createTemplateFromBlank": compute_cb.CreateTemplateFromBlankRequest{},
|
||||
"/cloudbroker/compute/delete": compute_cb.DeleteRequest{},
|
||||
"/cloudbroker/compute/deleteCustomFields": compute_cb.DeleteCustomFieldsRequest{},
|
||||
"/cloudbroker/compute/detachGpu": compute_cb.DetachGPURequest{},
|
||||
"/cloudbroker/compute/detachPciDevice": compute_cb.DetachPCIDeviceRequest{},
|
||||
"/cloudbroker/compute/disable": compute_cb.DisableRequest{},
|
||||
"/cloudbroker/compute/diskAdd": compute_cb.DiskAddRequest{},
|
||||
"/cloudbroker/compute/diskAttach": compute_cb.DiskAttachRequest{},
|
||||
"/cloudbroker/compute/diskDel": compute_cb.DiskDelRequest{},
|
||||
"/cloudbroker/compute/diskDetach": compute_cb.DiskDetachRequest{},
|
||||
"/cloudbroker/compute/diskMigrate": compute_cb.DiskMigrateRequest{},
|
||||
"/cloudbroker/compute/diskResize": compute_cb.DiskResizeRequest{},
|
||||
"/cloudbroker/compute/diskSwitchToReplication": compute_cb.DiskSwitchToReplicationRequest{},
|
||||
"/cloudbroker/compute/diskQos": compute_cb.DiskQOSRequest{},
|
||||
"/cloudbroker/compute/enable": compute_cb.EnableRequest{},
|
||||
"/cloudbroker/compute/get": compute_cb.GetRequest{},
|
||||
"/cloudbroker/compute/getAudits": compute_cb.GetAuditsRequest{},
|
||||
"/cloudbroker/compute/getConsoleUrl": compute_cb.GetConsoleURLRequest{},
|
||||
"/cloudbroker/compute/getCustomFields": compute_cb.GetCustomFieldsRequest{},
|
||||
"/cloudbroker/compute/getLog": compute_cb.GetLogRequest{},
|
||||
"/cloudbroker/compute/list": compute_cb.ListRequest{},
|
||||
"/cloudbroker/compute/listDeleted": compute_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/compute/listPciDevice": compute_cb.ListPCIDeviceRequest{},
|
||||
"/cloudbroker/compute/listVGpu": compute_cb.ListVGPURequest{},
|
||||
"/cloudbroker/compute/massDelete": compute_cb.MassDeleteRequest{},
|
||||
"/cloudbroker/compute/massStart": compute_cb.MassStartRequest{},
|
||||
"/cloudbroker/compute/massStop": compute_cb.MassStopRequest{},
|
||||
"/cloudbroker/compute/massReboot": compute_cb.MassRebootRequest{},
|
||||
"/cloudbroker/compute/massRepairBootFs": compute_cb.MassRepairBootFSRequest{},
|
||||
"/cloudbroker/compute/migrate": compute_cb.MigrateRequest{},
|
||||
"/cloudbroker/compute/migrateStorage": compute_cb.MigrateStorageRequest{},
|
||||
"/cloudbroker/compute/migrateStorageAbort": compute_cb.MigrateStorageAbortRequest{},
|
||||
"/cloudbroker/compute/migrateStorageCleanup": compute_cb.MigrateStorageCleanUpRequest{},
|
||||
"/cloudbroker/compute/migrateStorageInfo": compute_cb.MigrateStorageInfoRequest{},
|
||||
"/cloudbroker/compute/moveToRg": compute_cb.MoveToRGRequest{},
|
||||
"/cloudbroker/compute/netAttach": compute_cb.NetAttachRequest{},
|
||||
"/cloudbroker/compute/netDetach": compute_cb.NetDetachRequest{},
|
||||
"/cloudbroker/compute/netQos": compute_cb.NetQOSRequest{},
|
||||
"/cloudbroker/compute/pfwAdd": compute_cb.PFWAddRequest{},
|
||||
"/cloudbroker/compute/pfwDel": compute_cb.PFWDelRequest{},
|
||||
"/cloudbroker/compute/pfwList": compute_cb.PFWListRequest{},
|
||||
"/cloudbroker/compute/pause": compute_cb.PauseRequest{},
|
||||
"/cloudbroker/compute/pinToStack": compute_cb.PinToStackRequest{},
|
||||
"/cloudbroker/compute/powerCycle": compute_cb.PowerCycleRequest{},
|
||||
"/cloudbroker/compute/raiseDown": EmptyStruct{},
|
||||
"/cloudbroker/compute/reboot": compute_cb.RebootRequest{},
|
||||
"/cloudbroker/compute/redeploy": compute_cb.RedeployRequest{},
|
||||
"/cloudbroker/compute/registration": compute_cb.RegistrationRequest{},
|
||||
"/cloudbroker/compute/repairBootFs": compute_cb.RepairBootFSRequest{},
|
||||
"/cloudbroker/compute/reset": compute_cb.ResetRequest{},
|
||||
"/cloudbroker/compute/resize": compute_cb.ResizeRequest{},
|
||||
"/cloudbroker/compute/restore": compute_cb.RestoreRequest{},
|
||||
"/cloudbroker/compute/resume": compute_cb.ResumeRequest{},
|
||||
"/cloudbroker/compute/setCustomFields": compute_cb.SetCustomFieldsRequest{},
|
||||
"/cloudbroker/compute/snapshotCreate": compute_cb.SnapshotCreateRequest{},
|
||||
"/cloudbroker/compute/snapshotDelete": compute_cb.SnapshotDeleteRequest{},
|
||||
"/cloudbroker/compute/snapshotEvictDisk": compute_cb.SnapshotEvictDiskRequest{},
|
||||
"/cloudbroker/compute/snapshotList": compute_cb.SnapshotListRequest{},
|
||||
"/cloudbroker/compute/snapshotRollback": compute_cb.SnapshotRollbackRequest{},
|
||||
"/cloudbroker/compute/snapshotUsage": compute_cb.SnapshotUsageRequest{},
|
||||
"/cloudbroker/compute/start": compute_cb.StartRequest{},
|
||||
"/cloudbroker/compute/stop": compute_cb.StopRequest{},
|
||||
"/cloudbroker/compute/tagAdd": compute_cb.TagAddRequest{},
|
||||
"/cloudbroker/compute/tagRemove": compute_cb.TagRemoveRequest{},
|
||||
"/cloudbroker/compute/unpinFromStack": compute_cb.UnpinFromStackRequest{},
|
||||
"/cloudbroker/compute/update": compute_cb.UpdateRequest{},
|
||||
"/cloudbroker/compute/userGrant": compute_cb.UserGrantRequest{},
|
||||
"/cloudbroker/compute/userList": compute_cb.UserListRequest{},
|
||||
"/cloudbroker/compute/userRevoke": compute_cb.UserRevokeRequest{},
|
||||
"/cloudbroker/compute/userUpdate": compute_cb.UserUpdateRequest{},
|
||||
|
||||
// disks
|
||||
"/cloudbroker/disks/create": disks_cb.CreateRequest{},
|
||||
"/cloudbroker/disks/delete": disks_cb.DeleteRequest{},
|
||||
"/cloudbroker/disks/deleteDisks": disks_cb.DeleteDisksRequest{},
|
||||
"/cloudbroker/disks/fromPlatformDisk": disks_cb.FromPlatformDiskRequest{},
|
||||
"/cloudbroker/disks/get": disks_cb.GetRequest{},
|
||||
"/cloudbroker/disks/limitIO": disks_cb.LimitIORequest{},
|
||||
"/cloudbroker/disks/list": disks_cb.ListRequest{},
|
||||
"/cloudbroker/disks/listDeleted": disks_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/disks/listTypes": disks_cb.ListTypesRequest{},
|
||||
"/cloudbroker/disks/listUnattached": disks_cb.ListUnattachedRequest{},
|
||||
"/cloudbroker/disks/rename": disks_cb.RenameRequest{},
|
||||
"/cloudbroker/disks/replicate": disks_cb.ReplicateRequest{},
|
||||
"/cloudbroker/disks/replicationResume": disks_cb.ReplicationResumeRequest{},
|
||||
"/cloudbroker/disks/replicationReverse": disks_cb.ReplicationReverseRequest{},
|
||||
"/cloudbroker/disks/replicationStart": disks_cb.ReplicationStartRequest{},
|
||||
"/cloudbroker/disks/replicationStatus": disks_cb.ReplicationStatusRequest{},
|
||||
"/cloudbroker/disks/replicationStop": disks_cb.ReplicationStopRequest{},
|
||||
"/cloudbroker/disks/replicationSuspend": disks_cb.ReplicationSuspendRequest{},
|
||||
"/cloudbroker/disks/resize": disks_cb.ResizeRequest{},
|
||||
"/cloudbroker/disks/resize2": disks_cb.ResizeRequest{},
|
||||
"/cloudbroker/disks/restore": disks_cb.RestoreRequest{},
|
||||
"/cloudbroker/disks/search": disks_cb.SearchRequest{},
|
||||
"/cloudbroker/disks/share": disks_cb.ShareRequest{},
|
||||
"/cloudbroker/disks/snapshotDelete": disks_cb.SnapshotDeleteRequest{},
|
||||
"/cloudbroker/disks/snapshotRollback": disks_cb.SnapshotRollbackRequest{},
|
||||
"/cloudbroker/disks/unshare": disks_cb.UnshareRequest{},
|
||||
|
||||
// extnet
|
||||
"/cloudbroker/extnet/accessAdd": extnet_cb.AccessAddRequest{},
|
||||
"/cloudbroker/extnet/accessRemove": extnet_cb.AccessRemoveRequest{},
|
||||
"/cloudbroker/extnet/create": extnet_cb.CreateRequest{},
|
||||
"/cloudbroker/extnet/dnsApply": extnet_cb.DNSApplyRequest{},
|
||||
"/cloudbroker/extnet/defaultQosUpdate": extnet_cb.DefaultQOSUpdateRequest{},
|
||||
"/cloudbroker/extnet/destroy": extnet_cb.DestroyRequest{},
|
||||
"/cloudbroker/extnet/deviceDeploy": extnet_cb.DeviceDeployRequest{},
|
||||
"/cloudbroker/extnet/deviceMigrate": extnet_cb.DeviceMigrateRequest{},
|
||||
"/cloudbroker/extnet/deviceRemove": extnet_cb.DeviceRemoveRequest{},
|
||||
"/cloudbroker/extnet/deviceRestart": extnet_cb.DeviceRestartRequest{},
|
||||
"/cloudbroker/extnet/disable": extnet_cb.DisableRequest{},
|
||||
"/cloudbroker/extnet/enable": extnet_cb.EnableRequest{},
|
||||
"/cloudbroker/extnet/get": extnet_cb.GetRequest{},
|
||||
"/cloudbroker/extnet/getDefault": EmptyStruct{},
|
||||
"/cloudbroker/extnet/ipsExclude": extnet_cb.IPsExcludeRequest{},
|
||||
"/cloudbroker/extnet/ipsExcludeRange": extnet_cb.IPsExcludeRangeRequest{},
|
||||
"/cloudbroker/extnet/ipsInclude": extnet_cb.IPsExcludeRequest{},
|
||||
"/cloudbroker/extnet/ipsIncludeRange": extnet_cb.IPsExcludeRangeRequest{},
|
||||
"/cloudbroker/extnet/list": extnet_cb.ListRequest{},
|
||||
"/cloudbroker/extnet/ntpApply": extnet_cb.NTPApplyRequest{},
|
||||
"/cloudbroker/extnet/raiseDown": EmptyStruct{},
|
||||
"/cloudbroker/extnet/setDefault": extnet_cb.SetDefaultRequest{},
|
||||
"/cloudbroker/extnet/staticRouteAccessGrant": extnet_cb.StaticRouteAccessGrantRequest{},
|
||||
"/cloudbroker/extnet/staticRouteAccessRevoke": extnet_cb.StaticRouteAccessRevokeRequest{},
|
||||
"/cloudbroker/extnet/staticRouteAdd": extnet_cb.StaticRouteAddRequest{},
|
||||
"/cloudbroker/extnet/staticRouteDel": extnet_cb.StaticRouteDelRequest{},
|
||||
"/cloudbroker/extnet/staticRouteList": extnet_cb.StaticRouteListRequest{},
|
||||
"/cloudbroker/extnet/update": extnet_cb.UpdateRequest{},
|
||||
|
||||
// flipgroup
|
||||
"/cloudbroker/flipgroup/computeAdd": flipgroup_cb.ComputeAddRequest{},
|
||||
"/cloudbroker/flipgroup/computeRemove": flipgroup_cb.ComputeRemoveRequest{},
|
||||
"/cloudbroker/flipgroup/create": flipgroup_cb.CreateRequest{},
|
||||
"/cloudbroker/flipgroup/delete": flipgroup_cb.DeleteRequest{},
|
||||
"/cloudbroker/flipgroup/edit": flipgroup_cb.EditRequest{},
|
||||
"/cloudbroker/flipgroup/get": flipgroup_cb.GetRequest{},
|
||||
"/cloudbroker/flipgroup/list": flipgroup_cb.ListRequest{},
|
||||
|
||||
// grid
|
||||
"/cloudbroker/grid/add": grid_cb.AddRequest{},
|
||||
"/cloudbroker/grid/addCustomBackupPath": grid_cb.AddCustomBackupPathRequest{},
|
||||
"/cloudbroker/grid/changeSettings": grid_cb.ChangeSettingsRequest{},
|
||||
"/cloudbroker/grid/checkVMs": grid_cb.CheckVMsRequest{},
|
||||
"/cloudbroker/grid/createSystemSpace": grid_cb.CreateSystemSpaceRequest{},
|
||||
"/cloudbroker/grid/executeMaintenanceScript": grid_cb.ExecuteMaintenanceScriptRequest{},
|
||||
"/cloudbroker/grid/get": grid_cb.GetRequest{},
|
||||
"/cloudbroker/grid/getBackup": grid_cb.GetBackupRequest{},
|
||||
"/cloudbroker/grid/getDiagnosis": grid_cb.GetDiagnosisRequest{},
|
||||
"/cloudbroker/grid/getResourceConsumption": grid_cb.GetResourceConsumptionRequest{},
|
||||
"/cloudbroker/grid/list": grid_cb.ListRequest{},
|
||||
"/cloudbroker/grid/listEmails": grid_cb.ListEmailsRequest{},
|
||||
"/cloudbroker/grid/listResourceConsumption": EmptyStruct{},
|
||||
"/cloudbroker/grid/purgeLogs": grid_cb.PurgeLogsRequest{},
|
||||
"/cloudbroker/grid/removeCustomBackupPath": grid_cb.RemoveCustomBackupPathRequest{},
|
||||
"/cloudbroker/grid/rename": grid_cb.RenameRequest{},
|
||||
"/cloudbroker/grid/servicesRestart": grid_cb.ServicesRestartRequest{},
|
||||
"/cloudbroker/grid/setCpuAllocationParameter": grid_cb.SetCPUAllocationParameterRequest{},
|
||||
"/cloudbroker/grid/setCpuAllocationRatio": grid_cb.SetCPUAllocationRatioRequest{},
|
||||
"/cloudbroker/grid/setCpuAllocationRatioForVM": grid_cb.SetCPUAllocationRatioForVMRequest{},
|
||||
"/cloudbroker/grid/setMemAllocationRatio": grid_cb.SetMemAllocationRatioRequest{},
|
||||
"/cloudbroker/grid/setPasswordPolicy": grid_cb.SetPasswordPolicyRequest{},
|
||||
"/cloudbroker/grid/status": EmptyStruct{},
|
||||
|
||||
// group
|
||||
"/cloudbroker/group/get": group_cb.GetRequest{},
|
||||
"/cloudbroker/group/list": group_cb.ListRequest{},
|
||||
|
||||
// image
|
||||
"/cloudbroker/image/computeciSet": image_cb.ComputeCISetRequest{},
|
||||
"/cloudbroker/image/computeciUnset": image_cb.ComputeCIUnsetRequest{},
|
||||
"/cloudbroker/image/createCDROMImage": image_cb.CreateCDROMImageRequest{},
|
||||
"/cloudbroker/image/createImage": image_cb.CreateRequest{},
|
||||
"/cloudbroker/image/createVirtual": image_cb.CreateVirtualRequest{},
|
||||
"/cloudbroker/image/delete": image_cb.DeleteRequest{},
|
||||
"/cloudbroker/image/deleteCDROMImage": image_cb.DeleteCDROMImageRequest{},
|
||||
"/cloudbroker/image/deleteImages": image_cb.DeleteImagesRequest{},
|
||||
"/cloudbroker/image/disable": image_cb.DisableRequest{},
|
||||
"/cloudbroker/image/edit": image_cb.EditRequest{},
|
||||
"/cloudbroker/image/enable": image_cb.EnableRequest{},
|
||||
"/cloudbroker/image/get": image_cb.GetRequest{},
|
||||
"/cloudbroker/image/grantAccess": image_cb.GrantAccessRequest{},
|
||||
"/cloudbroker/image/link": image_cb.LinkRequest{},
|
||||
"/cloudbroker/image/list": image_cb.ListRequest{},
|
||||
"/cloudbroker/image/listStacks": image_cb.ListStacksRequest{},
|
||||
"/cloudbroker/image/rename": image_cb.RenameRequest{},
|
||||
"/cloudbroker/image/revokeAccess": image_cb.RevokeAccessRequest{},
|
||||
"/cloudbroker/image/share": image_cb.ShareRequest{},
|
||||
"/cloudbroker/image/syncCreateImage": image_cb.SyncCreateRequest{},
|
||||
"/cloudbroker/image/updateNodes": image_cb.UpdateNodesRequest{},
|
||||
|
||||
// k8ci
|
||||
"/cloudbroker/k8ci/accessAdd": k8ci_cb.AccessAddRequest{},
|
||||
"/cloudbroker/k8ci/accessRemove": k8ci_cb.AccessRemoveRequest{},
|
||||
"/cloudbroker/k8ci/create": k8ci_cb.CreateRequest{},
|
||||
"/cloudbroker/k8ci/delete": k8ci_cb.DeleteRequest{},
|
||||
"/cloudbroker/k8ci/disable": k8ci_cb.DisableRequest{},
|
||||
"/cloudbroker/k8ci/enable": k8ci_cb.EnableRequest{},
|
||||
"/cloudbroker/k8ci/get": k8ci_cb.GetRequest{},
|
||||
"/cloudbroker/k8ci/list": k8ci_cb.ListRequest{},
|
||||
"/cloudbroker/k8ci/listDeleted": k8ci_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/k8ci/restore": k8ci_cb.RestoreRequest{},
|
||||
|
||||
// k8s
|
||||
"/cloudbroker/k8s/create": k8s_cb.CreateRequest{},
|
||||
"/cloudbroker/k8s/delete": k8s_cb.DeleteRequest{},
|
||||
"/cloudbroker/k8s/deleteMasterFromGroup": k8s_cb.DeleteMasterFromGroupRequest{},
|
||||
"/cloudbroker/k8s/deleteWorkerFromGroup": k8s_cb.DeleteWorkerFromGroupRequest{},
|
||||
"/cloudbroker/k8s/disable": k8s_cb.DisableRequest{},
|
||||
"/cloudbroker/k8s/enable": k8s_cb.EnableRequest{},
|
||||
"/cloudbroker/k8s/findGroupByLabel": k8s_cb.FindGroupByLabelRequest{},
|
||||
"/cloudbroker/k8s/get": k8s_cb.GetRequest{},
|
||||
"/cloudbroker/k8s/getConfig": k8s_cb.GetConfigRequest{},
|
||||
"/cloudbroker/k8s/getNodeAnnotations": k8s_cb.GetNodeAnnotationsRequest{},
|
||||
"/cloudbroker/k8s/getNodeLabels": k8s_cb.GetNodeLabelsRequest{},
|
||||
"/cloudbroker/k8s/getNodeTaints": k8s_cb.GetNodeTaintsRequest{},
|
||||
"/cloudbroker/k8s/getWorkerNodesMetaData": k8s_cb.GetWorkerNodesMetaDataRequest{},
|
||||
"/cloudbroker/k8s/list": k8s_cb.ListRequest{},
|
||||
"/cloudbroker/k8s/listDeleted": k8s_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/k8s/restore": k8s_cb.RestoreRequest{},
|
||||
"/cloudbroker/k8s/start": k8s_cb.StartRequest{},
|
||||
"/cloudbroker/k8s/stop": k8s_cb.StopRequest{},
|
||||
"/cloudbroker/k8s/update": k8s_cb.UpdateRequest{},
|
||||
"/cloudbroker/k8s/updateWorkerNodesMetaData": k8s_cb.UpdateWorkerNodesMetaDataRequest{},
|
||||
"/cloudbroker/k8s/workerAdd": k8s_cb.WorkerAddRequest{},
|
||||
"/cloudbroker/k8s/workersGroupAdd": k8s_cb.WorkersGroupAddRequest{},
|
||||
"/cloudbroker/k8s/workersGroupDelete": k8s_cb.WorkersGroupDeleteRequest{},
|
||||
"/cloudbroker/k8s/workersGroupGetByName": k8s_cb.WorkersGroupGetByNameRequest{},
|
||||
"/cloudbroker/k8s/workerReset": k8s_cb.WorkerResetRequest{},
|
||||
"/cloudbroker/k8s/workerRestart": k8s_cb.WorkerRestartRequest{},
|
||||
|
||||
// kvmppc, kvmx86
|
||||
"/cloudbroker/kvmppc/create": kvmppc_cb.CreateRequest{},
|
||||
"/cloudbroker/kvmppc/createBlank": kvmppc_cb.CreateBlankRequest{},
|
||||
"/cloudbroker/kvmppc/massCreate": kvmppc_cb.MassCreateRequest{},
|
||||
"/cloudbroker/kvmx86/create": kvmx86_cb.CreateRequest{},
|
||||
"/cloudbroker/kvmx86/createBlank": kvmx86_cb.CreateBlankRequest{},
|
||||
"/cloudbroker/kvmx86/massCreate": kvmx86_cb.MassCreateRequest{},
|
||||
|
||||
// lb
|
||||
"/cloudbroker/lb/backendCreate": lb_cb.BackendCreateRequest{},
|
||||
"/cloudbroker/lb/backendDelete": lb_cb.BackendDeleteRequest{},
|
||||
"/cloudbroker/lb/backendServerAdd": lb_cb.BackendServerAddRequest{},
|
||||
"/cloudbroker/lb/backendServerDelete": lb_cb.BackendServerDeleteRequest{},
|
||||
"/cloudbroker/lb/backendServerUpdate": lb_cb.BackendServerUpdateRequest{},
|
||||
"/cloudbroker/lb/backendUpdate": lb_cb.BackendUpdateRequest{},
|
||||
"/cloudbroker/lb/configReset": lb_cb.ConfigResetRequest{},
|
||||
"/cloudbroker/lb/create": lb_cb.CreateRequest{},
|
||||
"/cloudbroker/lb/delete": lb_cb.DeleteRequest{},
|
||||
"/cloudbroker/lb/disable": lb_cb.DisableRequest{},
|
||||
"/cloudbroker/lb/enable": lb_cb.EnableRequest{},
|
||||
"/cloudbroker/lb/frontendBind": lb_cb.FrontendBindRequest{},
|
||||
"/cloudbroker/lb/frontendBindDelete": lb_cb.FrontendBindDeleteRequest{},
|
||||
"/cloudbroker/lb/frontendBindingUpdate": lb_cb.FrontendBindUpdateRequest{},
|
||||
"/cloudbroker/lb/frontendCreate": lb_cb.FrontendCreateRequest{},
|
||||
"/cloudbroker/lb/frontendDelete": lb_cb.FrontendDeleteRequest{},
|
||||
"/cloudbroker/lb/get": lb_cb.GetRequest{},
|
||||
"/cloudbroker/lb/makeHighlyAvailable": lb_cb.HighlyAvailableRequest{},
|
||||
"/cloudbroker/lb/list": lb_cb.ListRequest{},
|
||||
"/cloudbroker/lb/listDeleted": lb_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/lb/restart": lb_cb.RestartRequest{},
|
||||
"/cloudbroker/lb/restore": lb_cb.RestoreRequest{},
|
||||
"/cloudbroker/lb/start": lb_cb.StartRequest{},
|
||||
"/cloudbroker/lb/stop": lb_cb.StopRequest{},
|
||||
"/cloudbroker/lb/update": lb_cb.UpdateRequest{},
|
||||
"/cloudbroker/lb/updateSysctlParams": lb_cb.UpdateSysctParamsRequest{},
|
||||
|
||||
// node
|
||||
"/cloudbroker/node/applyIpmiAction": node_cb.ApplyIpmiActionRequest{},
|
||||
"/cloudbroker/node/consumption": node_cb.ConsumptionRequest{},
|
||||
"/cloudbroker/node/decommission": node_cb.DecommissionRequest{},
|
||||
"/cloudbroker/node/enable": node_cb.EnableRequest{},
|
||||
"/cloudbroker/node/enableNodes": node_cb.EnableNodesRequest{},
|
||||
"/cloudbroker/node/get": node_cb.GetRequest{},
|
||||
"/cloudbroker/node/list": node_cb.ListRequest{},
|
||||
"/cloudbroker/node/maintenance": node_cb.MaintenanceRequest{},
|
||||
"/cloudbroker/node/restrict": node_cb.RestrictRequest{},
|
||||
"/cloudbroker/node/setCoreIsolation": node_cb.SetCoreIsolationRequest{},
|
||||
"/cloudbroker/node/setHugePages": node_cb.SetHugePagesRequest{},
|
||||
"/cloudbroker/node/setsriovstatus": node_cb.SetSRIOVStatusRequest{},
|
||||
"/cloudbroker/node/setVFsNumber": node_cb.SetVFsNumberRequest{},
|
||||
"/cloudbroker/node/update": node_cb.UpdateRequest{},
|
||||
|
||||
// pcidevice
|
||||
"/cloudbroker/pcidevice/create": pcidevice_cb.CreateRequest{},
|
||||
"/cloudbroker/pcidevice/delete": pcidevice_cb.DeleteRequest{},
|
||||
"/cloudbroker/pcidevice/disable": pcidevice_cb.DisableRequest{},
|
||||
"/cloudbroker/pcidevice/enable": pcidevice_cb.EnableRequest{},
|
||||
"/cloudbroker/pcidevice/list": pcidevice_cb.ListRequest{},
|
||||
|
||||
// rg
|
||||
"/cloudbroker/rg/accessGrant": rg_cb.AccessGrantRequest{},
|
||||
"/cloudbroker/rg/accessRevoke": rg_cb.AccessRevokeRequest{},
|
||||
"/cloudbroker/rg/affinityGroupComputes": rg_cb.AffinityGroupComputesRequest{},
|
||||
"/cloudbroker/rg/affinityGroupsGet": rg_cb.AffinityGroupsGetRequest{},
|
||||
"/cloudbroker/rg/affinityGroupsList": rg_cb.AffinityGroupsListRequest{},
|
||||
"/cloudbroker/rg/audits": rg_cb.AuditsRequest{},
|
||||
"/cloudbroker/rg/create": rg_cb.CreateRequest{},
|
||||
"/cloudbroker/rg/delete": rg_cb.DeleteRequest{},
|
||||
"/cloudbroker/rg/disable": rg_cb.DisableRequest{},
|
||||
"/cloudbroker/rg/enable": rg_cb.EnableRequest{},
|
||||
"/cloudbroker/rg/get": rg_cb.GetRequest{},
|
||||
"/cloudbroker/rg/getResourceConsumption": rg_cb.GetResourceConsumptionRequest{},
|
||||
"/cloudbroker/rg/list": rg_cb.ListRequest{},
|
||||
"/cloudbroker/rg/listComputes": rg_cb.ListComputesRequest{},
|
||||
"/cloudbroker/rg/listDeleted": rg_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/rg/listLb": rg_cb.ListLBRequest{},
|
||||
"/cloudbroker/rg/listPFW": rg_cb.ListPFWRequest{},
|
||||
"/cloudbroker/rg/listResourceConsumption": EmptyStruct{},
|
||||
"/cloudbroker/rg/listVins": rg_cb.ListVINSRequest{},
|
||||
"/cloudbroker/rg/massDelete": rg_cb.MassDeleteRequest{},
|
||||
"/cloudbroker/rg/massDisable": rg_cb.MassDisableRequest{},
|
||||
"/cloudbroker/rg/massEnable": rg_cb.MassEnableRequest{},
|
||||
"/cloudbroker/rg/restore": rg_cb.RestoreRequest{},
|
||||
"/cloudbroker/rg/setCpuAllocationParameter": rg_cb.SetCPUAllocationParameterRequest{},
|
||||
"/cloudbroker/rg/setCpuAllocationRatio": rg_cb.SetCPUAllocationRatioRequest{},
|
||||
"/cloudbroker/rg/setDefNet": rg_cb.SetDefNetRequest{},
|
||||
"/cloudbroker/rg/update": rg_cb.UpdateRequest{},
|
||||
"/cloudbroker/rg/updateComputeFeatures": rg_cb.UpdateComputeFeaturesRequest{},
|
||||
"/cloudbroker/rg/updateResourceTypes": rg_cb.UpdateResourceTypesRequest{},
|
||||
"/cloudbroker/rg/usage": rg_cb.UsageRequest{},
|
||||
|
||||
// sep
|
||||
"/cloudbroker/sep/accessGrant": sep_cb.AccessGrantRequest{},
|
||||
"/cloudbroker/sep/accessGrantToPool": sep_cb.AccessGrantToPoolRequest{},
|
||||
"/cloudbroker/sep/accessRevoke": sep_cb.AccessRevokeRequest{},
|
||||
"/cloudbroker/sep/accessRevokeToPool": sep_cb.AccessRevokeToPoolRequest{},
|
||||
"/cloudbroker/sep/addConsumerNodes": sep_cb.AddConsumerNodesRequest{},
|
||||
"/cloudbroker/sep/addPool": sep_cb.AddPoolRequest{},
|
||||
"/cloudbroker/sep/addProviderNodes": sep_cb.AddProviderNodesRequest{},
|
||||
"/cloudbroker/sep/configFieldEdit": sep_cb.ConfigFieldEditRequest{},
|
||||
"/cloudbroker/sep/configInsert": sep_cb.ConfigInsertRequest{},
|
||||
"/cloudbroker/sep/configValidate": sep_cb.ConfigValidateRequest{},
|
||||
"/cloudbroker/sep/consumption": sep_cb.ConsumptionRequest{},
|
||||
"/cloudbroker/sep/create": sep_cb.CreateRequest{},
|
||||
"/cloudbroker/sep/decommission": sep_cb.DecommissionRequest{},
|
||||
"/cloudbroker/sep/delConsumerNodes": sep_cb.DelConsumerNodesRequest{},
|
||||
"/cloudbroker/sep/delete": sep_cb.DeleteRequest{},
|
||||
"/cloudbroker/sep/delPool": sep_cb.DelPoolRequest{},
|
||||
"/cloudbroker/sep/disable": sep_cb.DisableRequest{},
|
||||
"/cloudbroker/sep/diskList": sep_cb.DiskListRequest{},
|
||||
"/cloudbroker/sep/enable": sep_cb.EnableRequest{},
|
||||
"/cloudbroker/sep/get": sep_cb.GetRequest{},
|
||||
"/cloudbroker/sep/getConfig": sep_cb.GetConfigRequest{},
|
||||
"/cloudbroker/sep/getPool": sep_cb.GetPoolRequest{},
|
||||
"/cloudbroker/sep/list": sep_cb.ListRequest{},
|
||||
"/cloudbroker/sep/updateCapacityLimit": sep_cb.UpdateCapacityLimitRequest{},
|
||||
|
||||
// stack
|
||||
"/cloudbroker/stack/get": stack_cb.GetRequest{},
|
||||
"/cloudbroker/stack/getLogicalCoresCount": stack_cb.GetLogicalCoresCountRequest{},
|
||||
"/cloudbroker/stack/list": stack_cb.ListRequest{},
|
||||
"/cloudbroker/stack/setCpuAllocationRatio": stack_cb.SetCpuAllocationRatioRequest{},
|
||||
"/cloudbroker/stack/setMemAllocationRatio": stack_cb.SetMemAllocationRatioRequest{},
|
||||
|
||||
// tasks
|
||||
"/cloudbroker/tasks/get": tasks_cb.GetRequest{},
|
||||
"/cloudbroker/tasks/list": tasks_cb.ListRequest{},
|
||||
|
||||
// user
|
||||
"/cloudbroker/user/apiaccessJoin": user_cb.APIAccessJoinRequest{},
|
||||
"/cloudbroker/user/apiaccessLeave": user_cb.APIAccessLeaveRequest{},
|
||||
"/cloudbroker/user/apiaccessList": user_cb.APIAccessListRequest{},
|
||||
"/cloudbroker/user/apiList": user_cb.APIListRequest{},
|
||||
"/cloudbroker/user/create": user_cb.CreateRequest{},
|
||||
"/cloudbroker/user/delete": user_cb.DeleteRequest{},
|
||||
"/cloudbroker/user/deleteByGuid": user_cb.DeleteByGUIDRequest{},
|
||||
"/cloudbroker/user/deleteUsers": user_cb.DeleteUsersRequest{},
|
||||
"/cloudbroker/user/get": user_cb.GetRequest{},
|
||||
"/cloudbroker/user/getAudit": user_cb.GetAuditRequest{},
|
||||
"/cloudbroker/user/getMatchingUsernames": user_cb.GetMatchingUsernamesRequest{},
|
||||
"/cloudbroker/user/list": user_cb.ListRequest{},
|
||||
|
||||
// vfpool
|
||||
"/cloudbroker/vfpool/create": vfpool_cb.CreateRequest{},
|
||||
"/cloudbroker/vfpool/delete": vfpool_cb.DeleteRequest{},
|
||||
"/cloudbroker/vfpool/disable": vfpool_cb.DisableRequest{},
|
||||
"/cloudbroker/vfpool/enable": vfpool_cb.EnableRequest{},
|
||||
"/cloudbroker/vfpool/get": vfpool_cb.GetRequest{},
|
||||
"/cloudbroker/vfpool/list": vfpool_cb.ListRequest{},
|
||||
"/cloudbroker/vfpool/update": vfpool_cb.UpdateRequest{},
|
||||
|
||||
// vgpu
|
||||
"/cloudbroker/vgpu/allocate": vgpu_cb.AllocateRequest{},
|
||||
"/cloudbroker/vgpu/create": vgpu_cb.CreateRequest{},
|
||||
"/cloudbroker/vgpu/deallocate": vgpu_cb.DeallocateRequest{},
|
||||
"/cloudbroker/vgpu/destroy": vgpu_cb.DestroyRequest{},
|
||||
"/cloudbroker/vgpu/list": vgpu_cb.ListRequest{},
|
||||
|
||||
// vins
|
||||
"/cloudbroker/vins/audits": vins_cb.AuditsRequest{},
|
||||
"/cloudbroker/vins/createInAccount": vins_cb.CreateInAccountRequest{},
|
||||
"/cloudbroker/vins/createInRG": vins_cb.CreateInRGRequest{},
|
||||
"/cloudbroker/vins/defaultQosUpdate": vins_cb.DefaultQOSUpdateRequest{},
|
||||
"/cloudbroker/vins/delete": vins_cb.DeleteRequest{},
|
||||
"/cloudbroker/vins/disable": vins_cb.DisableRequest{},
|
||||
"/cloudbroker/vins/dnsApply": vins_cb.DNSApplyRequest{},
|
||||
"/cloudbroker/vins/enable": vins_cb.EnableRequest{},
|
||||
"/cloudbroker/vins/extNetConnect": vins_cb.ExtNetConnectRequest{},
|
||||
"/cloudbroker/vins/extNetDisconnect": vins_cb.ExtNetDisconnectRequest{},
|
||||
"/cloudbroker/vins/extNetList": vins_cb.ExtNetListRequest{},
|
||||
"/cloudbroker/vins/get": vins_cb.GetRequest{},
|
||||
"/cloudbroker/vins/ipList": vins_cb.IPListRequest{},
|
||||
"/cloudbroker/vins/ipRelease": vins_cb.IPReleaseRequest{},
|
||||
"/cloudbroker/vins/ipReserve": vins_cb.IPReserveRequest{},
|
||||
"/cloudbroker/vins/list": vins_cb.ListRequest{},
|
||||
"/cloudbroker/vins/listDeleted": vins_cb.ListDeletedRequest{},
|
||||
"/cloudbroker/vins/massDelete": vins_cb.MassDeleteRequest{},
|
||||
"/cloudbroker/vins/massDisable": vins_cb.MassDisableRequest{},
|
||||
"/cloudbroker/vins/massEnable": vins_cb.MassEnableRequest{},
|
||||
"/cloudbroker/vins/natRuleAdd": vins_cb.NATRuleAddRequest{},
|
||||
"/cloudbroker/vins/natRuleDel": vins_cb.NATRuleDelRequest{},
|
||||
"/cloudbroker/vins/natRuleList": vins_cb.NATRuleListRequest{},
|
||||
"/cloudbroker/vins/netQos": vins_cb.NetQOSRequest{},
|
||||
"/cloudbroker/vins/raiseDown": EmptyStruct{},
|
||||
"/cloudbroker/vins/restore": vins_cb.RestoreRequest{},
|
||||
"/cloudbroker/vins/search": vins_cb.SearchRequest{},
|
||||
"/cloudbroker/vins/staticRouteAccessGrant": vins_cb.StaticRouteAccessGrantRequest{},
|
||||
"/cloudbroker/vins/staticRouteAccessRevoke": vins_cb.StaticRouteAccessRevokeRequest{},
|
||||
"/cloudbroker/vins/staticRouteAdd": vins_cb.StaticRouteAddRequest{},
|
||||
"/cloudbroker/vins/staticRouteDel": vins_cb.StaticRouteDelRequest{},
|
||||
"/cloudbroker/vins/staticRouteList": vins_cb.StaticRouteListRequest{},
|
||||
"/cloudbroker/vins/vnfdevRedeploy": vins_cb.VNFDevRedeployRequest{},
|
||||
"/cloudbroker/vins/vnfdevRestart": vins_cb.VNFDevRestartRequest{},
|
||||
"/cloudbroker/vins/vnfdevReset": vins_cb.VNFDevResetRequest{},
|
||||
"/cloudbroker/vins/vnfdevStart": vins_cb.VNFDevStartRequest{},
|
||||
"/cloudbroker/vins/vnfdevStop": vins_cb.VNFDevStopRequest{},
|
||||
}
|
||||
}
|
||||
261
tests/platform_upgrade/utils_get_list.go
Normal file
261
tests/platform_upgrade/utils_get_list.go
Normal file
@@ -0,0 +1,261 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
|
||||
)
|
||||
|
||||
func getClient() (*decort.DecortClient, error) {
|
||||
cfg := config.Config{
|
||||
Retries: 5,
|
||||
SSLSkipVerify: true,
|
||||
}
|
||||
|
||||
err := godotenv.Load(".env")
|
||||
if err != nil {
|
||||
log.Fatal("Error loading .env file")
|
||||
}
|
||||
|
||||
appID, ok := os.LookupEnv("AppID")
|
||||
if !ok {
|
||||
return &decort.DecortClient{}, fmt.Errorf("AppID is not set")
|
||||
}
|
||||
cfg.AppID = appID
|
||||
|
||||
AppSecret, ok := os.LookupEnv("AppSecret")
|
||||
if !ok {
|
||||
return &decort.DecortClient{}, fmt.Errorf("AppSecret is not set")
|
||||
}
|
||||
cfg.AppSecret = AppSecret
|
||||
|
||||
SSOURL, ok := os.LookupEnv("SSOURL")
|
||||
if !ok {
|
||||
return &decort.DecortClient{}, fmt.Errorf("SSOURL is not set")
|
||||
}
|
||||
cfg.SSOURL = SSOURL
|
||||
|
||||
DecortURL, ok := os.LookupEnv("DecortURL")
|
||||
if !ok {
|
||||
return &decort.DecortClient{}, fmt.Errorf("DecortURL is not set")
|
||||
}
|
||||
cfg.DecortURL = DecortURL
|
||||
|
||||
cfg.SetTimeout(5 * time.Minute)
|
||||
c := decort.New(cfg)
|
||||
return c, nil
|
||||
}
|
||||
|
||||
// getResult checks how json-structure of bytes is different from golang structure and return t.Error if there are any differences.
|
||||
func getResult(testName string, bytes []byte, structure any, t *testing.T) {
|
||||
// convert bytes to map[string]interface{}
|
||||
bytesMap, err := GetMapFromBytes(bytes)
|
||||
if err != nil {
|
||||
t.Errorf("%s: can not unmarshal json", testName)
|
||||
}
|
||||
|
||||
// convert structure to map[string]interface{}
|
||||
structMap := GetMapFromStructure(structure)
|
||||
|
||||
// assert if they are equal
|
||||
if !reflect.DeepEqual(bytesMap, structMap) {
|
||||
t.Errorf(getDifference(testName, bytesMap, structMap))
|
||||
}
|
||||
}
|
||||
|
||||
// getDifference tells which fields are present in bytesMap and not present in structMap and vice versa.
|
||||
func getDifference(testName string, bytesMap, structMap map[string]interface{}) string {
|
||||
var result string
|
||||
bytesFields, _ := evaluate(bytesMap, structMap)
|
||||
result += fmt.Sprintf("%s: ", testName)
|
||||
|
||||
if len(bytesFields) > 0 {
|
||||
result += fmt.Sprintf("\nPlatform has these fields that golang struct doesn't: %v\n", bytesFields)
|
||||
}
|
||||
|
||||
//if len(structFields) > 0 {
|
||||
// result += fmt.Sprintf("Golang struct has these fields that platform doesn't: %v\n", structFields)
|
||||
//}
|
||||
|
||||
if len(bytesFields) == 0 {
|
||||
result += "OK"
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func evaluate(m1, m2 map[string]interface{}) ([]string, []string) {
|
||||
var s1, s2 []string
|
||||
|
||||
for k1, v1 := range m1 {
|
||||
v2, ok := m2[k1]
|
||||
if !ok {
|
||||
s1 = append(s1, k1)
|
||||
continue
|
||||
}
|
||||
|
||||
v1Map := v1.(map[string]interface{})
|
||||
v2Map := v2.(map[string]interface{})
|
||||
|
||||
len1 := len(v1Map)
|
||||
len2 := len(v2Map)
|
||||
|
||||
if len1 == 0 && len2 == 0 {
|
||||
continue
|
||||
} else {
|
||||
toAdd1, toAdd2 := evaluate(v1Map, v2Map)
|
||||
s1 = append(s1, toAdd1...)
|
||||
s2 = append(s2, toAdd2...)
|
||||
}
|
||||
}
|
||||
|
||||
for k2, v2 := range m2 {
|
||||
v1, ok := m1[k2]
|
||||
if !ok {
|
||||
if !contains(s2, k2) {
|
||||
s2 = append(s2, k2)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
v1Map := v1.(map[string]interface{})
|
||||
v2Map := v2.(map[string]interface{})
|
||||
|
||||
len1 := len(v1Map)
|
||||
len2 := len(v2Map)
|
||||
|
||||
if len1 == 0 && len2 == 0 {
|
||||
continue
|
||||
} else {
|
||||
toAdd1, toAdd2 := evaluate(v1Map, v2Map)
|
||||
s1 = appendSelectedElements(s1, toAdd1)
|
||||
s2 = appendSelectedElements(s2, toAdd2)
|
||||
}
|
||||
}
|
||||
|
||||
return s1, s2
|
||||
}
|
||||
|
||||
func contains(slice []string, element string) bool {
|
||||
for _, elem := range slice {
|
||||
if elem == element {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func appendSelectedElements(slice []string, elements []string) []string {
|
||||
result := make([]string, 0, len(slice))
|
||||
result = append(result, slice...)
|
||||
|
||||
for _, el := range elements {
|
||||
if !contains(slice, el) {
|
||||
result = append(result, el)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// GetMapFromBytes converts []byte to map[string]interface{}
|
||||
func GetMapFromBytes(bytes []byte) (map[string]interface{}, error) {
|
||||
var x map[string]interface{}
|
||||
err := json.Unmarshal(bytes, &x)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return getMapBytes(x), nil
|
||||
}
|
||||
|
||||
func getMapBytes(value map[string]interface{}) map[string]interface{} {
|
||||
temporary := make(map[string]interface{})
|
||||
for k, v := range value {
|
||||
list, ok := v.([]interface{})
|
||||
if ok && len(list) > 0 {
|
||||
elem, ok := list[0].(map[string]interface{})
|
||||
if ok {
|
||||
temporary[k] = getMapBytes(elem)
|
||||
continue
|
||||
}
|
||||
temporary[k] = map[string]interface{}{}
|
||||
continue
|
||||
}
|
||||
|
||||
m, ok := v.(map[string]interface{})
|
||||
if ok {
|
||||
temporary[k] = getMapBytes(m)
|
||||
continue
|
||||
}
|
||||
|
||||
if _, err := strconv.Atoi(k); err != nil {
|
||||
temporary[k] = map[string]interface{}{}
|
||||
}
|
||||
}
|
||||
|
||||
return temporary
|
||||
}
|
||||
|
||||
// GetMapFromStructure converts golang structure to map[string]interface{}
|
||||
func GetMapFromStructure(structure any) map[string]interface{} {
|
||||
typ := reflect.TypeOf(structure)
|
||||
|
||||
return getMapStruct(typ)
|
||||
}
|
||||
|
||||
func getMapStruct(t reflect.Type) map[string]interface{} {
|
||||
temporary := make(map[string]interface{})
|
||||
for i := 0; i < t.NumField(); i++ {
|
||||
tag := t.Field(i).Tag.Get("json")
|
||||
kind := t.Field(i).Type.Kind()
|
||||
|
||||
//nolint
|
||||
switch kind {
|
||||
case reflect.Array, reflect.Slice:
|
||||
elem := t.Field(i).Type.Elem()
|
||||
switch elem.Kind() {
|
||||
case reflect.Struct:
|
||||
temporary[tag] = getMapStruct(elem)
|
||||
default:
|
||||
temporary[tag] = map[string]interface{}{}
|
||||
}
|
||||
|
||||
case reflect.Struct:
|
||||
if tag == "" {
|
||||
return getMapStruct(t.Field(i).Type)
|
||||
} else {
|
||||
temporary[tag] = getMapStruct(t.Field(i).Type)
|
||||
}
|
||||
// в этом месте работает некорректно для вложенных структур без json тегов (scope - все в cloudbroker)
|
||||
|
||||
case reflect.Map, reflect.Interface, reflect.String, reflect.Bool, reflect.Int64, reflect.Int, reflect.Uint,
|
||||
reflect.Int32, reflect.Uint64, reflect.Float32, reflect.Float64:
|
||||
temporary[tag] = map[string]interface{}{}
|
||||
}
|
||||
}
|
||||
|
||||
return temporary
|
||||
}
|
||||
|
||||
// getMapFromFile converts json to map[string]interface{}
|
||||
func getMapFromFile(bytes []byte) (map[string]interface{}, error) {
|
||||
var x map[string]interface{}
|
||||
err := json.Unmarshal(bytes, &x)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
paths := x["paths"].(map[string]interface{})
|
||||
|
||||
return paths, nil
|
||||
}
|
||||
218
tests/platform_upgrade/utils_requests.go
Normal file
218
tests/platform_upgrade/utils_requests.go
Normal file
@@ -0,0 +1,218 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func getParameters(input map[string]interface{}) []interface{} {
|
||||
var emptySlice []interface{}
|
||||
post, ok := input["post"]
|
||||
if !ok {
|
||||
return emptySlice
|
||||
}
|
||||
|
||||
parameters, ok := post.(map[string]interface{})
|
||||
if !ok {
|
||||
return emptySlice
|
||||
}
|
||||
|
||||
params, ok := parameters["parameters"]
|
||||
if !ok {
|
||||
return emptySlice
|
||||
}
|
||||
|
||||
res, ok := params.([]interface{})
|
||||
if !ok {
|
||||
return emptySlice
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func getBytesFromJSON(fileName string, t *testing.T) []byte {
|
||||
jsonFile, err := os.Open(fileName)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
defer jsonFile.Close()
|
||||
|
||||
bytes, err := io.ReadAll(jsonFile)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
return bytes
|
||||
}
|
||||
|
||||
func getErrorsFromJSON(bytes []byte, t *testing.T, cloud string) {
|
||||
var requests map[string]interface{}
|
||||
|
||||
switch cloud {
|
||||
case "cloudapi":
|
||||
requests = getRequestsMapCloudAPI()
|
||||
case "cloudbroker":
|
||||
requests = getRequestsMapCloudbroker()
|
||||
default:
|
||||
t.Fatalf("Wrong cloud provided, expected `cloudapi` or `cloudbroker`, got %s", cloud)
|
||||
}
|
||||
|
||||
paths, err := getMapFromFile(bytes)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
i := 0
|
||||
for k, v := range paths {
|
||||
// exclude deprecated urls from analysis
|
||||
if !validateUrlFromJson(k) {
|
||||
continue
|
||||
}
|
||||
|
||||
params := getParameters(v.(map[string]interface{}))
|
||||
structure, ok := requests[k]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
i++
|
||||
typStruct := reflect.TypeOf(structure)
|
||||
|
||||
var errs []string
|
||||
// empty request case
|
||||
if len(params) == 0 && structure == nil {
|
||||
continue
|
||||
}
|
||||
if len(params) != typStruct.NumField() {
|
||||
errs = append(errs, fmt.Sprintf("Platform (%d) and golang structure (%d) have different amount of fields.", len(params), typStruct.NumField()))
|
||||
}
|
||||
for _, p := range params {
|
||||
param, ok := p.(map[string]interface{})
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
name := param["name"].(string)
|
||||
required := param["required"].(bool)
|
||||
typ := p.(map[string]interface{})["type"].(string)
|
||||
|
||||
var items string
|
||||
if p.(map[string]interface{})["items"] != nil {
|
||||
itemsTemp := p.(map[string]interface{})["items"]
|
||||
if itemsTemp != nil {
|
||||
itemsType := itemsTemp.(map[string]interface{})["type"]
|
||||
if itemsType != nil {
|
||||
items = itemsType.(string)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var found bool
|
||||
for i := 0; i < typStruct.NumField(); i++ {
|
||||
jsonTag := typStruct.Field(i).Tag.Get("json")
|
||||
validation, _ := typStruct.Field(i).Tag.Lookup("validate")
|
||||
|
||||
if checkName(name, jsonTag) {
|
||||
if !checkRequired(required, validation, typ) {
|
||||
errs = append(errs, fmt.Sprintf("Field %s has different required parameters on the platform and in golang structure", name))
|
||||
}
|
||||
if !checkKind(typ, items, typStruct.Field(i).Type) {
|
||||
errs = append(errs, fmt.Sprintf("Field %s has different type parameters on the platform and in golang structure", name))
|
||||
}
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
errs = append(errs, fmt.Sprintf("Platform has field %s that golang structure doesn't", name))
|
||||
}
|
||||
}
|
||||
if len(errs) > 0 {
|
||||
t.Errorf("Path %s has following errors: %v", k, errs)
|
||||
}
|
||||
}
|
||||
|
||||
if len(requests) != i {
|
||||
t.Errorf("Amount of structure checked (%d) is not the same as amount of platform requests available (%d), please check getRequestsMapCloudAPI func in code.",
|
||||
i, len(requests))
|
||||
}
|
||||
}
|
||||
|
||||
// checkName checks if name field from platform has the same value as json tag in golang structure (maybe including omitempty)
|
||||
func checkName(name, tag string) bool {
|
||||
return strings.Contains(tag, name)
|
||||
}
|
||||
|
||||
// checkRequired checks if required field from platform has the same value as validate tag in golang structure
|
||||
func checkRequired(required bool, validation, fieldType string) bool {
|
||||
if required && strings.Contains(validation, "required") {
|
||||
return true
|
||||
}
|
||||
if required && (!strings.Contains(validation, "omitempty") && validation != "") {
|
||||
return true
|
||||
}
|
||||
if !required && (validation == "" || strings.Contains(validation, "omitempty")) {
|
||||
return true
|
||||
}
|
||||
|
||||
if fieldType == "boolean" {
|
||||
return true // otherwise we have issues with setting false/true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// checkKind checks if type field from platform has the same value as field type in golang structure
|
||||
func checkKind(platformType, items string, typ reflect.Type) bool {
|
||||
//nolint
|
||||
switch typ.Kind() {
|
||||
case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int8, reflect.Int16, reflect.Uint, reflect.Uint64, reflect.Uint16, reflect.Uint32, reflect.Uint8:
|
||||
if platformType == "integer" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
case reflect.String:
|
||||
if platformType == "string" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
case reflect.Bool:
|
||||
if platformType == "boolean" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
case reflect.Float32, reflect.Float64:
|
||||
if platformType == "number" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
case reflect.Array, reflect.Slice:
|
||||
if platformType != "array" {
|
||||
return false
|
||||
}
|
||||
|
||||
elem := typ.Elem()
|
||||
switch elem.Kind() {
|
||||
case reflect.String:
|
||||
if items == "string" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int8, reflect.Int16, reflect.Uint, reflect.Uint64, reflect.Uint16, reflect.Uint32, reflect.Uint8:
|
||||
if items == "integer" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
171
tests/platform_upgrade/utils_urls.go
Normal file
171
tests/platform_upgrade/utils_urls.go
Normal file
@@ -0,0 +1,171 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// DEPRECATED_GROUPS stores API groups that are deprecated and therefore are not supported in further developement
|
||||
var DEPRECATED_GROUPS = []string{
|
||||
"/cloudapi/machine/",
|
||||
"/cloudapi/cloudspace/",
|
||||
"/cloudapi/prometheus/",
|
||||
"//cloudbroker/pgpu/",
|
||||
"/cloudapi/gpu/",
|
||||
"/cloudapi/portforwarding/",
|
||||
"/cloudapi/account/listVMs",
|
||||
"/cloudapi/account/listCS",
|
||||
"/cloudapi/account/getStats",
|
||||
"/cloudapi/vgpu/list",
|
||||
|
||||
"/cloudbroker/account/listVMs",
|
||||
"/cloudbroker/account/listCS",
|
||||
"/cloudbroker/machine/",
|
||||
"/cloudbroker/bservice/",
|
||||
"/cloudbroker/prometheus/",
|
||||
"/cloudbroker/auditcollector/",
|
||||
"/cloudbroker/health/",
|
||||
"/cloudbroker/metering/",
|
||||
"/cloudbroker/cloudspace/",
|
||||
"/cloudbroker/vnfdev/",
|
||||
"/cloudbroker/auditbeat/",
|
||||
"/cloudbroker/zeroaccess/",
|
||||
"/cloudbroker/qos/",
|
||||
"/cloudbroker/backupcreator/",
|
||||
"/cloudbroker/resmon/",
|
||||
"/cloudbroker/pgpu/",
|
||||
"/cloudbroker/job/",
|
||||
"/cloudbroker/tlock/",
|
||||
"/cloudbroker/eco/",
|
||||
"/cloudbroker/iaas/",
|
||||
"/cloudbroker/diagnostics/",
|
||||
"/cloudbroker/milestones/",
|
||||
}
|
||||
|
||||
// getUrlsFromBytes converts bytes to array of urls strings
|
||||
func getUrlsFromBytes(bytes []byte) ([]string, error) {
|
||||
paths, err := getMapFromFile(bytes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
urls := make([]string, 0, len(paths))
|
||||
for p := range paths {
|
||||
if validateUrlFromJson(p) {
|
||||
urls = append(urls, p)
|
||||
}
|
||||
}
|
||||
|
||||
return urls, nil
|
||||
}
|
||||
|
||||
func validateUrlFromJson(url string) bool {
|
||||
if !strings.HasPrefix(url, "/cloudapi/") && !strings.HasPrefix(url, "/cloudbroker/") {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, deprecated := range DEPRECATED_GROUPS {
|
||||
if strings.Contains(url, deprecated) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// getMissingDecortUrls returns array of url strings that are present in json swagger docs and absent in decort-sdk handlers.
|
||||
func getMissingDecortUrls(jsonUrls, decortUrls []string) []string {
|
||||
result := make([]string, 0, len(jsonUrls))
|
||||
for _, jsonUrl := range jsonUrls {
|
||||
var found bool
|
||||
for _, decortUrl := range decortUrls {
|
||||
if jsonUrl == decortUrl {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
result = append(result, jsonUrl)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// readUrlFromDir reads all url addresses from given directory and its subdirectories and subfiles and returns array of urls found. Capacity will
|
||||
func readUrlFromDir(dirName string, capacity int) []string {
|
||||
result := make([]string, 0, capacity)
|
||||
|
||||
items, _ := os.ReadDir(dirName)
|
||||
|
||||
for _, item := range items {
|
||||
itemName := dirName + "/" + item.Name()
|
||||
if item.IsDir() {
|
||||
subitems, _ := os.ReadDir(itemName)
|
||||
|
||||
for _, subitem := range subitems {
|
||||
subName := itemName + "/" + subitem.Name()
|
||||
files, _ := os.ReadDir(subName)
|
||||
if item.IsDir() {
|
||||
for _, file := range files {
|
||||
fileName := dirName + "/" + item.Name() + "/" + subitem.Name() + "/" + file.Name()
|
||||
if !file.IsDir() {
|
||||
url, err := readUrlFromFile(fileName)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, url...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !subitem.IsDir() {
|
||||
url, err := readUrlFromFile(subName)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, url...)
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
url, err := readUrlFromFile(itemName)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, url...)
|
||||
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// readUrlFromFile reads url address of format url := "/cloudapi/vins/audits" or url := "/cloudbroker/vins/audits" from file with name fileName.
|
||||
func readUrlFromFile(fileName string) ([]string, error) {
|
||||
var result []string
|
||||
file, err := os.Open(fileName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
for scanner.Scan() {
|
||||
if strings.Contains(scanner.Text(), `"/cloudapi/`) {
|
||||
indexStart := strings.Index(scanner.Text(), "/cloudapi/")
|
||||
result = append(result, strings.TrimRight(scanner.Text()[indexStart:], `"`))
|
||||
}
|
||||
if strings.Contains(scanner.Text(), `"/cloudbroker/`) {
|
||||
indexStart := strings.Index(scanner.Text(), "/cloudbroker/")
|
||||
result = append(result, strings.TrimRight(scanner.Text()[indexStart:], `"`))
|
||||
}
|
||||
}
|
||||
|
||||
if len(result) == 0 {
|
||||
return nil, fmt.Errorf("file %s doesn't contain any url", fileName)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user