v1.16.4
v1.16.4
This commit is contained in:
95
CHANGELOG.md
95
CHANGELOG.md
@@ -1,4 +1,4 @@
|
|||||||
## Version 1.16.3
|
## Version 1.16.4
|
||||||
|
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
@@ -18,31 +18,98 @@
|
|||||||
| `rg/AccessRevoke` | :heavy_check_mark: | :heavy_check_mark: |
|
| `rg/AccessRevoke` | :heavy_check_mark: | :heavy_check_mark: |
|
||||||
| `sep/ConfigFieldEdit` | :x: | :heavy_check_mark: |
|
| `sep/ConfigFieldEdit` | :x: | :heavy_check_mark: |
|
||||||
|
|
||||||
|
|
||||||
### Добавлено
|
### Добавлено
|
||||||
|
|
||||||
#### extnet
|
#### apiaccess
|
||||||
| Идентификатор задачи | Описание |
|
| Идентификатор задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| BGOS-1034 | Методы `AsyncCreate`, `AsyncDeviceDeploy` и `AsyncSetHAMode` в cloudbroker/extnet |
|
| BGOS-1055 | Структура `SDNEndpoints` и опциональное поле `SDN` в структуру `APIsEndpoints` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Опциональные поля `Audit`, `DPDKNet`, `SecurityGroup`, `SEP`, `StoragePolicy`, `Trunk`, `VFPool`, `VMFolder`, `Zone` в структуру `CloudAPIEndpoints` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Опциональные поля `Backup`, `DPDKNet`, `SecurityGroup`, `StoragePolicy`, `Trunk`, `VFPool`, `VMFolder`, `Zone` в структуру `CloudBrokerEndpoints` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Опциональные поля `Cache`, `InfoWellknown` в структуру `SystemEndpoints` в cloudbroker/apiaccess |
|
||||||
|
|
||||||
|
#### compute
|
||||||
#### locations
|
|
||||||
| Идентификатор задачи | Описание |
|
| Идентификатор задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| BGOS-1032 | Вычисляемое поле `VMFoldersEnabled` в структуру ответа `ItemLocation` в cloudapi/locations |
|
| BGOS-1043 | Опциональное поле `AsyncMode` в структуру запроса `SnapshotEvictDiskRequest` в cloudbroker/compute |
|
||||||
|
| BGOS-1044 | Методы `AsyncAffinityRuleAdd` и `AsyncAntiAffinityRuleAdd` в cloudapi/compute и cloudbroker/compute |
|
||||||
|
| BGOS-1054 | Опциональные поля `FolderID` и `IncludeDescendants` в структуру запроса `ListRequest` в cloudapi/compute |
|
||||||
|
| BGOS-1054 | Опциональные поля `FolderID` и `IncludeDescendants` в структуру запроса `ListRequest` в cloudbroker/compute |
|
||||||
|
| BGOS-1046 | Опциональное поле `Migrate` в структуры запросов `AffinityRuleAddRequest` и `AntiAffinityRuleAddRequest` в cloudapi/compute |
|
||||||
|
| BGOS-1046 | Опциональное поле `Migrate` в структуры запросов `AffinityRuleAddRequest` и `AntiAffinityRuleAddRequest` в cloudbroker/compute |
|
||||||
|
|
||||||
#### vins
|
#### session
|
||||||
| Идентификатор задачи | Описание |
|
| Идентификатор задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| BGOS-1033 | Методы `AsyncCreateInAccount`, `AsyncCreateInRG`, `AsyncEnable`, `AsyncVNFDevRedeploy` и `AsyncVNFDevRestart` в cloudapi/vins |
|
| BGOS-1048 | Опциональное поле `IncludeArchive` в структуру запроса `ListRequest` в cloudbroker/session |
|
||||||
| BGOS-1033 | Методы `AsyncCreateInAccount`, `AsyncCreateInRG`, `AsyncEnable`, `AsyncVNFDevRedeploy`, `AsyncVNFDevRestart` и `AsyncVNFDevStart` в cloudbroker/vins |
|
|
||||||
| BGOS-1033 | Структура запроса `DisableRequest` и метод `Disable` в cloudapi/vins |
|
|
||||||
| BGOS-1033 | Структура запроса `EnableRequest` и метод `Enable` в cloudapi/vins |
|
|
||||||
|
|
||||||
### Исправлено
|
#### stpolicy
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1047 | Вычисляемое поле `ReplicationProfileID` в структуры ответа `InfoStoragePolicy` и `ItemStoragePolicy` в cloudapi/stpolicy и в cloudbroker/stpolicy |
|
||||||
|
| BGOS-1047 | Вычисляемое поле `ReplicationProfileID` в структуру ответа `InfoStoragePolicyWithID` в cloudbroker/stpolicy |
|
||||||
|
| BGOS-1047 | Методы `GetReplicationProfile`, `ListReplicationProfile`, структуры запроса `GetReplicationProfileRequest`, `ListReplicationProfileRequest` и структуры ответа `InfoReplicationProfile`, `ListReplicationProfiles`, `ItemReplicationProfile`, `ListSchedules`, `Schedule`, `Calendar` в cloudapi/stpolicy и в cloudbroker/stpolicy |
|
||||||
|
| BGOS-1047 | Метод `CreateReplicationProfile`, структуры запроса `CreateReplicationProfileRequest`, `SchedulesRequest`, `CalendarRequest` в cloudbroker/stpolicy |
|
||||||
|
| BGOS-1047 | Метод `UpdateReplicationProfile`, структуры запроса `UpdateReplicationProfileRequest`, `ConfigRequest` в cloudbroker/stpolicy |
|
||||||
|
| BGOS-1047 | Метод `DeleteReplicationProfile` и структура запроса `DeleteReplicationProfileRequest` в cloudbroker/stpolicy |
|
||||||
|
| BGOS-1047 | Методы `AddAccessReplicationProfile`, `RevokeAccessReplicationProfile` и структуры запроса `AddAccessReplicationProfileRequest`, `RevokeAccessReplicationProfileRequest` в cloudbroker/stpolicy |
|
||||||
|
|
||||||
|
#### vmfolder
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1049 | Группа апи методов vmfolder в cloudapi и cloudbroker |
|
||||||
|
|
||||||
|
### Изменено
|
||||||
|
|
||||||
|
#### backup
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1045 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структурах запроса `CreateDiskBackupRequest`, `CreateDisksBackupRequest`, `DeleteDiskBackupRequest`, `RestoreDiskFromBackupRequest` и `RestoreDisksFromBackupRequest` в cloudbroker/backup |
|
||||||
|
|
||||||
|
#### compute
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1043 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структурах запроса `AbortSharedSnapshotMergeRequest`, `CDEjectRequest`, `CDInsertRequest`, `ChangeIPRequest`, `ChangeLinkStateRequest`, `ChangeMTURequest`, `ChangeQoSPoliciesRequest`, `ChangeSecGroupsRequest`, `CloneRequest`, `CreateTemplateRequest`, `CreateTemplateFromBlankRequest`, `DeleteRequest`, `DisableRequest`, `DiskAddRequest`, `DiskAttachRequest`, `DiskDelRequest`, `DiskDetachRequest`, `DiskQOSRequest`, `DiskResizeRequest`, `DiskSwitchToReplicationRequest`, `GuestAgentDisableRequest`, `GuestAgentEnableRequest`, `GuestAgentExecuteRequest`, `GuestAgentFeatureUpdateRequest`, `MigrateToZoneRequest`, `MoveToRGRequest`, `NetAttachRequest`, `NetDetachRequest`, `PauseRequest`, `PFWAddRequest`, `PFWDelRequest`, `PinToNodeRequest`, `PowerCycleRequest`, `RebootRequest`, `RedeployRequest`, `ResetRequest`, `ResizeRequest`, `RestoreRequest`, `ResumeRequest`, `SnapshotCreateRequest`, `SnapshotDeleteRequest`, `SnapshotRollbackRequest`, `StartRequest` и `StopRequest` в cloudapi/compute |
|
||||||
|
| BGOS-1043 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структурах запроса `AbortSharedSnapshotMergeRequest`, `CDEjectRequest`, `CDInsertRequest`, `ChangeIPRequest`, `ChangeLinkStateRequest`, `ChangeMTURequest`, `ChangeQoSPoliciesRequest`, `ChangeSecGroupsRequest`, `CloneRequest`, `CreateTemplateRequest`, `CreateTemplateFromBlankRequest`, `DeleteRequest`, `DisableRequest`, `DiskAddRequest`, `DiskAttachRequest`, `DiskDelRequest`, `DiskDetachRequest`, `DiskQOSRequest`, `DiskResizeRequest`, `DiskSwitchToReplicationRequest`, `GuestAgentDisableRequest`, `GuestAgentEnableRequest`, `GuestAgentExecuteRequest`, `GuestAgentFeatureUpdateRequest`, `MassDeleteRequest`, `MassRebootRequest`, `MassStartRequest`, `MassStopRequest`, `MigrateAbortRequest`, `MigrateStorageAbortRequest`, `MigrateStorageCleanUpRequest`, `MigrateToZoneRequest`, `MoveToRGRequest`, `NetAttachRequest`, `NetDetachRequest`, `NetQOSRequest`, `PauseRequest`, `PFWAddRequest`, `PFWDelRequest`, `PinToNodeRequest`, `PowerCycleRequest`, `RaiseDownRequest`, `RebootRequest`, `RedeployRequest`, `ResetRequest`, `ResizeRequest`, `RestoreRequest`, `ResumeRequest`, `SnapshotCreateRequest`, `SnapshotDeleteRequest`, `SnapshotRollbackRequest`, `StartRequest` и `StopRequest` в cloudbroker/compute |
|
||||||
|
| BGOS-1043 | Опциональное поле `SyncMode` на `AsyncMode` в структуре запроса `MigrateRequest` в cloudbroker/compute |
|
||||||
|
| BGOS-1043 | Опциональное поле `Sync` на `Async` в структуре запроса `MigrateStorageRequest` в cloudbroker/compute |
|
||||||
|
|
||||||
|
#### disks
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1045 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структуре запроса `FromPlatformDiskRequest` в cloudapi/disks и в cloudbroker/disks |
|
||||||
|
|
||||||
|
#### image
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1045 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структуре запроса `CreateRequest` в cloudapi/image и в cloudbroker/image |
|
||||||
|
| BGOS-1045 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структуре запроса `CreateCDROMImageRequest` в cloudbroker/image |
|
||||||
|
|
||||||
#### kvmx86
|
#### kvmx86
|
||||||
| Идентификатор задачи | Описание |
|
| Идентификатор задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| BGOS-1040 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структуре запроса `CreateRequest` в cloudapi/kvmx86 и cloudbroker/kvmx86 |
|
| BGOS-1045 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структуре запроса `MassCreateRequest` в cloudbroker/kvmx86 |
|
||||||
|
|
||||||
|
#### node
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1045 | JSON-тэг опционального поля `AsyncMode` с `asyncMode` на `async_mode` в структуре запроса `EnableRequest` в cloudbroker/node |
|
||||||
|
|
||||||
|
### Исправлено
|
||||||
|
|
||||||
|
#### apiaccess
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1055 | Ошибка при вызове метода `Update` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Исправлен тип ответа метода `DescUpdate` в cloudbroker/apiaccess |
|
||||||
|
|
||||||
|
|
||||||
|
#### Удалено
|
||||||
|
|
||||||
|
#### apiaccess
|
||||||
|
| Идентификатор задачи | Описание |
|
||||||
|
| --- | --- |
|
||||||
|
| BGOS-1055 | Структура `LibCloudEndpoints` и опциональное поле `LibCloud` из структуры `APIsEndpoints` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Опциональные поля `CloudSpace`, `ComputeCI`, `DPDK`, `Machine`, `Openshift`, `OpenshiftCI`, `PortForwarding`, `Sizes` из структуры `CloudAPIEndpoints` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Опциональные поля `CloudSpace`, `ComputeCI`, `Desnode`, `Diagnostics`, `DPDK`, `IaaS`, `Machine`, `Openshift`, `OpenshiftCI`, `Ovsnode`, `QOS` из структуры `CloudBrokerEndpoints` в cloudbroker/apiaccess |
|
||||||
|
| BGOS-1055 | Опциональные поля `AgentController`, `Alerts`, `ErrorConditionHandler`, `Job`, `Log`, `Logo` из структуры `SystemEndpoints` в cloudbroker/apiaccess |
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
|
|||||||
- `Trunk` - получение информации о транковых портах;
|
- `Trunk` - получение информации о транковых портах;
|
||||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||||
- `VINS` - управление виртуальными изолированными сетями;
|
- `VINS` - управление виртуальными изолированными сетями;
|
||||||
|
- `VMFolder` – управление директориями ВМ;
|
||||||
- `VGPU` - управление виртуальными графическими процессорами;
|
- `VGPU` - управление виртуальными графическими процессорами;
|
||||||
- `Zone` - управление зонами.
|
- `Zone` - управление зонами.
|
||||||
|
|
||||||
@@ -175,7 +176,8 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
|
|||||||
- `User` - управление пользователями (индивидуально);
|
- `User` - управление пользователями (индивидуально);
|
||||||
- `VGPU` - управление виртуальными графическими процессорами;
|
- `VGPU` - управление виртуальными графическими процессорами;
|
||||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||||
- `VINS` - управление виртуальными изолированными сетями.
|
- `VINS` - управление виртуальными изолированными сетями;
|
||||||
|
- `VMFolder` – управление директориями ВМ;
|
||||||
- `Zone` - управление зонами.
|
- `Zone` - управление зонами.
|
||||||
|
|
||||||
### SDN
|
### SDN
|
||||||
@@ -352,6 +354,7 @@ func main() {
|
|||||||
- `pkg/cloudapi/vfpool` - для `VFPool`
|
- `pkg/cloudapi/vfpool` - для `VFPool`
|
||||||
- `pkg/cloudapi/vins` - для `VINS`
|
- `pkg/cloudapi/vins` - для `VINS`
|
||||||
- `pkg/cloudapi/vgpu` - для `VGPU`
|
- `pkg/cloudapi/vgpu` - для `VGPU`
|
||||||
|
- `pkg/cloudapi/vmfolder` - для `VMFolder`
|
||||||
- `pkg/cloudapi/zone` - для `Zone`
|
- `pkg/cloudapi/zone` - для `Zone`
|
||||||
- **cloudbroker**:
|
- **cloudbroker**:
|
||||||
- `pkg/cloudbroker/account` - для `Account`
|
- `pkg/cloudbroker/account` - для `Account`
|
||||||
@@ -387,6 +390,7 @@ func main() {
|
|||||||
- `pkg/cloudbroker/vgpu` - для `VGPU`
|
- `pkg/cloudbroker/vgpu` - для `VGPU`
|
||||||
- `pkg/cloudbroker/vfpool` - для `VFPool`
|
- `pkg/cloudbroker/vfpool` - для `VFPool`
|
||||||
- `pkg/cloudbroker/vins` - для `VINS`
|
- `pkg/cloudbroker/vins` - для `VINS`
|
||||||
|
- `pkg/cloudbroker/vmfolder` - для `VMFolder`
|
||||||
- `pkg/cloudbroker/zone` - для `Zone`
|
- `pkg/cloudbroker/zone` - для `Zone`
|
||||||
- **sdn**:
|
- **sdn**:
|
||||||
- `pkg/sdn/acsgroups` - для `Access groups`
|
- `pkg/sdn/acsgroups` - для `Access groups`
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ type AbortSharedSnapshotMergeRequest struct {
|
|||||||
|
|
||||||
type wrapperAbortSharedSnapshotMergeRequest struct {
|
type wrapperAbortSharedSnapshotMergeRequest struct {
|
||||||
AbortSharedSnapshotMergeRequest
|
AbortSharedSnapshotMergeRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AbortSharedSnapshotMerge shared snapshots merge abort
|
// AbortSharedSnapshotMerge shared snapshots merge abort
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package compute
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
@@ -40,6 +41,17 @@ type AffinityRuleAddRequest struct {
|
|||||||
// Value that must match the key to be taken into account when analyzing this rule
|
// Value that must match the key to be taken into account when analyzing this rule
|
||||||
// Required: true
|
// Required: true
|
||||||
Value string `url:"value" json:"value" validate:"required"`
|
Value string `url:"value" json:"value" validate:"required"`
|
||||||
|
|
||||||
|
// Migrate compute according to the rule
|
||||||
|
// Default: false
|
||||||
|
// Required: false
|
||||||
|
Migrate bool `url:"migrate" json:"migrate"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type wrapperAffinityRuleAddRequest struct {
|
||||||
|
AffinityRuleAddRequest
|
||||||
|
|
||||||
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AffinityRuleAdd add affinity rule
|
// AffinityRuleAdd add affinity rule
|
||||||
@@ -51,7 +63,12 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
|||||||
|
|
||||||
url := "/cloudapi/compute/affinityRuleAdd"
|
url := "/cloudapi/compute/affinityRuleAdd"
|
||||||
|
|
||||||
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
aReq := wrapperAffinityRuleAddRequest{
|
||||||
|
AffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@@ -63,3 +80,32 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AsyncAffinityRuleAdd add affinity rule in async mode
|
||||||
|
func (c Compute) AsyncAffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest) (string, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/compute/affinityRuleAdd"
|
||||||
|
|
||||||
|
aReq := wrapperAffinityRuleAddRequest{
|
||||||
|
AffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
var resp string
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package compute
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
@@ -40,6 +41,17 @@ type AntiAffinityRuleAddRequest struct {
|
|||||||
// Value that must match the key to be taken into account when analyzing this rule
|
// Value that must match the key to be taken into account when analyzing this rule
|
||||||
// Required: true
|
// Required: true
|
||||||
Value string `url:"value" json:"value" validate:"required"`
|
Value string `url:"value" json:"value" validate:"required"`
|
||||||
|
|
||||||
|
// Migrate compute according to the rule
|
||||||
|
// Default: false
|
||||||
|
// Required: false
|
||||||
|
Migrate bool `url:"migrate" json:"migrate"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type wrapperAntiAffinityRuleAddRequest struct {
|
||||||
|
AntiAffinityRuleAddRequest
|
||||||
|
|
||||||
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AntiAffinityRuleAdd add anti affinity rule
|
// AntiAffinityRuleAdd add anti affinity rule
|
||||||
@@ -51,7 +63,12 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
|||||||
|
|
||||||
url := "/cloudapi/compute/antiAffinityRuleAdd"
|
url := "/cloudapi/compute/antiAffinityRuleAdd"
|
||||||
|
|
||||||
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
aReq := wrapperAntiAffinityRuleAddRequest{
|
||||||
|
AntiAffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@@ -63,3 +80,32 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AsyncAntiAffinityRuleAdd add anti affinity rule in async mode
|
||||||
|
func (c Compute) AsyncAntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAddRequest) (string, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/compute/antiAffinityRuleAdd"
|
||||||
|
|
||||||
|
aReq := wrapperAntiAffinityRuleAddRequest{
|
||||||
|
AntiAffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
var resp string
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type CDEjectRequest struct {
|
|||||||
type wrapperCDEjectRequest struct {
|
type wrapperCDEjectRequest struct {
|
||||||
CDEjectRequest
|
CDEjectRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CDEject eject CD image to compute's CD-ROM
|
// CDEject eject CD image to compute's CD-ROM
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type CDInsertRequest struct {
|
|||||||
type wrapperCDInsertRequest struct {
|
type wrapperCDInsertRequest struct {
|
||||||
CDInsertRequest
|
CDInsertRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CDInsert insert new CD image to compute's CD-ROM
|
// CDInsert insert new CD image to compute's CD-ROM
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ type ChangeIPRequest struct {
|
|||||||
type wrapperChangeIPRequest struct {
|
type wrapperChangeIPRequest struct {
|
||||||
ChangeIPRequest
|
ChangeIPRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeIP change reserved IP for compute instance
|
// ChangeIP change reserved IP for compute instance
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ type ChangeLinkStateRequest struct {
|
|||||||
type wrapperChangeLinkStateRequest struct {
|
type wrapperChangeLinkStateRequest struct {
|
||||||
ChangeLinkStateRequest
|
ChangeLinkStateRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeLinkState changes the status link virtual of compute
|
// ChangeLinkState changes the status link virtual of compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type ChangeMTURequest struct {
|
|||||||
type wrapperChangeMTURequest struct {
|
type wrapperChangeMTURequest struct {
|
||||||
ChangeMTURequest
|
ChangeMTURequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeMTU change MTU for compute instance
|
// ChangeMTU change MTU for compute instance
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type ChangeQoSPoliciesRequest struct {
|
|||||||
type wrapperChangeQoSPoliciesRequest struct {
|
type wrapperChangeQoSPoliciesRequest struct {
|
||||||
ChangeQoSPoliciesRequest
|
ChangeQoSPoliciesRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeQoSPolicies change qos policies for compute
|
// ChangeQoSPolicies change qos policies for compute
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ type ChangeSecGroupsRequest struct {
|
|||||||
type wrapperChangeSecGroupsRequest struct {
|
type wrapperChangeSecGroupsRequest struct {
|
||||||
ChangeSecGroupsRequest
|
ChangeSecGroupsRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeSecGroups changes security groups for compute
|
// ChangeSecGroups changes security groups for compute
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ type CloneRequest struct {
|
|||||||
type wrapperCloneRequest struct {
|
type wrapperCloneRequest struct {
|
||||||
CloneRequest
|
CloneRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode" json:"asyncMode"`
|
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clone clones compute instance
|
// Clone clones compute instance
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type CreateTemplateRequest struct {
|
|||||||
type wrapperCreateTemplateRequest struct {
|
type wrapperCreateTemplateRequest struct {
|
||||||
CreateTemplateRequest
|
CreateTemplateRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateTemplate create template from compute instance
|
// CreateTemplate create template from compute instance
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ type CreateTemplateFromBlankRequest struct {
|
|||||||
|
|
||||||
type wrapperCreateTemplateFromBlankRequest struct {
|
type wrapperCreateTemplateFromBlankRequest struct {
|
||||||
CreateTemplateFromBlankRequest
|
CreateTemplateFromBlankRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateTemplateFromBlank creates template from boot disk of current compute in sync mode.
|
// CreateTemplateFromBlank creates template from boot disk of current compute in sync mode.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DeleteRequest struct {
|
|||||||
type wrapperDeleteRequest struct {
|
type wrapperDeleteRequest struct {
|
||||||
DeleteRequest
|
DeleteRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete deletes compute
|
// Delete deletes compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type DisableRequest struct {
|
|||||||
type wrapperDisableRequest struct {
|
type wrapperDisableRequest struct {
|
||||||
DisableRequest
|
DisableRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable disables compute
|
// Disable disables compute
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ type DiskAddRequest struct {
|
|||||||
type wrapperDiskAddRequest struct {
|
type wrapperDiskAddRequest struct {
|
||||||
DiskAddRequest
|
DiskAddRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskAdd creates new disk and attach to compute
|
// DiskAdd creates new disk and attach to compute
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ type DiskAttachRequest struct {
|
|||||||
type wrapperDiskAttachRequest struct {
|
type wrapperDiskAttachRequest struct {
|
||||||
DiskAttachRequest
|
DiskAttachRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskAttach attach disk to compute
|
// DiskAttach attach disk to compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskDelRequest struct {
|
|||||||
type wrapperDiskDelRequest struct {
|
type wrapperDiskDelRequest struct {
|
||||||
DiskDelRequest
|
DiskDelRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskDel delete disk and detach from compute
|
// DiskDel delete disk and detach from compute
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type DiskDetachRequest struct {
|
|||||||
type wrapperDiskDetachRequest struct {
|
type wrapperDiskDetachRequest struct {
|
||||||
DiskDetachRequest
|
DiskDetachRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskDetach detach disk from compute
|
// DiskDetach detach disk from compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskQOSRequest struct {
|
|||||||
type wrapperDiskQOSRequest struct {
|
type wrapperDiskQOSRequest struct {
|
||||||
DiskQOSRequest
|
DiskQOSRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskQOS change QoS of the disk
|
// DiskQOS change QoS of the disk
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskResizeRequest struct {
|
|||||||
type wrapperDiskResizeRequest struct {
|
type wrapperDiskResizeRequest struct {
|
||||||
DiskResizeRequest
|
DiskResizeRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskResize change disk size
|
// DiskResize change disk size
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskSwitchToReplicationRequest struct {
|
|||||||
type wrapperDiskSwitchToReplicationRequest struct {
|
type wrapperDiskSwitchToReplicationRequest struct {
|
||||||
DiskSwitchToReplicationRequest
|
DiskSwitchToReplicationRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskSwitchToReplication switches disk to it's replication
|
// DiskSwitchToReplication switches disk to it's replication
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type GuestAgentDisableRequest struct {
|
|||||||
type wrapperGuestAgentDisableRequest struct {
|
type wrapperGuestAgentDisableRequest struct {
|
||||||
GuestAgentDisableRequest
|
GuestAgentDisableRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable guest agent at a specific compute
|
// Disable guest agent at a specific compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type GuestAgentEnableRequest struct {
|
|||||||
type wrapperGuestAgentEnableRequest struct {
|
type wrapperGuestAgentEnableRequest struct {
|
||||||
GuestAgentEnableRequest
|
GuestAgentEnableRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable guest agent at a specific compute
|
// Enable guest agent at a specific compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type GuestAgentExecuteRequest struct {
|
|||||||
type wrapperGuestAgentExecuteRequest struct {
|
type wrapperGuestAgentExecuteRequest struct {
|
||||||
GuestAgentExecuteRequest
|
GuestAgentExecuteRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute guest agent command
|
// Execute guest agent command
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type GuestAgentFeatureUpdateRequest struct {
|
|||||||
type wrapperGuestAgentFeatureUpdateRequest struct {
|
type wrapperGuestAgentFeatureUpdateRequest struct {
|
||||||
GuestAgentFeatureUpdateRequest
|
GuestAgentFeatureUpdateRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Feature update guest agent
|
// Feature update guest agent
|
||||||
|
|||||||
@@ -63,6 +63,14 @@ type ListRequest struct {
|
|||||||
// Required: false
|
// Required: false
|
||||||
ZoneID uint64 `url:"zone_id,omitempty" json:"zone_id,omitempty"`
|
ZoneID uint64 `url:"zone_id,omitempty" json:"zone_id,omitempty"`
|
||||||
|
|
||||||
|
// Find by VM folder ID
|
||||||
|
// Required: false
|
||||||
|
FolderID uint64 `url:"folder_id,omitempty" json:"folder_id,omitempty"`
|
||||||
|
|
||||||
|
// Include computes from descendant folders.
|
||||||
|
// Required: false
|
||||||
|
IncludeDescendants interface{} `url:"include_descendants,omitempty" json:"include_descendants,omitempty" validate:"omitempty,isBool"`
|
||||||
|
|
||||||
// Page number
|
// Page number
|
||||||
// Required: false
|
// Required: false
|
||||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type MigrateToZoneRequest struct {
|
|||||||
type wrapperMigrateToZoneRequest struct {
|
type wrapperMigrateToZoneRequest struct {
|
||||||
MigrateToZoneRequest
|
MigrateToZoneRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MoveToRG moves compute instance to new resource group
|
// MoveToRG moves compute instance to new resource group
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ type MoveToRGRequest struct {
|
|||||||
type wrapperMoveToRGRequest struct {
|
type wrapperMoveToRGRequest struct {
|
||||||
MoveToRGRequest
|
MoveToRGRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MoveToRG moves compute instance to new resource group
|
// MoveToRG moves compute instance to new resource group
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ type NetAttachRequest struct {
|
|||||||
type wrapperNetAttachRequest struct {
|
type wrapperNetAttachRequest struct {
|
||||||
NetAttachRequest
|
NetAttachRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode" json:"asyncMode"`
|
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetAttach attaches network to compute and gets info about network
|
// NetAttach attaches network to compute and gets info about network
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type NetDetachRequest struct {
|
|||||||
type wrapperNetDetachRequest struct {
|
type wrapperNetDetachRequest struct {
|
||||||
NetDetachRequest
|
NetDetachRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetDetach detaches network from compute
|
// NetDetach detaches network from compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type PauseRequest struct {
|
|||||||
type wrapperPauseRequest struct {
|
type wrapperPauseRequest struct {
|
||||||
PauseRequest
|
PauseRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pause pause compute
|
// Pause pause compute
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ type PFWAddRequest struct {
|
|||||||
type wrapperPFWAddRequest struct {
|
type wrapperPFWAddRequest struct {
|
||||||
PFWAddRequest
|
PFWAddRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PFWAdd add port forward rule
|
// PFWAdd add port forward rule
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ type PFWDelRequest struct {
|
|||||||
type wrapperPFWDelRequest struct {
|
type wrapperPFWDelRequest struct {
|
||||||
PFWDelRequest
|
PFWDelRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PFWDel deletes port forward rule
|
// PFWDel deletes port forward rule
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ type PinToNodeRequest struct {
|
|||||||
type wrapperPinToNodeRequest struct {
|
type wrapperPinToNodeRequest struct {
|
||||||
PinToNodeRequest
|
PinToNodeRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PinToNode pin compute to current node
|
// PinToNode pin compute to current node
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type PowerCycleRequest struct {
|
|||||||
type wrapperPowerCycleRequest struct {
|
type wrapperPowerCycleRequest struct {
|
||||||
PowerCycleRequest
|
PowerCycleRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PowerCycle makes force stop and start compute
|
// PowerCycle makes force stop and start compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type RebootRequest struct {
|
|||||||
type wrapperRebootRequest struct {
|
type wrapperRebootRequest struct {
|
||||||
RebootRequest
|
RebootRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reboot reboots compute
|
// Reboot reboots compute
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ type RedeployRequest struct {
|
|||||||
type wrapperRedeployRequest struct {
|
type wrapperRedeployRequest struct {
|
||||||
RedeployRequest
|
RedeployRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redeploy redeploys compute
|
// Redeploy redeploys compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type ResetRequest struct {
|
|||||||
type wrapperResetRequest struct {
|
type wrapperResetRequest struct {
|
||||||
ResetRequest
|
ResetRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset resets compute
|
// Reset resets compute
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ func (r ResizeRequest) GetRAM() map[string]uint64 {
|
|||||||
type wrapperResizeRequest struct {
|
type wrapperResizeRequest struct {
|
||||||
ResizeRequest
|
ResizeRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize resizes compute instance
|
// Resize resizes compute instance
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type RestoreRequest struct {
|
|||||||
type wrapperRestoreRequest struct {
|
type wrapperRestoreRequest struct {
|
||||||
RestoreRequest
|
RestoreRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore restores compute from recycle bin
|
// Restore restores compute from recycle bin
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type ResumeRequest struct {
|
|||||||
type wrapperResumeRequest struct {
|
type wrapperResumeRequest struct {
|
||||||
ResumeRequest
|
ResumeRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resume resume Compute from paused state
|
// Resume resume Compute from paused state
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ type SnapshotCreateRequest struct {
|
|||||||
|
|
||||||
type wrapperSnapshotCreateRequest struct {
|
type wrapperSnapshotCreateRequest struct {
|
||||||
SnapshotCreateRequest
|
SnapshotCreateRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SnapshotCreate creates compute snapshot
|
// SnapshotCreate creates compute snapshot
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ type SnapshotDeleteRequest struct {
|
|||||||
type wrapperSnapshotDeleteRequeststruct struct {
|
type wrapperSnapshotDeleteRequeststruct struct {
|
||||||
SnapshotDeleteRequest
|
SnapshotDeleteRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SnapshotDelete deletes specified compute snapshot
|
// SnapshotDelete deletes specified compute snapshot
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type SnapshotRollbackRequest struct {
|
|||||||
|
|
||||||
type wrapperSnapshotRollbackRequest struct {
|
type wrapperSnapshotRollbackRequest struct {
|
||||||
SnapshotRollbackRequest
|
SnapshotRollbackRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SnapshotRollback rollbacks specified compute snapshot
|
// SnapshotRollback rollbacks specified compute snapshot
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type StartRequest struct {
|
|||||||
type wrapperStartRequest struct {
|
type wrapperStartRequest struct {
|
||||||
StartRequest
|
StartRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start starts compute
|
// Start starts compute
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type StopRequest struct {
|
|||||||
type wrapperStopRequest struct {
|
type wrapperStopRequest struct {
|
||||||
StopRequest
|
StopRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop stops compute
|
// Stop stops compute
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ type FromPlatformDiskRequest struct {
|
|||||||
|
|
||||||
type wrapperFromPlatformDiskRequest struct {
|
type wrapperFromPlatformDiskRequest struct {
|
||||||
FromPlatformDiskRequest
|
FromPlatformDiskRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// FromPlatformDisk creates template from platform disk in sync mode.
|
// FromPlatformDisk creates template from platform disk in sync mode.
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ type CreateRequest struct {
|
|||||||
|
|
||||||
type asyncWrapperCreateRequest struct {
|
type asyncWrapperCreateRequest struct {
|
||||||
CreateRequest
|
CreateRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create creates image from a media identified by URL
|
// Create creates image from a media identified by URL
|
||||||
|
|||||||
46
pkg/cloudapi/stpolicy/get_replication_profile.go
Normal file
46
pkg/cloudapi/stpolicy/get_replication_profile.go
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package stpolicy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetReplicationProfileRequest struct to get replication profile
|
||||||
|
type GetReplicationProfileRequest struct {
|
||||||
|
// ID of replication profile
|
||||||
|
// Required: true
|
||||||
|
ProfileID uint64 `url:"profile_id" json:"profile_id" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetReplicationProfile gets replication profile as an InfoReplicationProfile struct
|
||||||
|
func (sp StPolicy) GetReplicationProfile(ctx context.Context, req GetReplicationProfileRequest) (*InfoReplicationProfile, error) {
|
||||||
|
res, err := sp.GetReplicationProfileRaw(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
info := InfoReplicationProfile{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &info)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetReplicationProfileRaw gets replication profile as an array of bytes
|
||||||
|
func (sp StPolicy) GetReplicationProfileRaw(ctx context.Context, req GetReplicationProfileRequest) ([]byte, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/storage_policy/get_replication_profile"
|
||||||
|
|
||||||
|
res, err := sp.client.DecortApiCall(ctx, http.MethodGet, url, req)
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
65
pkg/cloudapi/stpolicy/list_replication_profile.go
Normal file
65
pkg/cloudapi/stpolicy/list_replication_profile.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package stpolicy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ListReplicationProfileRequest struct to get list of replication profiles
|
||||||
|
type ListReplicationProfileRequest struct {
|
||||||
|
// Page number
|
||||||
|
// Required: false
|
||||||
|
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||||
|
|
||||||
|
// Page size
|
||||||
|
// Required: false
|
||||||
|
Size uint64 `url:"size,omitempty" json:"size,omitempty"`
|
||||||
|
|
||||||
|
// Search by replication profile ID
|
||||||
|
// Required: false
|
||||||
|
ByID uint64 `url:"by_id,omitempty" json:"by_id,omitempty"`
|
||||||
|
|
||||||
|
// Search by replication profile name
|
||||||
|
// Required: false
|
||||||
|
Name string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
|
||||||
|
// Search by replication type
|
||||||
|
// Required: false
|
||||||
|
ReplicationType string `url:"replication_type,omitempty" json:"replication_type,omitempty"`
|
||||||
|
|
||||||
|
// Sort by one of supported fields, format ±<field>
|
||||||
|
// Required: false
|
||||||
|
SortBy string `url:"sort_by,omitempty" json:"sort_by,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListReplicationProfile gets list of replication profiles as a ListReplicationProfiles struct
|
||||||
|
func (sp StPolicy) ListReplicationProfile(ctx context.Context, req ListReplicationProfileRequest) (*ListReplicationProfiles, error) {
|
||||||
|
res, err := sp.ListReplicationProfileRaw(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
list := ListReplicationProfiles{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &list)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &list, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListReplicationProfileRaw gets list of replication profiles as an array of bytes
|
||||||
|
func (sp StPolicy) ListReplicationProfileRaw(ctx context.Context, req ListReplicationProfileRequest) ([]byte, error) {
|
||||||
|
if err := validators.ValidateRequest(req); err != nil {
|
||||||
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/storage_policy/list_replication_profile"
|
||||||
|
|
||||||
|
res, err := sp.client.DecortApiCall(ctx, http.MethodGet, url, req)
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
@@ -27,9 +27,12 @@ type ItemStoragePolicy struct {
|
|||||||
// Status of the storage policy
|
// Status of the storage policy
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
|
|
||||||
// Max IOPS for the sotrage policy
|
// Max IOPS for the storage policy
|
||||||
LimitIOPS uint64 `json:"limit_iops"`
|
LimitIOPS uint64 `json:"limit_iops"`
|
||||||
|
|
||||||
|
// ID of the replication profile
|
||||||
|
ReplicationProfileID uint64 `json:"replication_profile_id"`
|
||||||
|
|
||||||
// Storage policy ID
|
// Storage policy ID
|
||||||
StoragePolicyID uint64 `json:"storage_policy_id"`
|
StoragePolicyID uint64 `json:"storage_policy_id"`
|
||||||
|
|
||||||
@@ -56,9 +59,12 @@ type InfoStoragePolicy struct {
|
|||||||
// Status of the storage policy
|
// Status of the storage policy
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
|
|
||||||
// Max IOPS for the sotrage policy
|
// Max IOPS for the storage policy
|
||||||
LimitIOPS uint64 `json:"limit_iops"`
|
LimitIOPS uint64 `json:"limit_iops"`
|
||||||
|
|
||||||
|
// ID of the replication profile
|
||||||
|
ReplicationProfileID uint64 `json:"replication_profile_id"`
|
||||||
|
|
||||||
// ID of the storage policy
|
// ID of the storage policy
|
||||||
StoragePolicyID uint64 `json:"storage_policy_id"`
|
StoragePolicyID uint64 `json:"storage_policy_id"`
|
||||||
|
|
||||||
@@ -89,3 +95,72 @@ type Usage struct {
|
|||||||
// List of resource groups
|
// List of resource groups
|
||||||
Resgroups []uint64 `json:"resgroups"`
|
Resgroups []uint64 `json:"resgroups"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ListReplicationProfiles struct {
|
||||||
|
// List
|
||||||
|
Data []ItemReplicationProfile `json:"data"`
|
||||||
|
|
||||||
|
// Entry Count
|
||||||
|
EntryCount uint64 `json:"entryCount"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ItemReplicationProfile struct {
|
||||||
|
// ID of the replication profile
|
||||||
|
ID uint64 `json:"id"`
|
||||||
|
|
||||||
|
// GUID
|
||||||
|
GUID uint64 `json:"guid"`
|
||||||
|
|
||||||
|
// Name of the replication profile
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Replication types
|
||||||
|
ReplicationType []string `json:"replication_type"`
|
||||||
|
|
||||||
|
// Max copy rate
|
||||||
|
MAXCopyRate uint64 `json:"max_copy_rate"`
|
||||||
|
|
||||||
|
// List of schedules
|
||||||
|
Schedules ListSchedules `json:"schedules"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type InfoReplicationProfile struct {
|
||||||
|
// ID of the replication profile
|
||||||
|
ID uint64 `json:"id"`
|
||||||
|
|
||||||
|
// GUID
|
||||||
|
GUID uint64 `json:"guid"`
|
||||||
|
|
||||||
|
// Name of the replication profile
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Replication types
|
||||||
|
ReplicationType []string `json:"replication_type"`
|
||||||
|
|
||||||
|
// Max copy rate
|
||||||
|
MAXCopyRate uint64 `json:"max_copy_rate"`
|
||||||
|
|
||||||
|
// List of schedules
|
||||||
|
Schedules ListSchedules `json:"schedules"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListSchedules []Schedule
|
||||||
|
|
||||||
|
type Schedule struct {
|
||||||
|
// Type of the schedule
|
||||||
|
Type string `json:"type"`
|
||||||
|
|
||||||
|
// Name of the schedule
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Min interval
|
||||||
|
MINInterval uint64 `json:"min_interval"`
|
||||||
|
|
||||||
|
// Calendar of the schedule
|
||||||
|
Calendar Calendar `json:"calendar"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Calendar struct {
|
||||||
|
// Weekly schedule
|
||||||
|
Weekly map[string][]string `json:"weekly"`
|
||||||
|
}
|
||||||
|
|||||||
10
pkg/cloudapi/vmfolder.go
Normal file
10
pkg/cloudapi/vmfolder.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package cloudapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vmfolder"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Accessing the VMFolder method group
|
||||||
|
func (ca *CloudAPI) VMFolder() *vmfolder.VMFolder {
|
||||||
|
return vmfolder.New(ca.client)
|
||||||
|
}
|
||||||
47
pkg/cloudapi/vmfolder/add_acl_access.go
Normal file
47
pkg/cloudapi/vmfolder/add_acl_access.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants"
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AddACLAccessRequest adds ACL access to a vm folder
|
||||||
|
type AddACLAccessRequest struct {
|
||||||
|
// ID of a folder
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id" validate:"required"`
|
||||||
|
|
||||||
|
// User or group name to grant access
|
||||||
|
// Required: true
|
||||||
|
User string `url:"user" json:"user" validate:"required"`
|
||||||
|
|
||||||
|
// ID of a folder
|
||||||
|
// Required: true
|
||||||
|
Right string `url:"right" json:"right" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddACLAccess adds ACL access to a vm folder
|
||||||
|
func (v VMFolder) AddACLAccess(ctx context.Context, req AddACLAccessRequest) (bool, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/add_acl_access"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseBool(string(res))
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
42
pkg/cloudapi/vmfolder/computes_move.go
Normal file
42
pkg/cloudapi/vmfolder/computes_move.go
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ComputesMoveRequest struct to move computes to a vm folder
|
||||||
|
type ComputesMoveRequest struct {
|
||||||
|
// IDs of computes to move
|
||||||
|
// Required: true
|
||||||
|
ComputeIDs []uint64 `url:"compute_ids" json:"compute_ids" validate:"required"`
|
||||||
|
|
||||||
|
// Target vm folder ID
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComputesMove moves computes to a vm folder
|
||||||
|
func (v VMFolder) ComputesMove(ctx context.Context, req ComputesMoveRequest) (bool, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/computes_move"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseBool(string(res))
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
47
pkg/cloudapi/vmfolder/create.go
Normal file
47
pkg/cloudapi/vmfolder/create.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants"
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CreateRequest struct to create a vm folder
|
||||||
|
type CreateRequest struct {
|
||||||
|
// Resource Group ID
|
||||||
|
// Required: true
|
||||||
|
RGID uint64 `url:"rg_id" json:"rg_id" validate:"required"`
|
||||||
|
|
||||||
|
// Name
|
||||||
|
// Required: true
|
||||||
|
Name string `url:"name" json:"name" validate:"required"`
|
||||||
|
|
||||||
|
// Parent ID
|
||||||
|
// Required: false
|
||||||
|
ParentID uint64 `url:"parent_id,omitempty" json:"parent_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create creates a vm folder
|
||||||
|
func (v VMFolder) Create(ctx context.Context, req CreateRequest) (uint64, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return 0, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/create"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseUint(string(res), 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
43
pkg/cloudapi/vmfolder/del_acl_access.go
Normal file
43
pkg/cloudapi/vmfolder/del_acl_access.go
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants"
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeleteACLAccessRequest deletes ACL access from a vm folder
|
||||||
|
type DelACLAccessRequest struct {
|
||||||
|
// ID of a folder
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id" validate:"required"`
|
||||||
|
|
||||||
|
// User or group name to revoke access from
|
||||||
|
// Required: true
|
||||||
|
User string `url:"user" json:"user" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteACLAccess deletes ACL access from a vm foler
|
||||||
|
func (v VMFolder) DeleteACLAccess(ctx context.Context, req DelACLAccessRequest) (bool, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/del_acl_access"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseBool(string(res))
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
38
pkg/cloudapi/vmfolder/delete.go
Normal file
38
pkg/cloudapi/vmfolder/delete.go
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeleteRequest struct to delete a VM folder
|
||||||
|
type DeleteRequest struct {
|
||||||
|
// ID of a folder to delete
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes a vm folder
|
||||||
|
func (v VMFolder) Delete(ctx context.Context, req DeleteRequest) (bool, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/delete"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseBool(string(res))
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
46
pkg/cloudapi/vmfolder/get.go
Normal file
46
pkg/cloudapi/vmfolder/get.go
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetRequest struct to get detailed information about a vm folder
|
||||||
|
type GetRequest struct {
|
||||||
|
// ID of a folder
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets current configuration of the vm folder as a RecordVMFolder struct
|
||||||
|
func (v VMFolder) Get(ctx context.Context, req GetRequest) (*RecordVMFolder, error) {
|
||||||
|
res, err := v.GetRaw(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
info := RecordVMFolder{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &info)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRaw gets current configuration of the vm folder as an array of bytes
|
||||||
|
func (v VMFolder) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/get"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
55
pkg/cloudapi/vmfolder/list.go
Normal file
55
pkg/cloudapi/vmfolder/list.go
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ListRequest struct to get list of vm folders
|
||||||
|
type ListRequest struct {
|
||||||
|
// Resource group ID
|
||||||
|
// Required: true
|
||||||
|
RGID uint64 `url:"rg_id" json:"rg_id" validate:"required"`
|
||||||
|
|
||||||
|
// Page number
|
||||||
|
// Required: false
|
||||||
|
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||||
|
|
||||||
|
// Page size
|
||||||
|
// Required: false
|
||||||
|
Size uint64 `url:"size,omitempty" json:"size,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets list of all vm folders in a resource group as a ListVMFolder struct
|
||||||
|
func (v VMFolder) List(ctx context.Context, req ListRequest) (*ListVMFolder, error) {
|
||||||
|
|
||||||
|
res, err := v.ListRaw(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
list := ListVMFolder{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &list)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &list, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListRaw gets list of all vm folders in a resource group as an array of bytes
|
||||||
|
func (v VMFolder) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) {
|
||||||
|
|
||||||
|
if err := validators.ValidateRequest(req); err != nil {
|
||||||
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/list"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
79
pkg/cloudapi/vmfolder/models.go
Normal file
79
pkg/cloudapi/vmfolder/models.go
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
// Detailed information about a folder
|
||||||
|
type RecordVMFolder struct {
|
||||||
|
// ID
|
||||||
|
ID uint64 `json:"id"`
|
||||||
|
|
||||||
|
// RG ID
|
||||||
|
RGID uint64 `json:"rg_id"`
|
||||||
|
|
||||||
|
// GID
|
||||||
|
GID uint64 `json:"gid"`
|
||||||
|
|
||||||
|
// Name of a folder
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
ACL []ACL `json:"acl"`
|
||||||
|
|
||||||
|
// Time of creation
|
||||||
|
CreatedTime uint64 `json:"created_time"`
|
||||||
|
|
||||||
|
// Parent ID
|
||||||
|
ParentID uint64 `json:"parent_id"`
|
||||||
|
|
||||||
|
// Status of a folder
|
||||||
|
Status string `json:"status"`
|
||||||
|
|
||||||
|
// Compute IDs
|
||||||
|
ComputeIDs []uint64 `json:"compute_ids"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
type ACL struct {
|
||||||
|
// Explicit
|
||||||
|
Explicit bool `json:"explicit"`
|
||||||
|
|
||||||
|
// Right
|
||||||
|
Right string `json:"right"`
|
||||||
|
|
||||||
|
// Status
|
||||||
|
Status string `json:"status"`
|
||||||
|
|
||||||
|
// Type
|
||||||
|
Type string `json:"type"`
|
||||||
|
|
||||||
|
// User group ID
|
||||||
|
UserGroupID string `json:"userGroupId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List of vm folders
|
||||||
|
type ListVMFolder struct {
|
||||||
|
// Entry count
|
||||||
|
EntryCount uint64 `json:"entryCount"`
|
||||||
|
|
||||||
|
// Data
|
||||||
|
Data []ItemVMFolder `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Detailed information about a folder item
|
||||||
|
type ItemVMFolder struct {
|
||||||
|
// Folder ID
|
||||||
|
ID uint64 `json:"id"`
|
||||||
|
|
||||||
|
// Parent ID
|
||||||
|
ParentID uint64 `json:"parent_id"`
|
||||||
|
|
||||||
|
// Name
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
ACL []ACL `json:"acl"`
|
||||||
|
|
||||||
|
// Status
|
||||||
|
Status string `json:"status"`
|
||||||
|
|
||||||
|
// VM count
|
||||||
|
VMCount uint64 `json:"vm_count"`
|
||||||
|
}
|
||||||
42
pkg/cloudapi/vmfolder/move.go
Normal file
42
pkg/cloudapi/vmfolder/move.go
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// MoveRequest to move a vm folder to a compute
|
||||||
|
type MoveRequest struct {
|
||||||
|
// VM Folder ID
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id"`
|
||||||
|
|
||||||
|
// New parent folder ID
|
||||||
|
// Required: true
|
||||||
|
NewParentID uint64 `url:"new_parent_id" json:"new_parent_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move moves a vm folder to a compute
|
||||||
|
func (v VMFolder) Move(ctx context.Context, req MoveRequest) (bool, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/move"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseBool(string(res))
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
42
pkg/cloudapi/vmfolder/rename.go
Normal file
42
pkg/cloudapi/vmfolder/rename.go
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RenameRequest struct to rename a VM folder
|
||||||
|
type RenameRequest struct {
|
||||||
|
// ID of a folder to rename
|
||||||
|
// Required: true
|
||||||
|
FolderID uint64 `url:"folder_id" json:"folder_id" validate:"required"`
|
||||||
|
|
||||||
|
// A new name
|
||||||
|
// Required: true
|
||||||
|
Name string `url:"name" json:"name" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rename renames a vm folder
|
||||||
|
func (v VMFolder) Rename(ctx context.Context, req RenameRequest) (bool, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudapi/vmfolder/rename"
|
||||||
|
|
||||||
|
res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := strconv.ParseBool(string(res))
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
17
pkg/cloudapi/vmfolder/vmfolder.go
Normal file
17
pkg/cloudapi/vmfolder/vmfolder.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package vmfolder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"repository.basistech.ru/BASIS/decort-golang-sdk/interfaces"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Structure for creating request to VMFolder
|
||||||
|
type VMFolder struct {
|
||||||
|
client interfaces.Caller
|
||||||
|
}
|
||||||
|
|
||||||
|
// Builder for VMFolder endpoints
|
||||||
|
func New(client interfaces.Caller) *VMFolder {
|
||||||
|
return &VMFolder{
|
||||||
|
client,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,8 +2,8 @@ package apiaccess
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
)
|
)
|
||||||
@@ -20,23 +20,25 @@ type DescUpdateRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DescUpdate sets a new text description of the apiaccess group.
|
// DescUpdate sets a new text description of the apiaccess group.
|
||||||
func (a APIAccess) DescUpdate(ctx context.Context, req DescUpdateRequest) (bool, error) {
|
func (a APIAccess) DescUpdate(ctx context.Context, req DescUpdateRequest) (*ItemAPIAccess, error) {
|
||||||
err := validators.ValidateRequest(req)
|
err := validators.ValidateRequest(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, validators.ValidationErrors(validators.GetErrors(err))
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
url := "/cloudbroker/apiaccess/descUpdate"
|
url := "/cloudbroker/apiaccess/descUpdate"
|
||||||
|
|
||||||
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := strconv.ParseBool(string(res))
|
info := ItemAPIAccess{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return result, nil
|
return &info, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package apiaccess
|
package apiaccess
|
||||||
|
|
||||||
|
import "encoding/json"
|
||||||
|
|
||||||
type ItemAPIAccess struct {
|
type ItemAPIAccess struct {
|
||||||
// APIs
|
// APIs
|
||||||
APIs APIsEndpoints `json:"apis"`
|
APIs APIsEndpoints `json:"apis"`
|
||||||
@@ -88,21 +90,50 @@ type APIsEndpoints struct {
|
|||||||
// CloudBroker endpoints
|
// CloudBroker endpoints
|
||||||
CloudBroker CloudBrokerEndpoints `json:"cloudbroker,omitempty"`
|
CloudBroker CloudBrokerEndpoints `json:"cloudbroker,omitempty"`
|
||||||
|
|
||||||
// LibCloud endpoints
|
// SDN endpoints
|
||||||
LibCloud LibCloudEndpoints `json:"libcloud,omitempty"`
|
SDN SDNEndpoints `json:"sdn,omitempty"`
|
||||||
|
|
||||||
// System endpoints
|
// System endpoints
|
||||||
System SystemEndpoints `json:"system,omitempty"`
|
System SystemEndpoints `json:"system,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalJSON omits empty namespaces, so that "{}" is not sent in requests.
|
||||||
|
func (a APIsEndpoints) MarshalJSON() ([]byte, error) {
|
||||||
|
namespaces := []struct {
|
||||||
|
key string
|
||||||
|
value interface{}
|
||||||
|
}{
|
||||||
|
{"cloudapi", a.CloudAPI},
|
||||||
|
{"cloudbroker", a.CloudBroker},
|
||||||
|
{"sdn", a.SDN},
|
||||||
|
{"system", a.System},
|
||||||
|
}
|
||||||
|
|
||||||
|
result := make(map[string]json.RawMessage, len(namespaces))
|
||||||
|
|
||||||
|
for _, ns := range namespaces {
|
||||||
|
data, err := json.Marshal(ns.value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if string(data) == "{}" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
result[ns.key] = data
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(result)
|
||||||
|
}
|
||||||
|
|
||||||
type CloudAPIEndpoints struct {
|
type CloudAPIEndpoints struct {
|
||||||
Account []string `json:"account,omitempty"`
|
Account []string `json:"account,omitempty"`
|
||||||
|
Audit []string `json:"audit,omitempty"`
|
||||||
BService []string `json:"bservice,omitempty"`
|
BService []string `json:"bservice,omitempty"`
|
||||||
CloudSpace []string `json:"cloudspace,omitempty"`
|
|
||||||
Compute []string `json:"compute,omitempty"`
|
Compute []string `json:"compute,omitempty"`
|
||||||
ComputeCI []string `json:"computeci,omitempty"`
|
|
||||||
Disks []string `json:"disks,omitempty"`
|
Disks []string `json:"disks,omitempty"`
|
||||||
DPDK []string `json:"dpdk,omitempty"`
|
DPDKNet []string `json:"dpdknet,omitempty"`
|
||||||
ExtNet []string `json:"extnet,omitempty"`
|
ExtNet []string `json:"extnet,omitempty"`
|
||||||
FLIPGroup []string `json:"flipgroup,omitempty"`
|
FLIPGroup []string `json:"flipgroup,omitempty"`
|
||||||
GPU []string `json:"gpu,omitempty"`
|
GPU []string `json:"gpu,omitempty"`
|
||||||
@@ -112,18 +143,20 @@ type CloudAPIEndpoints struct {
|
|||||||
KVMX86 []string `json:"kvmx86,omitempty"`
|
KVMX86 []string `json:"kvmx86,omitempty"`
|
||||||
LB []string `json:"lb,omitempty"`
|
LB []string `json:"lb,omitempty"`
|
||||||
Loactions []string `json:"locations,omitempty"`
|
Loactions []string `json:"locations,omitempty"`
|
||||||
Machine []string `json:"machine,omitempty"`
|
|
||||||
Openshift []string `json:"openshift,omitempty"`
|
|
||||||
OpenshiftCI []string `json:"openshiftci,omitempty"`
|
|
||||||
PCIDevice []string `json:"pcidevice,omitempty"`
|
PCIDevice []string `json:"pcidevice,omitempty"`
|
||||||
PortForwarding []string `json:"portforwarding,omitempty"`
|
|
||||||
Prometheus []string `json:"prometheus,omitempty"`
|
Prometheus []string `json:"prometheus,omitempty"`
|
||||||
RG []string `json:"rg,omitempty"`
|
RG []string `json:"rg,omitempty"`
|
||||||
Sizes []string `json:"sizes,omitempty"`
|
SecurityGroup []string `json:"security_group,omitempty"`
|
||||||
|
SEP []string `json:"sep,omitempty"`
|
||||||
|
StoragePolicy []string `json:"storage_policy,omitempty"`
|
||||||
Tasks []string `json:"tasks,omitempty"`
|
Tasks []string `json:"tasks,omitempty"`
|
||||||
|
Trunk []string `json:"trunk,omitempty"`
|
||||||
User []string `json:"user,omitempty"`
|
User []string `json:"user,omitempty"`
|
||||||
|
VFPool []string `json:"vfpool,omitempty"`
|
||||||
VGPU []string `json:"vgpu,omitempty"`
|
VGPU []string `json:"vgpu,omitempty"`
|
||||||
VINS []string `json:"vins,omitempty"`
|
VINS []string `json:"vins,omitempty"`
|
||||||
|
VMFolder []string `json:"vmfolder,omitempty"`
|
||||||
|
Zone []string `json:"zone,omitempty"`
|
||||||
All bool `json:"ALL,omitempty"`
|
All bool `json:"ALL,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,72 +166,83 @@ type CloudBrokerEndpoints struct {
|
|||||||
Audit interface{} `json:"audit,omitempty"`
|
Audit interface{} `json:"audit,omitempty"`
|
||||||
AuditBeat []string `json:"auditbeat,omitempty"`
|
AuditBeat []string `json:"auditbeat,omitempty"`
|
||||||
AuditCollector []string `json:"auditcollector,omitempty"`
|
AuditCollector []string `json:"auditcollector,omitempty"`
|
||||||
|
Backup []string `json:"backup,omitempty"`
|
||||||
BackupCreator []string `json:"backupcreator,omitempty"`
|
BackupCreator []string `json:"backupcreator,omitempty"`
|
||||||
BService []string `json:"bservice,omitempty"`
|
BService []string `json:"bservice,omitempty"`
|
||||||
CloudSpace []string `json:"cloudspace,omitempty"`
|
|
||||||
Compute []string `json:"compute,omitempty"`
|
Compute []string `json:"compute,omitempty"`
|
||||||
ComputeCI []string `json:"computeci,omitempty"`
|
|
||||||
Desnode []string `json:"desnode,omitempty"`
|
|
||||||
Diagnostics []string `json:"diagnostics,omitempty"`
|
|
||||||
Disks []string `json:"disks,omitempty"`
|
Disks []string `json:"disks,omitempty"`
|
||||||
DPDK []string `json:"dpdk,omitempty"`
|
DPDKNet []string `json:"dpdknet,omitempty"`
|
||||||
Eco []string `json:"eco,omitempty"`
|
Eco []string `json:"eco,omitempty"`
|
||||||
ExtNet []string `json:"extnet,omitempty"`
|
ExtNet []string `json:"extnet,omitempty"`
|
||||||
FlIPgroup []string `json:"flipgroup,omitempty"`
|
FlIPgroup []string `json:"flipgroup,omitempty"`
|
||||||
Grid []string `json:"grid,omitempty"`
|
Grid []string `json:"grid,omitempty"`
|
||||||
Group []string `json:"group,omitempty"`
|
Group []string `json:"group,omitempty"`
|
||||||
Health []string `json:"health,omitempty"`
|
Health []string `json:"health,omitempty"`
|
||||||
IaaS []string `json:"iaas,omitempty"`
|
|
||||||
Image []string `json:"image,omitempty"`
|
Image []string `json:"image,omitempty"`
|
||||||
Job interface{} `json:"job,omitempty"`
|
Job interface{} `json:"job,omitempty"`
|
||||||
K8CI []string `json:"k8ci,omitempty"`
|
K8CI []string `json:"k8ci,omitempty"`
|
||||||
K8S []string `json:"k8s,omitempty"`
|
K8S []string `json:"k8s,omitempty"`
|
||||||
KVMX86 []string `json:"kvmx86,omitempty"`
|
KVMX86 []string `json:"kvmx86,omitempty"`
|
||||||
LB []string `json:"lb,omitempty"`
|
LB []string `json:"lb,omitempty"`
|
||||||
Machine []string `json:"machine,omitempty"`
|
|
||||||
Metering []string `json:"metering,omitempty"`
|
Metering []string `json:"metering,omitempty"`
|
||||||
Milestones []string `json:"milestones,omitempty"`
|
Milestones []string `json:"milestones,omitempty"`
|
||||||
Openshift []string `json:"openshift,omitempty"`
|
Node []string `json:"node,omitempty"`
|
||||||
OpenshiftCI []string `json:"openshiftci,omitempty"`
|
|
||||||
Ovsnode []string `json:"ovsnode,omitempty"`
|
|
||||||
PCIDevice []string `json:"pcidevice,omitempty"`
|
PCIDevice []string `json:"pcidevice,omitempty"`
|
||||||
PGPU []string `json:"pgpu,omitempty"`
|
PGPU []string `json:"pgpu,omitempty"`
|
||||||
Prometheus []string `json:"prometheus,omitempty"`
|
Prometheus []string `json:"prometheus,omitempty"`
|
||||||
QOS []string `json:"qos,omitempty"`
|
|
||||||
Resmon interface{} `json:"resmon,omitempty"`
|
Resmon interface{} `json:"resmon,omitempty"`
|
||||||
RG []string `json:"rg,omitempty"`
|
RG []string `json:"rg,omitempty"`
|
||||||
|
SecurityGroup []string `json:"security_group,omitempty"`
|
||||||
Sep []string `json:"sep,omitempty"`
|
Sep []string `json:"sep,omitempty"`
|
||||||
Node []string `json:"node,omitempty"`
|
StoragePolicy []string `json:"storage_policy,omitempty"`
|
||||||
Tasks []string `json:"tasks,omitempty"`
|
Tasks []string `json:"tasks,omitempty"`
|
||||||
TLock []string `json:"tlock,omitempty"`
|
TLock []string `json:"tlock,omitempty"`
|
||||||
|
Trunk []string `json:"trunk,omitempty"`
|
||||||
User []string `json:"user,omitempty"`
|
User []string `json:"user,omitempty"`
|
||||||
|
VFPool []string `json:"vfpool,omitempty"`
|
||||||
VGPU []string `json:"vgpu,omitempty"`
|
VGPU []string `json:"vgpu,omitempty"`
|
||||||
VINS []string `json:"vins,omitempty"`
|
VINS []string `json:"vins,omitempty"`
|
||||||
|
VMFolder []string `json:"vmfolder,omitempty"`
|
||||||
VNFDev []string `json:"vnfdev,omitempty"`
|
VNFDev []string `json:"vnfdev,omitempty"`
|
||||||
ZeroAccess []string `json:"zeroaccess,omitempty"`
|
ZeroAccess []string `json:"zeroaccess,omitempty"`
|
||||||
|
Zone []string `json:"zone,omitempty"`
|
||||||
All bool `json:"ALL,omitempty"`
|
All bool `json:"ALL,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type LibCloudEndpoints struct {
|
type SDNEndpoints struct {
|
||||||
Libvirt []string `json:"libvirt,omitempty"`
|
AccessGroup []string `json:"access_group,omitempty"`
|
||||||
|
AddressPool []string `json:"address_pool,omitempty"`
|
||||||
|
DefaultSecurityPolicy []string `json:"default_security_policy,omitempty"`
|
||||||
|
ExternalNetwork []string `json:"external_network,omitempty"`
|
||||||
|
FloatingIP []string `json:"floating_ip,omitempty"`
|
||||||
|
Hypervisor []string `json:"hypervisor,omitempty"`
|
||||||
|
L2ExternalNetwork []string `json:"l2_external_network,omitempty"`
|
||||||
|
LogicalPort []string `json:"logical_port,omitempty"`
|
||||||
|
NetworkObjectGroup []string `json:"network_object_group,omitempty"`
|
||||||
|
Router []string `json:"router,omitempty"`
|
||||||
|
RouterGatewayPort []string `json:"router/gateway_port,omitempty"`
|
||||||
|
RouterPolicies []string `json:"router/policies,omitempty"`
|
||||||
|
RouterRouterPort []string `json:"router/router_port,omitempty"`
|
||||||
|
RouterStaticRoute []string `json:"router/static_route,omitempty"`
|
||||||
|
SecurityPolicy []string `json:"security_policy,omitempty"`
|
||||||
|
SecurityPolicyRule []string `json:"security_policy/rule,omitempty"`
|
||||||
|
SecurityRule []string `json:"security_rule,omitempty"`
|
||||||
|
Segment []string `json:"segment,omitempty"`
|
||||||
|
Version []string `json:"version,omitempty"`
|
||||||
All bool `json:"ALL,omitempty"`
|
All bool `json:"ALL,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SystemEndpoints struct {
|
type SystemEndpoints struct {
|
||||||
AgentController []string `json:"agentcontroller,omitempty"`
|
|
||||||
Alerts []string `json:"alerts,omitempty"`
|
|
||||||
Audits []string `json:"audits,omitempty"`
|
Audits []string `json:"audits,omitempty"`
|
||||||
|
Cache []string `json:"cache,omitempty"`
|
||||||
ContentManager []string `json:"contentmanager,omitempty"`
|
ContentManager []string `json:"contentmanager,omitempty"`
|
||||||
DocGenerator []string `json:"docgenerator,omitempty"`
|
DocGenerator []string `json:"docgenerator,omitempty"`
|
||||||
EmailSender []string `json:"emailsender,omitempty"`
|
EmailSender []string `json:"emailsender,omitempty"`
|
||||||
ErrorConditionHandler []string `json:"errorconditionhandler,omitempty"`
|
|
||||||
GridManager []string `json:"gridmanager,omitempty"`
|
GridManager []string `json:"gridmanager,omitempty"`
|
||||||
Health []string `json:"health,omitempty"`
|
Health []string `json:"health,omitempty"`
|
||||||
Info []string `json:"info,omitempty"`
|
Info []string `json:"info,omitempty"`
|
||||||
|
InfoWellknown []string `json:"info/wellknown,omitempty"`
|
||||||
InfoMGR []string `json:"infomgr,omitempty"`
|
InfoMGR []string `json:"infomgr,omitempty"`
|
||||||
Job []string `json:"job,omitempty"`
|
|
||||||
Log []string `json:"log,omitempty"`
|
|
||||||
Logo []string `json:"logo,omitempty"`
|
|
||||||
Oauth []string `json:"oauth,omitempty"`
|
Oauth []string `json:"oauth,omitempty"`
|
||||||
Task []string `json:"task,omitempty"`
|
Task []string `json:"task,omitempty"`
|
||||||
UserManager []string `json:"usermanager,omitempty"`
|
UserManager []string `json:"usermanager,omitempty"`
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||||
)
|
)
|
||||||
@@ -27,10 +26,10 @@ type wrapperUpdateRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update updates apis of apiaccess group.
|
// Update updates apis of apiaccess group.
|
||||||
func (a APIAccess) Update(ctx context.Context, req UpdateRequest) (bool, error) {
|
func (a APIAccess) Update(ctx context.Context, req UpdateRequest) (*ItemAPIAccess, error) {
|
||||||
err := validators.ValidateRequest(req)
|
err := validators.ValidateRequest(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, validators.ValidationErrors(validators.GetErrors(err))
|
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
url := "/cloudbroker/apiaccess/update"
|
url := "/cloudbroker/apiaccess/update"
|
||||||
@@ -41,20 +40,22 @@ func (a APIAccess) Update(ctx context.Context, req UpdateRequest) (bool, error)
|
|||||||
|
|
||||||
apiJSON, err := json.Marshal(&req.APIs)
|
apiJSON, err := json.Marshal(&req.APIs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
reqWrapped.APIString = string(apiJSON)
|
reqWrapped.APIString = string(apiJSON)
|
||||||
|
|
||||||
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped)
|
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := strconv.ParseBool(string(res))
|
info := ItemAPIAccess{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return result, nil
|
return &info, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ type CreateDiskBackupRequest struct {
|
|||||||
type wrapperCreateDiskBackupRequest struct {
|
type wrapperCreateDiskBackupRequest struct {
|
||||||
CreateDiskBackupRequest
|
CreateDiskBackupRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDiskBackup creates disk backup
|
// CreateDiskBackup creates disk backup
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ type CreateDisksBackupRequest struct {
|
|||||||
type wrapperCreateDisksBackupRequest struct {
|
type wrapperCreateDisksBackupRequest struct {
|
||||||
CreateDisksBackupRequest
|
CreateDisksBackupRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDisksBackup creates disks backup
|
// CreateDisksBackup creates disks backup
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ type DeleteDiskBackupRequest struct {
|
|||||||
type wrapperDeleteDiskBackupRequest struct {
|
type wrapperDeleteDiskBackupRequest struct {
|
||||||
DeleteDiskBackupRequest
|
DeleteDiskBackupRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteDiskBackup deletes disk backup
|
// DeleteDiskBackup deletes disk backup
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ type RestoreDiskFromBackupRequest struct {
|
|||||||
type wrapperRestoreDiskFromBackupRequest struct {
|
type wrapperRestoreDiskFromBackupRequest struct {
|
||||||
RestoreDiskFromBackupRequest
|
RestoreDiskFromBackupRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RestoreDiskFromBackup restores disk from backup
|
// RestoreDiskFromBackup restores disk from backup
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ type RestoreDisksFromBackupRequest struct {
|
|||||||
type wrapperRestoreDisksFromBackupRequest struct {
|
type wrapperRestoreDisksFromBackupRequest struct {
|
||||||
RestoreDisksFromBackupRequest
|
RestoreDisksFromBackupRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RestoreDisksFromBackup restores disks from backup
|
// RestoreDisksFromBackup restores disks from backup
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ type AbortSharedSnapshotMergeRequest struct {
|
|||||||
|
|
||||||
type wrapperAbortSharedSnapshotMergeRequest struct {
|
type wrapperAbortSharedSnapshotMergeRequest struct {
|
||||||
AbortSharedSnapshotMergeRequest
|
AbortSharedSnapshotMergeRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AbortSharedSnapshotMerge shared snapshots merge abort
|
// AbortSharedSnapshotMerge shared snapshots merge abort
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package compute
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
@@ -42,6 +43,17 @@ type AffinityRuleAddRequest struct {
|
|||||||
// Value that must match the key to be taken into account when analyzing this rule
|
// Value that must match the key to be taken into account when analyzing this rule
|
||||||
// Required: true
|
// Required: true
|
||||||
Value string `url:"value" json:"value" validate:"required"`
|
Value string `url:"value" json:"value" validate:"required"`
|
||||||
|
|
||||||
|
// Migrate compute according to the rule
|
||||||
|
// Default: false
|
||||||
|
// Required: false
|
||||||
|
Migrate bool `url:"migrate" json:"migrate"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type wrapperAffinityRuleAddRequest struct {
|
||||||
|
AffinityRuleAddRequest
|
||||||
|
|
||||||
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AffinityRuleAdd adds affinity rule
|
// AffinityRuleAdd adds affinity rule
|
||||||
@@ -53,7 +65,12 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
|||||||
|
|
||||||
url := "/cloudbroker/compute/affinityRuleAdd"
|
url := "/cloudbroker/compute/affinityRuleAdd"
|
||||||
|
|
||||||
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
aReq := wrapperAffinityRuleAddRequest{
|
||||||
|
AffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@@ -65,3 +82,32 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AsyncAffinityRuleAdd add affinity rule in async mode
|
||||||
|
func (c Compute) AsyncAffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest) (string, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudbroker/compute/affinityRuleAdd"
|
||||||
|
|
||||||
|
aReq := wrapperAffinityRuleAddRequest{
|
||||||
|
AffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
var resp string
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package compute
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
@@ -40,6 +41,17 @@ type AntiAffinityRuleAddRequest struct {
|
|||||||
// Value that must match the key to be taken into account when analyzing this rule
|
// Value that must match the key to be taken into account when analyzing this rule
|
||||||
// Required: true
|
// Required: true
|
||||||
Value string `url:"value" json:"value" validate:"required"`
|
Value string `url:"value" json:"value" validate:"required"`
|
||||||
|
|
||||||
|
// Migrate compute according to the rule
|
||||||
|
// Default: false
|
||||||
|
// Required: false
|
||||||
|
Migrate bool `url:"migrate" json:"migrate"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type wrapperAntiAffinityRuleAddRequest struct {
|
||||||
|
AntiAffinityRuleAddRequest
|
||||||
|
|
||||||
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AntiAffinityRuleAdd adds anti affinity rule
|
// AntiAffinityRuleAdd adds anti affinity rule
|
||||||
@@ -51,7 +63,12 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
|||||||
|
|
||||||
url := "/cloudbroker/compute/antiAffinityRuleAdd"
|
url := "/cloudbroker/compute/antiAffinityRuleAdd"
|
||||||
|
|
||||||
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
aReq := wrapperAntiAffinityRuleAddRequest{
|
||||||
|
AntiAffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@@ -63,3 +80,32 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AsyncAntiAffinityRuleAdd add anti affinity rule in async mode
|
||||||
|
func (c Compute) AsyncAntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAddRequest) (string, error) {
|
||||||
|
err := validators.ValidateRequest(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", validators.ValidationErrors(validators.GetErrors(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
url := "/cloudbroker/compute/antiAffinityRuleAdd"
|
||||||
|
|
||||||
|
aReq := wrapperAntiAffinityRuleAddRequest{
|
||||||
|
AntiAffinityRuleAddRequest: req,
|
||||||
|
AsyncMode: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, aReq)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
var resp string
|
||||||
|
|
||||||
|
err = json.Unmarshal(res, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type CDEjectRequest struct {
|
|||||||
type wrapperCDEjectRequest struct {
|
type wrapperCDEjectRequest struct {
|
||||||
CDEjectRequest
|
CDEjectRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CDEject ejects CD image to compute's CD-ROM
|
// CDEject ejects CD image to compute's CD-ROM
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ type CDInsertRequest struct {
|
|||||||
type wrapperCDInsertRequest struct {
|
type wrapperCDInsertRequest struct {
|
||||||
CDInsertRequest
|
CDInsertRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CDInsert inserts new CD image to compute's CD-ROM
|
// CDInsert inserts new CD image to compute's CD-ROM
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ type ChangeIPRequest struct {
|
|||||||
type wrapperChangeIPRequest struct {
|
type wrapperChangeIPRequest struct {
|
||||||
ChangeIPRequest
|
ChangeIPRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeIP change reserved IP for compute instance
|
// ChangeIP change reserved IP for compute instance
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ type ChangeLinkStateRequest struct {
|
|||||||
type wrapperChangeLinkStateRequest struct {
|
type wrapperChangeLinkStateRequest struct {
|
||||||
ChangeLinkStateRequest
|
ChangeLinkStateRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeLinkState changes the status link virtual of compute
|
// ChangeLinkState changes the status link virtual of compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type ChangeMTURequest struct {
|
|||||||
type wrapperChangeMTURequest struct {
|
type wrapperChangeMTURequest struct {
|
||||||
ChangeMTURequest
|
ChangeMTURequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeMTU change MTU for compute instance
|
// ChangeMTU change MTU for compute instance
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type ChangeQoSPoliciesRequest struct {
|
|||||||
type wrapperChangeQoSPoliciesRequest struct {
|
type wrapperChangeQoSPoliciesRequest struct {
|
||||||
ChangeQoSPoliciesRequest
|
ChangeQoSPoliciesRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeQoSPolicies change qos policies for compute
|
// ChangeQoSPolicies change qos policies for compute
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ type ChangeSecGroupsRequest struct {
|
|||||||
type wrapperChangeSecGroupsRequest struct {
|
type wrapperChangeSecGroupsRequest struct {
|
||||||
ChangeSecGroupsRequest
|
ChangeSecGroupsRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeSecGroups changes security groups for compute
|
// ChangeSecGroups changes security groups for compute
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ type CloneRequest struct {
|
|||||||
type wrapperCloneRequest struct {
|
type wrapperCloneRequest struct {
|
||||||
CloneRequest
|
CloneRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode" json:"asyncMode"`
|
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clone clones compute instance
|
// Clone clones compute instance
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type CreateTemplateRequest struct {
|
|||||||
type wrapperCreateTemplateRequest struct {
|
type wrapperCreateTemplateRequest struct {
|
||||||
CreateTemplateRequest
|
CreateTemplateRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateTemplate create template from compute instance
|
// CreateTemplate create template from compute instance
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ type CreateTemplateFromBlankRequest struct {
|
|||||||
|
|
||||||
type wrapperCreateTemplateFromBlankRequest struct {
|
type wrapperCreateTemplateFromBlankRequest struct {
|
||||||
CreateTemplateFromBlankRequest
|
CreateTemplateFromBlankRequest
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateTemplateFromBlank creates template from boot disk of current compute in sync mode.
|
// CreateTemplateFromBlank creates template from boot disk of current compute in sync mode.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DeleteRequest struct {
|
|||||||
type wrapperDeleteRequest struct {
|
type wrapperDeleteRequest struct {
|
||||||
DeleteRequest
|
DeleteRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete deletes compute
|
// Delete deletes compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type DisableRequest struct {
|
|||||||
type wrapperDisableRequest struct {
|
type wrapperDisableRequest struct {
|
||||||
DisableRequest
|
DisableRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable disables compute
|
// Disable disables compute
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ type DiskAddRequest struct {
|
|||||||
type wrapperDiskAddRequest struct {
|
type wrapperDiskAddRequest struct {
|
||||||
DiskAddRequest
|
DiskAddRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskAdd creates new disk and attach to compute
|
// DiskAdd creates new disk and attach to compute
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ type DiskAttachRequest struct {
|
|||||||
type wrapperDiskAttachRequest struct {
|
type wrapperDiskAttachRequest struct {
|
||||||
DiskAttachRequest
|
DiskAttachRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskAttach attach disk to compute
|
// DiskAttach attach disk to compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskDelRequest struct {
|
|||||||
type wrapperDiskDelRequest struct {
|
type wrapperDiskDelRequest struct {
|
||||||
DiskDelRequest
|
DiskDelRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskDel deletes disk and detaches it from compute
|
// DiskDel deletes disk and detaches it from compute
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ type DiskDetachRequest struct {
|
|||||||
type wrapperDiskDetachRequest struct {
|
type wrapperDiskDetachRequest struct {
|
||||||
DiskDetachRequest
|
DiskDetachRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskDetach detaches disk from compute
|
// DiskDetach detaches disk from compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskQOSRequest struct {
|
|||||||
type wrapperDiskQOSRequest struct {
|
type wrapperDiskQOSRequest struct {
|
||||||
DiskQOSRequest
|
DiskQOSRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskQOS changes QOS of the disk
|
// DiskQOS changes QOS of the disk
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskResizeRequest struct {
|
|||||||
type wrapperDiskResizeRequest struct {
|
type wrapperDiskResizeRequest struct {
|
||||||
DiskResizeRequest
|
DiskResizeRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskResize changes disk size
|
// DiskResize changes disk size
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type DiskSwitchToReplicationRequest struct {
|
|||||||
type wrapperDiskSwitchToReplicationRequest struct {
|
type wrapperDiskSwitchToReplicationRequest struct {
|
||||||
DiskSwitchToReplicationRequest
|
DiskSwitchToReplicationRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiskSwitchToReplication switches disk to it's replication
|
// DiskSwitchToReplication switches disk to it's replication
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type GuestAgentDisableRequest struct {
|
|||||||
type wrapperGuestAgentDisableRequest struct {
|
type wrapperGuestAgentDisableRequest struct {
|
||||||
GuestAgentDisableRequest
|
GuestAgentDisableRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable guest agent at a specific compute
|
// Disable guest agent at a specific compute
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type GuestAgentEnableRequest struct {
|
|||||||
type wrapperGuestAgentEnableRequest struct {
|
type wrapperGuestAgentEnableRequest struct {
|
||||||
GuestAgentEnableRequest
|
GuestAgentEnableRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable guest agent at a specific compute
|
// Enable guest agent at a specific compute
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type GuestAgentExecuteRequest struct {
|
|||||||
type wrapperGuestAgentExecuteRequest struct {
|
type wrapperGuestAgentExecuteRequest struct {
|
||||||
GuestAgentExecuteRequest
|
GuestAgentExecuteRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute guest agent command
|
// Execute guest agent command
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type GuestAgentFeatureUpdateRequest struct {
|
|||||||
type wrapperGuestAgentFeatureUpdateRequest struct {
|
type wrapperGuestAgentFeatureUpdateRequest struct {
|
||||||
GuestAgentFeatureUpdateRequest
|
GuestAgentFeatureUpdateRequest
|
||||||
|
|
||||||
AsyncMode bool `url:"asyncMode"`
|
AsyncMode bool `url:"async_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Feature update guest agent
|
// Feature update guest agent
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user