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
|
||||
@@ -18,31 +18,98 @@
|
||||
| `rg/AccessRevoke` | :heavy_check_mark: | :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 |
|
||||
|
||||
|
||||
#### locations
|
||||
#### compute
|
||||
| Идентификатор задачи | Описание |
|
||||
| --- | --- |
|
||||
| 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-1033 | Методы `AsyncCreateInAccount`, `AsyncCreateInRG`, `AsyncEnable`, `AsyncVNFDevRedeploy`, `AsyncVNFDevRestart` и `AsyncVNFDevStart` в cloudbroker/vins |
|
||||
| BGOS-1033 | Структура запроса `DisableRequest` и метод `Disable` в cloudapi/vins |
|
||||
| BGOS-1033 | Структура запроса `EnableRequest` и метод `Enable` в cloudapi/vins |
|
||||
| BGOS-1048 | Опциональное поле `IncludeArchive` в структуру запроса `ListRequest` в cloudbroker/session |
|
||||
|
||||
### Исправлено
|
||||
#### 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
|
||||
| Идентификатор задачи | Описание |
|
||||
| --- | --- |
|
||||
| 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` - получение информации о транковых портах;
|
||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||
- `VINS` - управление виртуальными изолированными сетями;
|
||||
- `VMFolder` – управление директориями ВМ;
|
||||
- `VGPU` - управление виртуальными графическими процессорами;
|
||||
- `Zone` - управление зонами.
|
||||
|
||||
@@ -175,7 +176,8 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
|
||||
- `User` - управление пользователями (индивидуально);
|
||||
- `VGPU` - управление виртуальными графическими процессорами;
|
||||
- `VFPool` - управление пулом виртуальных сетевых функций;
|
||||
- `VINS` - управление виртуальными изолированными сетями.
|
||||
- `VINS` - управление виртуальными изолированными сетями;
|
||||
- `VMFolder` – управление директориями ВМ;
|
||||
- `Zone` - управление зонами.
|
||||
|
||||
### SDN
|
||||
@@ -352,6 +354,7 @@ func main() {
|
||||
- `pkg/cloudapi/vfpool` - для `VFPool`
|
||||
- `pkg/cloudapi/vins` - для `VINS`
|
||||
- `pkg/cloudapi/vgpu` - для `VGPU`
|
||||
- `pkg/cloudapi/vmfolder` - для `VMFolder`
|
||||
- `pkg/cloudapi/zone` - для `Zone`
|
||||
- **cloudbroker**:
|
||||
- `pkg/cloudbroker/account` - для `Account`
|
||||
@@ -387,6 +390,7 @@ func main() {
|
||||
- `pkg/cloudbroker/vgpu` - для `VGPU`
|
||||
- `pkg/cloudbroker/vfpool` - для `VFPool`
|
||||
- `pkg/cloudbroker/vins` - для `VINS`
|
||||
- `pkg/cloudbroker/vmfolder` - для `VMFolder`
|
||||
- `pkg/cloudbroker/zone` - для `Zone`
|
||||
- **sdn**:
|
||||
- `pkg/sdn/acsgroups` - для `Access groups`
|
||||
|
||||
@@ -20,7 +20,7 @@ type AbortSharedSnapshotMergeRequest struct {
|
||||
|
||||
type wrapperAbortSharedSnapshotMergeRequest struct {
|
||||
AbortSharedSnapshotMergeRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||
}
|
||||
|
||||
// AbortSharedSnapshotMerge shared snapshots merge abort
|
||||
|
||||
@@ -2,6 +2,7 @@ package compute
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
@@ -40,6 +41,17 @@ type AffinityRuleAddRequest struct {
|
||||
// Value that must match the key to be taken into account when analyzing this rule
|
||||
// Required: true
|
||||
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
|
||||
@@ -51,7 +63,12 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
||||
|
||||
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 {
|
||||
return false, err
|
||||
}
|
||||
@@ -63,3 +80,32 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
||||
|
||||
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 (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
@@ -40,6 +41,17 @@ type AntiAffinityRuleAddRequest struct {
|
||||
// Value that must match the key to be taken into account when analyzing this rule
|
||||
// Required: true
|
||||
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
|
||||
@@ -51,7 +63,12 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
||||
|
||||
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 {
|
||||
return false, err
|
||||
}
|
||||
@@ -63,3 +80,32 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
||||
|
||||
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 {
|
||||
CDEjectRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||
}
|
||||
|
||||
// CDEject eject CD image to compute's CD-ROM
|
||||
|
||||
@@ -22,7 +22,7 @@ type CDInsertRequest struct {
|
||||
type wrapperCDInsertRequest struct {
|
||||
CDInsertRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||
}
|
||||
|
||||
// CDInsert insert new CD image to compute's CD-ROM
|
||||
|
||||
@@ -34,7 +34,7 @@ type ChangeIPRequest struct {
|
||||
type wrapperChangeIPRequest struct {
|
||||
ChangeIPRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeIP change reserved IP for compute instance
|
||||
|
||||
@@ -27,7 +27,7 @@ type ChangeLinkStateRequest struct {
|
||||
type wrapperChangeLinkStateRequest struct {
|
||||
ChangeLinkStateRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeLinkState changes the status link virtual of compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type ChangeMTURequest struct {
|
||||
type wrapperChangeMTURequest struct {
|
||||
ChangeMTURequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeMTU change MTU for compute instance
|
||||
|
||||
@@ -26,7 +26,7 @@ type ChangeQoSPoliciesRequest struct {
|
||||
type wrapperChangeQoSPoliciesRequest struct {
|
||||
ChangeQoSPoliciesRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeQoSPolicies change qos policies for compute
|
||||
|
||||
@@ -30,7 +30,7 @@ type ChangeSecGroupsRequest struct {
|
||||
type wrapperChangeSecGroupsRequest struct {
|
||||
ChangeSecGroupsRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeSecGroups changes security groups for compute
|
||||
|
||||
@@ -47,7 +47,7 @@ type CloneRequest struct {
|
||||
type wrapperCloneRequest struct {
|
||||
CloneRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode" json:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||
}
|
||||
|
||||
// Clone clones compute instance
|
||||
|
||||
@@ -22,7 +22,7 @@ type CreateTemplateRequest struct {
|
||||
type wrapperCreateTemplateRequest struct {
|
||||
CreateTemplateRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CreateTemplate create template from compute instance
|
||||
|
||||
@@ -55,7 +55,7 @@ type CreateTemplateFromBlankRequest struct {
|
||||
|
||||
type wrapperCreateTemplateFromBlankRequest struct {
|
||||
CreateTemplateFromBlankRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CreateTemplateFromBlank creates template from boot disk of current compute in sync mode.
|
||||
|
||||
@@ -26,7 +26,7 @@ type DeleteRequest struct {
|
||||
type wrapperDeleteRequest struct {
|
||||
DeleteRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Delete deletes compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type DisableRequest struct {
|
||||
type wrapperDisableRequest struct {
|
||||
DisableRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Disable disables compute
|
||||
|
||||
@@ -60,7 +60,7 @@ type DiskAddRequest struct {
|
||||
type wrapperDiskAddRequest struct {
|
||||
DiskAddRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskAdd creates new disk and attach to compute
|
||||
|
||||
@@ -34,7 +34,7 @@ type DiskAttachRequest struct {
|
||||
type wrapperDiskAttachRequest struct {
|
||||
DiskAttachRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskAttach attach disk to compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskDelRequest struct {
|
||||
type wrapperDiskDelRequest struct {
|
||||
DiskDelRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskDel delete disk and detach from compute
|
||||
|
||||
@@ -22,7 +22,7 @@ type DiskDetachRequest struct {
|
||||
type wrapperDiskDetachRequest struct {
|
||||
DiskDetachRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskDetach detach disk from compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskQOSRequest struct {
|
||||
type wrapperDiskQOSRequest struct {
|
||||
DiskQOSRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskQOS change QoS of the disk
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskResizeRequest struct {
|
||||
type wrapperDiskResizeRequest struct {
|
||||
DiskResizeRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskResize change disk size
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskSwitchToReplicationRequest struct {
|
||||
type wrapperDiskSwitchToReplicationRequest struct {
|
||||
DiskSwitchToReplicationRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskSwitchToReplication switches disk to it's replication
|
||||
|
||||
@@ -18,7 +18,7 @@ type GuestAgentDisableRequest struct {
|
||||
type wrapperGuestAgentDisableRequest struct {
|
||||
GuestAgentDisableRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Disable guest agent at a specific compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type GuestAgentEnableRequest struct {
|
||||
type wrapperGuestAgentEnableRequest struct {
|
||||
GuestAgentEnableRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Enable guest agent at a specific compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type GuestAgentExecuteRequest struct {
|
||||
type wrapperGuestAgentExecuteRequest struct {
|
||||
GuestAgentExecuteRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Execute guest agent command
|
||||
|
||||
@@ -18,7 +18,7 @@ type GuestAgentFeatureUpdateRequest struct {
|
||||
type wrapperGuestAgentFeatureUpdateRequest struct {
|
||||
GuestAgentFeatureUpdateRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Feature update guest agent
|
||||
|
||||
@@ -63,6 +63,14 @@ type ListRequest struct {
|
||||
// Required: false
|
||||
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
|
||||
// Required: false
|
||||
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
|
||||
|
||||
@@ -22,7 +22,7 @@ type MigrateToZoneRequest struct {
|
||||
type wrapperMigrateToZoneRequest struct {
|
||||
MigrateToZoneRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// MoveToRG moves compute instance to new resource group
|
||||
|
||||
@@ -37,7 +37,7 @@ type MoveToRGRequest struct {
|
||||
type wrapperMoveToRGRequest struct {
|
||||
MoveToRGRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// MoveToRG moves compute instance to new resource group
|
||||
|
||||
@@ -96,7 +96,7 @@ type NetAttachRequest struct {
|
||||
type wrapperNetAttachRequest struct {
|
||||
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
|
||||
|
||||
@@ -26,7 +26,7 @@ type NetDetachRequest struct {
|
||||
type wrapperNetDetachRequest struct {
|
||||
NetDetachRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// NetDetach detaches network from compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type PauseRequest struct {
|
||||
type wrapperPauseRequest struct {
|
||||
PauseRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Pause pause compute
|
||||
|
||||
@@ -36,7 +36,7 @@ type PFWAddRequest struct {
|
||||
type wrapperPFWAddRequest struct {
|
||||
PFWAddRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// PFWAdd add port forward rule
|
||||
|
||||
@@ -39,7 +39,7 @@ type PFWDelRequest struct {
|
||||
type wrapperPFWDelRequest struct {
|
||||
PFWDelRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// PFWDel deletes port forward rule
|
||||
|
||||
@@ -23,7 +23,7 @@ type PinToNodeRequest struct {
|
||||
type wrapperPinToNodeRequest struct {
|
||||
PinToNodeRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// PinToNode pin compute to current node
|
||||
|
||||
@@ -18,7 +18,7 @@ type PowerCycleRequest struct {
|
||||
type wrapperPowerCycleRequest struct {
|
||||
PowerCycleRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// PowerCycle makes force stop and start compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type RebootRequest struct {
|
||||
type wrapperRebootRequest struct {
|
||||
RebootRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Reboot reboots compute
|
||||
|
||||
@@ -47,7 +47,7 @@ type RedeployRequest struct {
|
||||
type wrapperRedeployRequest struct {
|
||||
RedeployRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Redeploy redeploys compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type ResetRequest struct {
|
||||
type wrapperResetRequest struct {
|
||||
ResetRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Reset resets compute
|
||||
|
||||
@@ -46,7 +46,7 @@ func (r ResizeRequest) GetRAM() map[string]uint64 {
|
||||
type wrapperResizeRequest struct {
|
||||
ResizeRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Resize resizes compute instance
|
||||
|
||||
@@ -18,7 +18,7 @@ type RestoreRequest struct {
|
||||
type wrapperRestoreRequest struct {
|
||||
RestoreRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Restore restores compute from recycle bin
|
||||
|
||||
@@ -18,7 +18,7 @@ type ResumeRequest struct {
|
||||
type wrapperResumeRequest struct {
|
||||
ResumeRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Resume resume Compute from paused state
|
||||
|
||||
@@ -29,7 +29,7 @@ type SnapshotCreateRequest struct {
|
||||
|
||||
type wrapperSnapshotCreateRequest struct {
|
||||
SnapshotCreateRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// SnapshotCreate creates compute snapshot
|
||||
|
||||
@@ -21,7 +21,7 @@ type SnapshotDeleteRequest struct {
|
||||
type wrapperSnapshotDeleteRequeststruct struct {
|
||||
SnapshotDeleteRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// SnapshotDelete deletes specified compute snapshot
|
||||
|
||||
@@ -26,7 +26,7 @@ type SnapshotRollbackRequest struct {
|
||||
|
||||
type wrapperSnapshotRollbackRequest struct {
|
||||
SnapshotRollbackRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// SnapshotRollback rollbacks specified compute snapshot
|
||||
|
||||
@@ -22,7 +22,7 @@ type StartRequest struct {
|
||||
type wrapperStartRequest struct {
|
||||
StartRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Start starts compute
|
||||
|
||||
@@ -22,7 +22,7 @@ type StopRequest struct {
|
||||
type wrapperStopRequest struct {
|
||||
StopRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Stop stops compute
|
||||
|
||||
@@ -54,7 +54,7 @@ type FromPlatformDiskRequest struct {
|
||||
|
||||
type wrapperFromPlatformDiskRequest struct {
|
||||
FromPlatformDiskRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// FromPlatformDisk creates template from platform disk in sync mode.
|
||||
|
||||
@@ -77,7 +77,7 @@ type CreateRequest struct {
|
||||
|
||||
type asyncWrapperCreateRequest struct {
|
||||
CreateRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// 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 string `json:"status"`
|
||||
|
||||
// Max IOPS for the sotrage policy
|
||||
// Max IOPS for the storage policy
|
||||
LimitIOPS uint64 `json:"limit_iops"`
|
||||
|
||||
// ID of the replication profile
|
||||
ReplicationProfileID uint64 `json:"replication_profile_id"`
|
||||
|
||||
// Storage policy ID
|
||||
StoragePolicyID uint64 `json:"storage_policy_id"`
|
||||
|
||||
@@ -56,9 +59,12 @@ type InfoStoragePolicy struct {
|
||||
// Status of the storage policy
|
||||
Status string `json:"status"`
|
||||
|
||||
// Max IOPS for the sotrage policy
|
||||
// Max IOPS for the storage policy
|
||||
LimitIOPS uint64 `json:"limit_iops"`
|
||||
|
||||
// ID of the replication profile
|
||||
ReplicationProfileID uint64 `json:"replication_profile_id"`
|
||||
|
||||
// ID of the storage policy
|
||||
StoragePolicyID uint64 `json:"storage_policy_id"`
|
||||
|
||||
@@ -89,3 +95,72 @@ type Usage struct {
|
||||
// List of resource groups
|
||||
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 (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"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.
|
||||
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)
|
||||
if err != nil {
|
||||
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||
}
|
||||
|
||||
url := "/cloudbroker/apiaccess/descUpdate"
|
||||
|
||||
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||
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 {
|
||||
return false, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
return &info, nil
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package apiaccess
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type ItemAPIAccess struct {
|
||||
// APIs
|
||||
APIs APIsEndpoints `json:"apis"`
|
||||
@@ -88,43 +90,74 @@ type APIsEndpoints struct {
|
||||
// CloudBroker endpoints
|
||||
CloudBroker CloudBrokerEndpoints `json:"cloudbroker,omitempty"`
|
||||
|
||||
// LibCloud endpoints
|
||||
LibCloud LibCloudEndpoints `json:"libcloud,omitempty"`
|
||||
// SDN endpoints
|
||||
SDN SDNEndpoints `json:"sdn,omitempty"`
|
||||
|
||||
// System endpoints
|
||||
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 {
|
||||
Account []string `json:"account,omitempty"`
|
||||
BService []string `json:"bservice,omitempty"`
|
||||
CloudSpace []string `json:"cloudspace,omitempty"`
|
||||
Compute []string `json:"compute,omitempty"`
|
||||
ComputeCI []string `json:"computeci,omitempty"`
|
||||
Disks []string `json:"disks,omitempty"`
|
||||
DPDK []string `json:"dpdk,omitempty"`
|
||||
ExtNet []string `json:"extnet,omitempty"`
|
||||
FLIPGroup []string `json:"flipgroup,omitempty"`
|
||||
GPU []string `json:"gpu,omitempty"`
|
||||
Image []string `json:"image,omitempty"`
|
||||
K8CI []string `json:"k8ci,omitempty"`
|
||||
K8S []string `json:"k8s,omitempty"`
|
||||
KVMX86 []string `json:"kvmx86,omitempty"`
|
||||
LB []string `json:"lb,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"`
|
||||
PortForwarding []string `json:"portforwarding,omitempty"`
|
||||
Prometheus []string `json:"prometheus,omitempty"`
|
||||
RG []string `json:"rg,omitempty"`
|
||||
Sizes []string `json:"sizes,omitempty"`
|
||||
Tasks []string `json:"tasks,omitempty"`
|
||||
User []string `json:"user,omitempty"`
|
||||
VGPU []string `json:"vgpu,omitempty"`
|
||||
VINS []string `json:"vins,omitempty"`
|
||||
All bool `json:"ALL,omitempty"`
|
||||
Account []string `json:"account,omitempty"`
|
||||
Audit []string `json:"audit,omitempty"`
|
||||
BService []string `json:"bservice,omitempty"`
|
||||
Compute []string `json:"compute,omitempty"`
|
||||
Disks []string `json:"disks,omitempty"`
|
||||
DPDKNet []string `json:"dpdknet,omitempty"`
|
||||
ExtNet []string `json:"extnet,omitempty"`
|
||||
FLIPGroup []string `json:"flipgroup,omitempty"`
|
||||
GPU []string `json:"gpu,omitempty"`
|
||||
Image []string `json:"image,omitempty"`
|
||||
K8CI []string `json:"k8ci,omitempty"`
|
||||
K8S []string `json:"k8s,omitempty"`
|
||||
KVMX86 []string `json:"kvmx86,omitempty"`
|
||||
LB []string `json:"lb,omitempty"`
|
||||
Loactions []string `json:"locations,omitempty"`
|
||||
PCIDevice []string `json:"pcidevice,omitempty"`
|
||||
Prometheus []string `json:"prometheus,omitempty"`
|
||||
RG []string `json:"rg,omitempty"`
|
||||
SecurityGroup []string `json:"security_group,omitempty"`
|
||||
SEP []string `json:"sep,omitempty"`
|
||||
StoragePolicy []string `json:"storage_policy,omitempty"`
|
||||
Tasks []string `json:"tasks,omitempty"`
|
||||
Trunk []string `json:"trunk,omitempty"`
|
||||
User []string `json:"user,omitempty"`
|
||||
VFPool []string `json:"vfpool,omitempty"`
|
||||
VGPU []string `json:"vgpu,omitempty"`
|
||||
VINS []string `json:"vins,omitempty"`
|
||||
VMFolder []string `json:"vmfolder,omitempty"`
|
||||
Zone []string `json:"zone,omitempty"`
|
||||
All bool `json:"ALL,omitempty"`
|
||||
}
|
||||
|
||||
type CloudBrokerEndpoints struct {
|
||||
@@ -133,74 +166,85 @@ type CloudBrokerEndpoints struct {
|
||||
Audit interface{} `json:"audit,omitempty"`
|
||||
AuditBeat []string `json:"auditbeat,omitempty"`
|
||||
AuditCollector []string `json:"auditcollector,omitempty"`
|
||||
Backup []string `json:"backup,omitempty"`
|
||||
BackupCreator []string `json:"backupcreator,omitempty"`
|
||||
BService []string `json:"bservice,omitempty"`
|
||||
CloudSpace []string `json:"cloudspace,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"`
|
||||
DPDK []string `json:"dpdk,omitempty"`
|
||||
DPDKNet []string `json:"dpdknet,omitempty"`
|
||||
Eco []string `json:"eco,omitempty"`
|
||||
ExtNet []string `json:"extnet,omitempty"`
|
||||
FlIPgroup []string `json:"flipgroup,omitempty"`
|
||||
Grid []string `json:"grid,omitempty"`
|
||||
Group []string `json:"group,omitempty"`
|
||||
Health []string `json:"health,omitempty"`
|
||||
IaaS []string `json:"iaas,omitempty"`
|
||||
Image []string `json:"image,omitempty"`
|
||||
Job interface{} `json:"job,omitempty"`
|
||||
K8CI []string `json:"k8ci,omitempty"`
|
||||
K8S []string `json:"k8s,omitempty"`
|
||||
KVMX86 []string `json:"kvmx86,omitempty"`
|
||||
LB []string `json:"lb,omitempty"`
|
||||
Machine []string `json:"machine,omitempty"`
|
||||
Metering []string `json:"metering,omitempty"`
|
||||
Milestones []string `json:"milestones,omitempty"`
|
||||
Openshift []string `json:"openshift,omitempty"`
|
||||
OpenshiftCI []string `json:"openshiftci,omitempty"`
|
||||
Ovsnode []string `json:"ovsnode,omitempty"`
|
||||
Node []string `json:"node,omitempty"`
|
||||
PCIDevice []string `json:"pcidevice,omitempty"`
|
||||
PGPU []string `json:"pgpu,omitempty"`
|
||||
Prometheus []string `json:"prometheus,omitempty"`
|
||||
QOS []string `json:"qos,omitempty"`
|
||||
Resmon interface{} `json:"resmon,omitempty"`
|
||||
RG []string `json:"rg,omitempty"`
|
||||
SecurityGroup []string `json:"security_group,omitempty"`
|
||||
Sep []string `json:"sep,omitempty"`
|
||||
Node []string `json:"node,omitempty"`
|
||||
StoragePolicy []string `json:"storage_policy,omitempty"`
|
||||
Tasks []string `json:"tasks,omitempty"`
|
||||
TLock []string `json:"tlock,omitempty"`
|
||||
Trunk []string `json:"trunk,omitempty"`
|
||||
User []string `json:"user,omitempty"`
|
||||
VFPool []string `json:"vfpool,omitempty"`
|
||||
VGPU []string `json:"vgpu,omitempty"`
|
||||
VINS []string `json:"vins,omitempty"`
|
||||
VMFolder []string `json:"vmfolder,omitempty"`
|
||||
VNFDev []string `json:"vnfdev,omitempty"`
|
||||
ZeroAccess []string `json:"zeroaccess,omitempty"`
|
||||
Zone []string `json:"zone,omitempty"`
|
||||
All bool `json:"ALL,omitempty"`
|
||||
}
|
||||
|
||||
type LibCloudEndpoints struct {
|
||||
Libvirt []string `json:"libvirt,omitempty"`
|
||||
All bool `json:"ALL,omitempty"`
|
||||
type SDNEndpoints struct {
|
||||
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"`
|
||||
}
|
||||
|
||||
type SystemEndpoints struct {
|
||||
AgentController []string `json:"agentcontroller,omitempty"`
|
||||
Alerts []string `json:"alerts,omitempty"`
|
||||
Audits []string `json:"audits,omitempty"`
|
||||
ContentManager []string `json:"contentmanager,omitempty"`
|
||||
DocGenerator []string `json:"docgenerator,omitempty"`
|
||||
EmailSender []string `json:"emailsender,omitempty"`
|
||||
ErrorConditionHandler []string `json:"errorconditionhandler,omitempty"`
|
||||
GridManager []string `json:"gridmanager,omitempty"`
|
||||
Health []string `json:"health,omitempty"`
|
||||
Info []string `json:"info,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"`
|
||||
Task []string `json:"task,omitempty"`
|
||||
UserManager []string `json:"usermanager,omitempty"`
|
||||
All bool `json:"ALL,omitempty"`
|
||||
Audits []string `json:"audits,omitempty"`
|
||||
Cache []string `json:"cache,omitempty"`
|
||||
ContentManager []string `json:"contentmanager,omitempty"`
|
||||
DocGenerator []string `json:"docgenerator,omitempty"`
|
||||
EmailSender []string `json:"emailsender,omitempty"`
|
||||
GridManager []string `json:"gridmanager,omitempty"`
|
||||
Health []string `json:"health,omitempty"`
|
||||
Info []string `json:"info,omitempty"`
|
||||
InfoWellknown []string `json:"info/wellknown,omitempty"`
|
||||
InfoMGR []string `json:"infomgr,omitempty"`
|
||||
Oauth []string `json:"oauth,omitempty"`
|
||||
Task []string `json:"task,omitempty"`
|
||||
UserManager []string `json:"usermanager,omitempty"`
|
||||
All bool `json:"ALL,omitempty"`
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||
)
|
||||
@@ -27,10 +26,10 @@ type wrapperUpdateRequest struct {
|
||||
}
|
||||
|
||||
// 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)
|
||||
if err != nil {
|
||||
return false, validators.ValidationErrors(validators.GetErrors(err))
|
||||
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||
}
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return false, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reqWrapped.APIString = string(apiJSON)
|
||||
|
||||
res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped)
|
||||
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 {
|
||||
return false, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
return &info, nil
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ type CreateDiskBackupRequest struct {
|
||||
type wrapperCreateDiskBackupRequest struct {
|
||||
CreateDiskBackupRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CreateDiskBackup creates disk backup
|
||||
|
||||
@@ -33,7 +33,7 @@ type CreateDisksBackupRequest struct {
|
||||
type wrapperCreateDisksBackupRequest struct {
|
||||
CreateDisksBackupRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CreateDisksBackup creates disks backup
|
||||
|
||||
@@ -21,7 +21,7 @@ type DeleteDiskBackupRequest struct {
|
||||
type wrapperDeleteDiskBackupRequest struct {
|
||||
DeleteDiskBackupRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DeleteDiskBackup deletes disk backup
|
||||
|
||||
@@ -30,7 +30,7 @@ type RestoreDiskFromBackupRequest struct {
|
||||
type wrapperRestoreDiskFromBackupRequest struct {
|
||||
RestoreDiskFromBackupRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// RestoreDiskFromBackup restores disk from backup
|
||||
|
||||
@@ -35,7 +35,7 @@ type RestoreDisksFromBackupRequest struct {
|
||||
type wrapperRestoreDisksFromBackupRequest struct {
|
||||
RestoreDisksFromBackupRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// RestoreDisksFromBackup restores disks from backup
|
||||
|
||||
@@ -20,7 +20,7 @@ type AbortSharedSnapshotMergeRequest struct {
|
||||
|
||||
type wrapperAbortSharedSnapshotMergeRequest struct {
|
||||
AbortSharedSnapshotMergeRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// AbortSharedSnapshotMerge shared snapshots merge abort
|
||||
|
||||
@@ -2,6 +2,7 @@ package compute
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
@@ -42,6 +43,17 @@ type AffinityRuleAddRequest struct {
|
||||
// Value that must match the key to be taken into account when analyzing this rule
|
||||
// Required: true
|
||||
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
|
||||
@@ -53,7 +65,12 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
||||
|
||||
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 {
|
||||
return false, err
|
||||
}
|
||||
@@ -65,3 +82,32 @@ func (c Compute) AffinityRuleAdd(ctx context.Context, req AffinityRuleAddRequest
|
||||
|
||||
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 (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
@@ -40,6 +41,17 @@ type AntiAffinityRuleAddRequest struct {
|
||||
// Value that must match the key to be taken into account when analyzing this rule
|
||||
// Required: true
|
||||
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
|
||||
@@ -51,7 +63,12 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
||||
|
||||
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 {
|
||||
return false, err
|
||||
}
|
||||
@@ -63,3 +80,32 @@ func (c Compute) AntiAffinityRuleAdd(ctx context.Context, req AntiAffinityRuleAd
|
||||
|
||||
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 {
|
||||
CDEjectRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CDEject ejects CD image to compute's CD-ROM
|
||||
|
||||
@@ -21,7 +21,7 @@ type CDInsertRequest struct {
|
||||
type wrapperCDInsertRequest struct {
|
||||
CDInsertRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CDInsert inserts new CD image to compute's CD-ROM
|
||||
|
||||
@@ -34,7 +34,7 @@ type ChangeIPRequest struct {
|
||||
type wrapperChangeIPRequest struct {
|
||||
ChangeIPRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeIP change reserved IP for compute instance
|
||||
|
||||
@@ -27,7 +27,7 @@ type ChangeLinkStateRequest struct {
|
||||
type wrapperChangeLinkStateRequest struct {
|
||||
ChangeLinkStateRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeLinkState changes the status link virtual of compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type ChangeMTURequest struct {
|
||||
type wrapperChangeMTURequest struct {
|
||||
ChangeMTURequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeMTU change MTU for compute instance
|
||||
|
||||
@@ -26,7 +26,7 @@ type ChangeQoSPoliciesRequest struct {
|
||||
type wrapperChangeQoSPoliciesRequest struct {
|
||||
ChangeQoSPoliciesRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeQoSPolicies change qos policies for compute
|
||||
|
||||
@@ -30,7 +30,7 @@ type ChangeSecGroupsRequest struct {
|
||||
type wrapperChangeSecGroupsRequest struct {
|
||||
ChangeSecGroupsRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// ChangeSecGroups changes security groups for compute
|
||||
|
||||
@@ -47,7 +47,7 @@ type CloneRequest struct {
|
||||
type wrapperCloneRequest struct {
|
||||
CloneRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode" json:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode" json:"async_mode"`
|
||||
}
|
||||
|
||||
// Clone clones compute instance
|
||||
|
||||
@@ -22,7 +22,7 @@ type CreateTemplateRequest struct {
|
||||
type wrapperCreateTemplateRequest struct {
|
||||
CreateTemplateRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CreateTemplate create template from compute instance
|
||||
|
||||
@@ -55,7 +55,7 @@ type CreateTemplateFromBlankRequest struct {
|
||||
|
||||
type wrapperCreateTemplateFromBlankRequest struct {
|
||||
CreateTemplateFromBlankRequest
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// CreateTemplateFromBlank creates template from boot disk of current compute in sync mode.
|
||||
|
||||
@@ -26,7 +26,7 @@ type DeleteRequest struct {
|
||||
type wrapperDeleteRequest struct {
|
||||
DeleteRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Delete deletes compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type DisableRequest struct {
|
||||
type wrapperDisableRequest struct {
|
||||
DisableRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Disable disables compute
|
||||
|
||||
@@ -68,7 +68,7 @@ type DiskAddRequest struct {
|
||||
type wrapperDiskAddRequest struct {
|
||||
DiskAddRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskAdd creates new disk and attach to compute
|
||||
|
||||
@@ -34,7 +34,7 @@ type DiskAttachRequest struct {
|
||||
type wrapperDiskAttachRequest struct {
|
||||
DiskAttachRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskAttach attach disk to compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskDelRequest struct {
|
||||
type wrapperDiskDelRequest struct {
|
||||
DiskDelRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskDel deletes disk and detaches it from compute
|
||||
|
||||
@@ -22,7 +22,7 @@ type DiskDetachRequest struct {
|
||||
type wrapperDiskDetachRequest struct {
|
||||
DiskDetachRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskDetach detaches disk from compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskQOSRequest struct {
|
||||
type wrapperDiskQOSRequest struct {
|
||||
DiskQOSRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskQOS changes QOS of the disk
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskResizeRequest struct {
|
||||
type wrapperDiskResizeRequest struct {
|
||||
DiskResizeRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskResize changes disk size
|
||||
|
||||
@@ -26,7 +26,7 @@ type DiskSwitchToReplicationRequest struct {
|
||||
type wrapperDiskSwitchToReplicationRequest struct {
|
||||
DiskSwitchToReplicationRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// DiskSwitchToReplication switches disk to it's replication
|
||||
|
||||
@@ -18,7 +18,7 @@ type GuestAgentDisableRequest struct {
|
||||
type wrapperGuestAgentDisableRequest struct {
|
||||
GuestAgentDisableRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Disable guest agent at a specific compute
|
||||
|
||||
@@ -18,7 +18,7 @@ type GuestAgentEnableRequest struct {
|
||||
type wrapperGuestAgentEnableRequest struct {
|
||||
GuestAgentEnableRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Enable guest agent at a specific compute
|
||||
|
||||
@@ -26,7 +26,7 @@ type GuestAgentExecuteRequest struct {
|
||||
type wrapperGuestAgentExecuteRequest struct {
|
||||
GuestAgentExecuteRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// Execute guest agent command
|
||||
|
||||
@@ -18,7 +18,7 @@ type GuestAgentFeatureUpdateRequest struct {
|
||||
type wrapperGuestAgentFeatureUpdateRequest struct {
|
||||
GuestAgentFeatureUpdateRequest
|
||||
|
||||
AsyncMode bool `url:"asyncMode"`
|
||||
AsyncMode bool `url:"async_mode"`
|
||||
}
|
||||
|
||||
// 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