diff --git a/CHANGELOG.md b/CHANGELOG.md index 6eec689..90067fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,58 +1,34 @@ -## Version 1.12.4 +## Version 1.12.5 Методы `Audits` в cloudapi/compute, cloudbroker/compute, cloudapi/account, cloudbroker/account, cloudapi/vins, cloudbroker/vins, cloudapi/rg и cloudbroker/rg стали deprecated и в следующих версиях будут удалены, вместо них необходимо использовать метод `List` в cloudapi/audit и cloudbroker/audit с соответствующими фильтрами ### Добавлено -#### audit -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-621 | Метод `List` в структура запроса `ListRequest` в cloudapi/audit | -| BGOS-621 | Опциональные поля `RGID`, `ComputeID`, `AccountID`, `VINSID`, `ServiceID`, `K8SID`, `FLIPGroupID`, `LBID`, `SEPID`, `NodeID`, `ExcludeAuditLines` в структуру запроса `ListRequest` в cloudbroker/audit | - #### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-613 | Поля `UpdatedTime`, `DeletedBy`, `DeviceName`, `CreatedBy` в структуру ответа `ItemComputeDisk` в cloudapi/compute и в структуру ответа `ItemDisk` в cloudbroker/compute | -| BGOS-613 | Поле `LoaderMetaIso` в структуру ответа `RecordCompute` и структура `LoaderMetaIso` в cloudapi/compute и в cloudbroker/compute | -| BGOS-616 | Опциональные поля `PCISlot` и `BusNumber` в структуры запросов `DiskAdd` и `DiskAttach` в cloudapi/compute и cloudbroker/compute | -| BGOS-619 | Методы `StartMigrationOut` и `StopMigrationOut` и структуры запросов `StartMigrationOutRequest` и `StopMigrationOutRequest` в cloudbroker/compute | -| BGOS-619 | Структура `OSUser` в структуру запроса `StopMigrationINRequest` в cloudbroker/compute | - -#### image -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-614 | Поле `StoragePolicyID` в структуру ответа `ItemImage` в cloudapi/image | -| BGOS-617 | Опциональное поле `StoragePolicyID` в структуры запроса `ListRequest` в cloudapi/image и cloudbroker/image | +| BGOS-625 | Обязательное поле `StoragePolicyID` и опциональные поля `PoolName` и `SEPID` в структуру запроса `CloneRequest` в cloudapi/compute и cloudbroker/compute | +| BGOS-626 | Методы `CloneAbort` и `GetCloneStatus` и структуры запросов `CloneAbortRequest` и `GetCloneStatusRequest` в cloudbroker/compute | +| BGOS-630 | Поле `BootImageID` в структуры ответа `ItemCompute` и `RecordCompute` в cloudapi/compute и в структуры ответа `RecordCompute` и `InfoCompute` в cloudbroker/compute | -#### vins +#### disks | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-615 | Поле `ZoneID` в структуры ответа `RecordDHCP`, `RecordGW`, `RecordNAT`, `RecordVNFDev` в cloudapi/vins и `InfoVNF` и `VNFDev` в cloudbroker/vins | -| BGOS-615 | Поля `SecGroups`, `EnableSecGroups` в структуру ответа `ItemVNFInterface` в cloudapi/vins и `ItemInterface` в cloudbroker/vins | +| BGOS-627 | Методы `Migrate`, `MigrateAbort` и `GetMigrateStatus`, структуры запросов `MigrateRequest`, `CloneMigrateRequest` и `GetMigrateStatusRequest` и структура ответа `MigrateStatus` в cloudbroker/disks | ### Исправлено #### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-619 | Ошибка работы фильтра `SortBy` в методе `MigrateStorageList` в cloudbroker/compute | - -#### storage policy -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-620 | Поле `AccountID` в структуре запроса `ListRequest` стало опциональным в cloudapi/stpolicy | +| BGOS-623 | Тип поля `EnableSecGroups` с `bool` на `interface{}` в структуре запроса `ChangeSecGroupsRequest` в cloudapi/compute и в cloudbroker/compute | +| BGOS-625 | Возвращаемое значение в функции `Clone` с `uint64` на `string` в cloudapi/compute и cloudbroker/compute | +| BGOS-629 | Возвращаемое значение метода `CreateTemplate` изменено с `uint64` на `string` в cloudapi/compute и в cloudbroker/compute | ### Удалено -#### audit -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-621 | Поле `Tags` в структуре ответа `ItemAudit` в cloudbroker/audit | - -#### disks +#### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-618 | Поле `IOPS` из структуры запроса `CreateRequest` в cloudapi/disks и в cloudbroker/disks | - +| BGOS-629 | Методы `CreateTemplateAsync` в cloudapi/compute и в cloudbroker/compute | diff --git a/pkg/cloudapi/compute/change_secutity_group.go b/pkg/cloudapi/compute/change_secutity_group.go index 4122bf2..442878c 100644 --- a/pkg/cloudapi/compute/change_secutity_group.go +++ b/pkg/cloudapi/compute/change_secutity_group.go @@ -24,7 +24,7 @@ type ChangeSecGroupsRequest struct { // Flag indicating whether security groups are enabled for this interface // Required: false - EnableSecGroups bool `url:"enable_secgroups,omitempty" json:"enable_secgroups,omitempty"` + EnableSecGroups interface{} `url:"enable_secgroups,omitempty" json:"enable_secgroups,omitempty" validate:"omitempty,isBool"` } // ChangeSecGroups changes security groups for compute diff --git a/pkg/cloudapi/compute/clone.go b/pkg/cloudapi/compute/clone.go index 589ea31..6bb036a 100644 --- a/pkg/cloudapi/compute/clone.go +++ b/pkg/cloudapi/compute/clone.go @@ -3,8 +3,8 @@ package compute import ( "context" "net/http" - "strconv" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) @@ -18,6 +18,10 @@ type CloneRequest struct { // Required: true Name string `url:"name" json:"name" validate:"required"` + // ID of the Storage Policy + // Required: true + StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id" validate:"required"` + // Timestamp of the parent's snapshot to create clone from // Required: false SnapshotTimestamp uint64 `url:"snapshotTimestamp,omitempty" json:"snapshotTimestamp,omitempty"` @@ -30,26 +34,29 @@ type CloneRequest struct { // Default: false // Required: false Force bool `url:"force" json:"force"` + + // The name of the pool to migrate disks to + // Required: false + PoolName string `url:"pool_name" json:"pool_name"` + + // The ID of the SEP to migrate disks to + // Required: false + SEPID uint64 `url:"sep_id" json:"sep_id"` } // Clone clones compute instance -func (c Compute) Clone(ctx context.Context, req CloneRequest) (uint64, error) { +func (c Compute) Clone(ctx context.Context, req CloneRequest) (string, error) { err := validators.ValidateRequest(req) if err != nil { - return 0, validators.ValidationErrors(validators.GetErrors(err)) + return "", validators.ValidationErrors(validators.GetErrors(err)) } url := "/cloudapi/compute/clone" - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) - if err != nil { - return 0, err - } - - result, err := strconv.ParseUint(string(res), 10, 64) + res, err := c.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) if err != nil { - return 0, err + return "", err } - return result, nil + return string(res), nil } diff --git a/pkg/cloudapi/compute/clone_abort.go b/pkg/cloudapi/compute/clone_abort.go new file mode 100644 index 0000000..b235b09 --- /dev/null +++ b/pkg/cloudapi/compute/clone_abort.go @@ -0,0 +1,39 @@ +package compute + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// CloneAbortRequest struct to abort a compute clone +type CloneAbortRequest struct { + // ID of compute instance + // Required: true + ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"` +} + +// CloneAbort aborts a compute clone +func (c Compute) CloneAbort(ctx context.Context, req CloneAbortRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudapi/compute/clone_abort" + + res, err := c.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 +} diff --git a/pkg/cloudapi/compute/clone_status.go b/pkg/cloudapi/compute/clone_status.go new file mode 100644 index 0000000..b6e3e9a --- /dev/null +++ b/pkg/cloudapi/compute/clone_status.go @@ -0,0 +1,40 @@ +package compute + +import ( + "context" + "encoding/json" + "net/http" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// GetCloneStatusRequest struct to get information about compute clone status +type GetCloneStatusRequest struct { + // ID of compute instance + // Required: true + ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"` +} + +// GetCloneStatus gets information about compute clone status as a RecordCloneStatus struct +func (c Compute) GetCloneStatus(ctx context.Context, req GetCloneStatusRequest) ([]RecordCloneStatus, error) { + err := validators.ValidateRequest(req) + if err != nil { + return nil, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudapi/compute/clone_status" + + res, err := c.client.DecortApiCall(ctx, http.MethodGet, url, req) + if err != nil { + return nil, err + } + + cloneStatus := make([]RecordCloneStatus, 0) + + err = json.Unmarshal(res, &cloneStatus) + if err != nil { + return nil, err + } + + return cloneStatus, nil +} diff --git a/pkg/cloudapi/compute/create_template.go b/pkg/cloudapi/compute/create_template.go index 18dbc8c..1993143 100644 --- a/pkg/cloudapi/compute/create_template.go +++ b/pkg/cloudapi/compute/create_template.go @@ -3,7 +3,6 @@ package compute import ( "context" "net/http" - "strconv" "strings" "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" @@ -27,47 +26,15 @@ type wrapperCreateTemplateRequest struct { } // CreateTemplate create template from compute instance -func (c Compute) CreateTemplate(ctx context.Context, req CreateTemplateRequest) (uint64, error) { - err := validators.ValidateRequest(req) - if err != nil { - return 0, validators.ValidationErrors(validators.GetErrors(err)) - } - - reqWrapped := wrapperCreateTemplateRequest{ - CreateTemplateRequest: req, - AsyncMode: false, - } - - url := "/cloudapi/compute/createTemplate" - - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped) - if err != nil { - return 0, err - } - - result, err := strconv.ParseUint(string(res), 10, 64) - if err != nil { - return 0, err - } - - return result, nil -} - -// CreateTemplateAsync create template from compute instance -func (c Compute) CreateTemplateAsync(ctx context.Context, req CreateTemplateRequest) (string, error) { +func (c Compute) CreateTemplate(ctx context.Context, req CreateTemplateRequest) (string, error) { err := validators.ValidateRequest(req) if err != nil { return "", validators.ValidationErrors(validators.GetErrors(err)) } - reqWrapped := wrapperCreateTemplateRequest{ - CreateTemplateRequest: req, - AsyncMode: true, - } - url := "/cloudapi/compute/createTemplate" - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped) + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) if err != nil { return "", err } diff --git a/pkg/cloudapi/compute/models.go b/pkg/cloudapi/compute/models.go index deaadb5..66f65a5 100644 --- a/pkg/cloudapi/compute/models.go +++ b/pkg/cloudapi/compute/models.go @@ -311,6 +311,9 @@ type RecordCompute struct { // Architecture Architecture string `json:"arch"` + // Boot image ID + BootImageID uint64 `json:"boot_image_id"` + // Boot order BootOrder []string `json:"bootOrder"` @@ -1013,6 +1016,9 @@ type ItemCompute struct { // Architecture Architecture string `json:"arch"` + // Boot image ID + BootImageID uint64 `json:"boot_image_id"` + // Boot order BootOrder []string `json:"bootOrder"` @@ -1322,3 +1328,31 @@ type ListPCIDevices struct { // Entry count EntryCount uint64 `json:"entryCount"` } + +type RecordCloneStatus struct { + // Disk ID + DiskID int `json:"disk_id"` + + // Clone Status + Status CloneStatus `json:"status"` +} + +type CloneStatus struct { + // Type + Type int `json:"type"` + + // Copy speed + Bandwidth int `json:"bandwidth"` + + // Current progress + Cur int `json:"cur"` + + // Total size + End int `json:"end"` + + // Operation status + Ready bool `json:"ready"` + + // Progress percent + ProgressPercent int `json:"progress_percent"` +} diff --git a/pkg/cloudbroker/compute/change_secutity_group.go b/pkg/cloudbroker/compute/change_secutity_group.go index eb494a7..c1f56d3 100644 --- a/pkg/cloudbroker/compute/change_secutity_group.go +++ b/pkg/cloudbroker/compute/change_secutity_group.go @@ -24,7 +24,7 @@ type ChangeSecGroupsRequest struct { // Flag indicating whether security groups are enabled for this interface // Required: false - EnableSecGroups bool `url:"enable_secgroups,omitempty" json:"enable_secgroups,omitempty"` + EnableSecGroups interface{} `url:"enable_secgroups,omitempty" json:"enable_secgroups,omitempty" validate:"omitempty,isBool"` } // ChangeSecGroups changes security groups for compute diff --git a/pkg/cloudbroker/compute/clone.go b/pkg/cloudbroker/compute/clone.go index cf2c24c..bb10ae2 100644 --- a/pkg/cloudbroker/compute/clone.go +++ b/pkg/cloudbroker/compute/clone.go @@ -3,8 +3,8 @@ package compute import ( "context" "net/http" - "strconv" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) @@ -18,6 +18,10 @@ type CloneRequest struct { // Required: true Name string `url:"name" json:"name" validate:"required"` + // ID of the Storage Policy + // Required: true + StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id" validate:"required"` + // Timestamp of the parent's snapshot to create clone from // Required: false SnapshotTimestamp uint64 `url:"snapshotTimestamp" json:"snapshotTimestamp"` @@ -30,26 +34,29 @@ type CloneRequest struct { // Default: false // Required: false Force bool `url:"force" json:"force"` + + // The name of the pool to migrate disks to + // Required: false + PoolName string `url:"pool_name" json:"pool_name"` + + // The ID of the SEP to migrate disks to + // Required: false + SEPID uint64 `url:"sep_id" json:"sep_id"` } // Clone clones compute instance -func (c Compute) Clone(ctx context.Context, req CloneRequest) (uint64, error) { +func (c Compute) Clone(ctx context.Context, req CloneRequest) (string, error) { err := validators.ValidateRequest(req) if err != nil { - return 0, validators.ValidationErrors(validators.GetErrors(err)) + return "", validators.ValidationErrors(validators.GetErrors(err)) } url := "/cloudbroker/compute/clone" - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) - if err != nil { - return 0, err - } - - result, err := strconv.ParseUint(string(res), 10, 64) + res, err := c.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) if err != nil { - return 0, err + return "", err } - return result, nil + return string(res), nil } diff --git a/pkg/cloudbroker/compute/clone_abort.go b/pkg/cloudbroker/compute/clone_abort.go new file mode 100644 index 0000000..acb0fe4 --- /dev/null +++ b/pkg/cloudbroker/compute/clone_abort.go @@ -0,0 +1,39 @@ +package compute + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// CloneAbortRequest struct to abort a compute clone +type CloneAbortRequest struct { + // ID of compute instance + // Required: true + ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"` +} + +// CloneAbort aborts a compute clone +func (c Compute) CloneAbort(ctx context.Context, req CloneAbortRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/compute/clone_abort" + + res, err := c.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 +} diff --git a/pkg/cloudbroker/compute/clone_status.go b/pkg/cloudbroker/compute/clone_status.go new file mode 100644 index 0000000..296d011 --- /dev/null +++ b/pkg/cloudbroker/compute/clone_status.go @@ -0,0 +1,40 @@ +package compute + +import ( + "context" + "encoding/json" + "net/http" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// GetCloneStatusRequest struct to get information about compute clone status +type GetCloneStatusRequest struct { + // ID of compute instance + // Required: true + ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"` +} + +// GetCloneStatus gets information about compute clone status as a RecordCloneStatus struct +func (c Compute) GetCloneStatus(ctx context.Context, req GetCloneStatusRequest) ([]RecordCloneStatus, error) { + err := validators.ValidateRequest(req) + if err != nil { + return nil, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/compute/clone_status" + + res, err := c.client.DecortApiCall(ctx, http.MethodGet, url, req) + if err != nil { + return nil, err + } + + cloneStatus := make([]RecordCloneStatus, 0) + + err = json.Unmarshal(res, &cloneStatus) + if err != nil { + return nil, err + } + + return cloneStatus, nil +} diff --git a/pkg/cloudbroker/compute/create_template.go b/pkg/cloudbroker/compute/create_template.go index 13562f9..49d023e 100644 --- a/pkg/cloudbroker/compute/create_template.go +++ b/pkg/cloudbroker/compute/create_template.go @@ -3,7 +3,6 @@ package compute import ( "context" "net/http" - "strconv" "strings" "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" @@ -20,27 +19,16 @@ type CreateTemplateRequest struct { Name string `url:"name" json:"name" validate:"required"` } -type wrapperCreateTemplateRequest struct { - CreateTemplateRequest - - AsyncMode bool `url:"asyncMode"` -} - -// CreateTemplateAsync create template from compute instance -func (c Compute) CreateTemplateAsync(ctx context.Context, req CreateTemplateRequest) (string, error) { +// CreateTemplate create template from compute instance +func (c Compute) CreateTemplate(ctx context.Context, req CreateTemplateRequest) (string, error) { err := validators.ValidateRequest(req) if err != nil { return "", validators.ValidationErrors(validators.GetErrors(err)) } - reqWrapped := wrapperCreateTemplateRequest{ - CreateTemplateRequest: req, - AsyncMode: true, - } - url := "/cloudbroker/compute/createTemplate" - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped) + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) if err != nil { return "", err } @@ -49,30 +37,3 @@ func (c Compute) CreateTemplateAsync(ctx context.Context, req CreateTemplateRequ return result, nil } - -// CreateTemplate create template from compute instance -func (c Compute) CreateTemplate(ctx context.Context, req CreateTemplateRequest) (uint64, error) { - err := validators.ValidateRequest(req) - if err != nil { - return 0, validators.ValidationErrors(validators.GetErrors(err)) - } - - reqWrapped := wrapperCreateTemplateRequest{ - CreateTemplateRequest: req, - AsyncMode: false, - } - - url := "/cloudbroker/compute/createTemplate" - - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped) - if err != nil { - return 0, err - } - - result, err := strconv.ParseUint(string(res), 10, 64) - if err != nil { - return 0, err - } - - return result, nil -} diff --git a/pkg/cloudbroker/compute/models.go b/pkg/cloudbroker/compute/models.go index 4f7f5e3..6fdf3b4 100644 --- a/pkg/cloudbroker/compute/models.go +++ b/pkg/cloudbroker/compute/models.go @@ -663,6 +663,9 @@ type InfoCompute struct { // Architecture Arch string `json:"arch"` + // Boot image ID + BootImageID uint64 `json:"boot_image_id"` + // Boot order BootOrder []string `json:"bootOrder"` @@ -917,6 +920,9 @@ type RecordCompute struct { // Architecture Arch string `json:"arch"` + // Boot image ID + BootImageID uint64 `json:"boot_image_id"` + // Boot order BootOrder []string `json:"bootOrder"` @@ -1420,3 +1426,31 @@ type MigrateStorageItem struct { // Target stack ID TargetStackID uint64 `json:"targetStackId"` } + +type RecordCloneStatus struct { + // Disk ID + DiskID int `json:"disk_id"` + + // Clone Status + Status CloneStatus `json:"status"` +} + +type CloneStatus struct { + // Type + Type int `json:"type"` + + // Copy speed + Bandwidth int `json:"bandwidth"` + + // Current progress + Cur int `json:"cur"` + + // Total size + End int `json:"end"` + + // Operation status + Ready bool `json:"ready"` + + // Progress percent + ProgressPercent int `json:"progress_percent"` +} diff --git a/pkg/cloudbroker/disks/migrate.go b/pkg/cloudbroker/disks/migrate.go new file mode 100644 index 0000000..60ac9a2 --- /dev/null +++ b/pkg/cloudbroker/disks/migrate.go @@ -0,0 +1,46 @@ +package disks + +import ( + "context" + "net/http" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// Migrate struct to move disk to another sep, pool and storage policy +type MigrateRequest struct { + // ID of the disk + // Required: true + DiskID uint64 `url:"disk_id" json:"disk_id" validate:"required"` + + // ID of the new SEP + // Required: true + SEPID uint64 `url:"sep_id" json:"sep_id" validate:"required"` + + // New pool name + // Required: true + PoolName string `url:"pool_name" json:"pool_name" validate:"required"` + + // ID if the storage policy + // Required: false + StoragePolicyID uint64 `url:"storage_policy_id,omitempty" json:"storage_policy_id,omitempty"` +} + +// Move moves disk to another sep, pool and storage policy +func (c Disks) Migrate(ctx context.Context, req MigrateRequest) (string, error) { + err := validators.ValidateRequest(req) + if err != nil { + return "", validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/disks/migrate" + + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + if err != nil { + return "", err + } + + result := string(res) + + return result, nil +} diff --git a/pkg/cloudbroker/disks/migrate_abort.go b/pkg/cloudbroker/disks/migrate_abort.go new file mode 100644 index 0000000..2be3a14 --- /dev/null +++ b/pkg/cloudbroker/disks/migrate_abort.go @@ -0,0 +1,38 @@ +package disks + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// MigrateAbortRequest struct to abort migration +type MigrateAbortRequest struct { + // ID of the disk + // Required: true + DiskID uint64 `url:"disk_id" json:"disk_id" validate:"required"` +} + +// MigrateAbort aborts disk migration +func (c Disks) MigrateAbort(ctx context.Context, req MigrateAbortRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/disks/migrate_abort" + + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + if err != nil { + return false, err + } + + result, err := strconv.ParseBool(string(res)) + if err != nil { + return false, err + } + + return result, nil +} diff --git a/pkg/cloudbroker/disks/migrate_status.go b/pkg/cloudbroker/disks/migrate_status.go new file mode 100644 index 0000000..2bdead0 --- /dev/null +++ b/pkg/cloudbroker/disks/migrate_status.go @@ -0,0 +1,40 @@ +package disks + +import ( + "context" + "encoding/json" + "net/http" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// GetMigrateStatusRequest struct to get information about disk migrate status +type GetMigrateStatusRequest struct { + // ID of disk + // Required: true + DiskID uint64 `url:"disk_id" json:"disk_id" validate:"required"` +} + +// GetMigrateStatus gets information about disk migrate status +func (c Disks) GetMigrateStatus(ctx context.Context, req GetMigrateStatusRequest) (*MigrateStatus, error) { + err := validators.ValidateRequest(req) + if err != nil { + return nil, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/disks/migrate_status" + + res, err := c.client.DecortApiCall(ctx, http.MethodGet, url, req) + if err != nil { + return nil, err + } + + status := MigrateStatus{} + + err = json.Unmarshal(res, &status) + if err != nil { + return nil, err + } + + return &status, nil +} diff --git a/pkg/cloudbroker/disks/models.go b/pkg/cloudbroker/disks/models.go index aa565aa..1ff9471 100644 --- a/pkg/cloudbroker/disks/models.go +++ b/pkg/cloudbroker/disks/models.go @@ -320,3 +320,20 @@ type ListTypes struct { // Entry count EntryCount uint64 `json:"entryCount"` } + +type MigrateStatus struct { + // Type + Type int `json:"type"` + + // Copy speed + Bandwidth int `json:"bandwidth"` + + // Current progress + Cur interface{} `json:"cur"` + + // Total size + End interface{} `json:"end"` + + // Progress percent + ProgressPercent int `json:"progress_percent"` +} diff --git a/pkg/cloudbroker/image/create_image.go b/pkg/cloudbroker/image/create_image.go index b9042c2..f56b8b3 100644 --- a/pkg/cloudbroker/image/create_image.go +++ b/pkg/cloudbroker/image/create_image.go @@ -11,7 +11,7 @@ import ( // CreateRequest struct to create image type CreateRequest struct { - // Name of the rescue disk + // Name of the image // Required: true Name string `url:"name" json:"name" validate:"required"` diff --git a/tests/platform_upgrade/request_map.go b/tests/platform_upgrade/request_map.go index 2785e4c..5e377f4 100644 --- a/tests/platform_upgrade/request_map.go +++ b/tests/platform_upgrade/request_map.go @@ -149,6 +149,8 @@ func getRequestsMapCloudAPI() map[string]interface{} { "/restmachine/cloudapi/compute/changeLinkState": compute.ChangeLinkStateRequest{}, "/restmachine/cloudapi/compute/change_security_groups": compute.ChangeSecGroupsRequest{}, "/restmachine/cloudapi/compute/clone": compute.CloneRequest{}, + "/restmachine/cloudapi/compute/clone_abort": compute.CloneAbortRequest{}, + "/restmachine/cloudapi/compute/clone_status": compute.GetCloneStatusRequest{}, "/restmachine/cloudapi/compute/createTemplate": compute.CreateTemplateRequest{}, "/restmachine/cloudapi/compute/createTemplateFromBlank": compute.CreateTemplateFromBlankRequest{}, "/restmachine/cloudapi/compute/delete": compute.DeleteRequest{}, @@ -529,111 +531,113 @@ func getRequestsMapCloudbroker() map[string]interface{} { "/restmachine/cloudbroker/backup/restoreDisksFromBackup": backup_cb.RestoreDisksFromBackupRequest{}, // compute_cb - "/restmachine/cloudapi/compute/abort_shared_snapshot_merge": compute.AbortSharedSnapshotMergeRequest{}, - "/restmachine/cloudapi/compute/shared_snapshot_merge_status": compute.SharedSnapshotMergeStatusRequest{}, - "/restmachine/cloudbroker/compute/affinityGroupCheckStart": compute_cb.AffinityGroupCheckStartRequest{}, - "/restmachine/cloudbroker/compute/affinityLabelRemove": compute_cb.AffinityLabelRemoveRequest{}, - "/restmachine/cloudbroker/compute/affinityLabelSet": compute_cb.AffinityLabelSetRequest{}, - "/restmachine/cloudbroker/compute/affinityRelations": compute_cb.AffinityRelationsRequest{}, - "/restmachine/cloudbroker/compute/affinityRuleAdd": compute_cb.AffinityRuleAddRequest{}, - "/restmachine/cloudbroker/compute/affinityRuleRemove": compute_cb.AffinityRuleRemoveRequest{}, - "/restmachine/cloudbroker/compute/affinityRulesClear": compute_cb.AffinityRulesClearRequest{}, - "/restmachine/cloudbroker/compute/antiAffinityRuleAdd": compute_cb.AntiAffinityRuleAddRequest{}, - "/restmachine/cloudbroker/compute/antiAffinityRuleRemove": compute_cb.AntiAffinityRuleRemoveRequest{}, - "/restmachine/cloudbroker/compute/antiAffinityRulesClear": compute_cb.AffinityRulesClearRequest{}, - "/restmachine/cloudbroker/compute/attachGpu": compute_cb.AttachGPURequest{}, - "/restmachine/cloudbroker/compute/attachPciDevice": compute_cb.AttachPCIDeviceRequest{}, - "/restmachine/cloudbroker/compute/audits": compute_cb.AuditsRequest{}, - "/restmachine/cloudbroker/compute/bootDiskSet": compute_cb.BootDiskSetRequest{}, - "/restmachine/cloudbroker/compute/bootOrderGet": compute_cb.BootOrderGetRequest{}, - "/restmachine/cloudbroker/compute/bootOrderSet": compute_cb.BootOrderSetRequest{}, - "/restmachine/cloudbroker/compute/cdEject": compute_cb.CDEjectRequest{}, - "/restmachine/cloudbroker/compute/cdInsert": compute_cb.CDInsertRequest{}, - "/restmachine/cloudbroker/compute/changeLinkState": compute_cb.ChangeLinkStateRequest{}, - "/restmachine/cloudbroker/compute/change_mtu": compute_cb.ChangeMTURequest{}, - "/restmachine/cloudbroker/compute/change_security_groups": compute_cb.ChangeSecGroupsRequest{}, - "/restmachine/cloudbroker/compute/clone": compute_cb.CloneRequest{}, - "/restmachine/cloudbroker/compute/computeciSet": compute_cb.ComputeCISetRequest{}, - "/restmachine/cloudbroker/compute/computeciUnset": compute_cb.ComputeCIUnsetRequest{}, - "/restmachine/cloudbroker/compute/createTemplate": compute_cb.CreateTemplateRequest{}, - "/restmachine/cloudbroker/compute/createTemplateFromBlank": compute_cb.CreateTemplateFromBlankRequest{}, - "/restmachine/cloudbroker/compute/delete": compute_cb.DeleteRequest{}, - "/restmachine/cloudbroker/compute/deleteCustomFields": compute_cb.DeleteCustomFieldsRequest{}, - "/restmachine/cloudbroker/compute/detachGpu": compute_cb.DetachGPURequest{}, - "/restmachine/cloudbroker/compute/detachPciDevice": compute_cb.DetachPCIDeviceRequest{}, - "/restmachine/cloudbroker/compute/disable": compute_cb.DisableRequest{}, - "/restmachine/cloudbroker/compute/diskAdd": compute_cb.DiskAddRequest{}, - "/restmachine/cloudbroker/compute/diskAttach": compute_cb.DiskAttachRequest{}, - "/restmachine/cloudbroker/compute/diskDel": compute_cb.DiskDelRequest{}, - "/restmachine/cloudbroker/compute/diskDetach": compute_cb.DiskDetachRequest{}, - "/restmachine/cloudbroker/compute/diskMigrate": compute_cb.DiskMigrateRequest{}, - "/restmachine/cloudbroker/compute/diskResize": compute_cb.DiskResizeRequest{}, - "/restmachine/cloudbroker/compute/diskSwitchToReplication": compute_cb.DiskSwitchToReplicationRequest{}, - "/restmachine/cloudbroker/compute/diskQos": compute_cb.DiskQOSRequest{}, - "/restmachine/cloudbroker/compute/enable": compute_cb.EnableRequest{}, - "/restmachine/cloudbroker/compute/get": compute_cb.GetRequest{}, - "/restmachine/cloudbroker/compute/getAudits": compute_cb.GetAuditsRequest{}, - "/restmachine/cloudbroker/compute/getConsoleUrl": compute_cb.GetConsoleURLRequest{}, - "/restmachine/cloudbroker/compute/getCustomFields": compute_cb.GetCustomFieldsRequest{}, - "/restmachine/cloudbroker/compute/getLog": compute_cb.GetLogRequest{}, - "/restmachine/cloudbroker/compute/list": compute_cb.ListRequest{}, - "/restmachine/cloudbroker/compute/listDeleted": compute_cb.ListDeletedRequest{}, - "/restmachine/cloudbroker/compute/listPciDevice": compute_cb.ListPCIDeviceRequest{}, - "/restmachine/cloudbroker/compute/listVGpu": compute_cb.ListVGPURequest{}, - "/restmachine/cloudbroker/compute/massDelete": compute_cb.MassDeleteRequest{}, - "/restmachine/cloudbroker/compute/massStart": compute_cb.MassStartRequest{}, - "/restmachine/cloudbroker/compute/massStop": compute_cb.MassStopRequest{}, - "/restmachine/cloudbroker/compute/massReboot": compute_cb.MassRebootRequest{}, - "/restmachine/cloudbroker/compute/migrate": compute_cb.MigrateRequest{}, - "/restmachine/cloudbroker/compute/migrateStorage": compute_cb.MigrateStorageRequest{}, - "/restmachine/cloudbroker/compute/migrateStorageAbort": compute_cb.MigrateStorageAbortRequest{}, - "/restmachine/cloudbroker/compute/migrateStorageCleanup": compute_cb.MigrateStorageCleanUpRequest{}, - "/restmachine/cloudbroker/compute/migrateStorageInfo": compute_cb.MigrateStorageInfoRequest{}, - "/restmachine/cloudbroker/compute/migrate_storage_list": compute_cb.MigrateStorageListRequest{}, - "/restmachine/cloudbroker/compute/moveToRg": compute_cb.MoveToRGRequest{}, - "/restmachine/cloudbroker/compute/netAttach": compute_cb.NetAttachRequest{}, - "/restmachine/cloudbroker/compute/netDetach": compute_cb.NetDetachRequest{}, - "/restmachine/cloudbroker/compute/netQos": compute_cb.NetQOSRequest{}, - "/restmachine/cloudbroker/compute/pfwAdd": compute_cb.PFWAddRequest{}, - "/restmachine/cloudbroker/compute/pfwDel": compute_cb.PFWDelRequest{}, - "/restmachine/cloudbroker/compute/pfwList": compute_cb.PFWListRequest{}, - "/restmachine/cloudbroker/compute/pause": compute_cb.PauseRequest{}, - "/restmachine/cloudbroker/compute/pinToStack": compute_cb.PinToStackRequest{}, - "/restmachine/cloudbroker/compute/powerCycle": compute_cb.PowerCycleRequest{}, - "/restmachine/cloudbroker/compute/raiseDown": EmptyStruct{}, - "/restmachine/cloudbroker/compute/reboot": compute_cb.RebootRequest{}, - "/restmachine/cloudbroker/compute/redeploy": compute_cb.RedeployRequest{}, - "/restmachine/cloudbroker/compute/reset": compute_cb.ResetRequest{}, - "/restmachine/cloudbroker/compute/resize": compute_cb.ResizeRequest{}, - "/restmachine/cloudbroker/compute/restore": compute_cb.RestoreRequest{}, - "/restmachine/cloudbroker/compute/resume": compute_cb.ResumeRequest{}, - "/restmachine/cloudbroker/compute/setCustomFields": compute_cb.SetCustomFieldsRequest{}, - "/restmachine/cloudbroker/compute/snapshotCreate": compute_cb.SnapshotCreateRequest{}, - "/restmachine/cloudbroker/compute/snapshotDelete": compute_cb.SnapshotDeleteRequest{}, - "/restmachine/cloudbroker/compute/snapshotEvictDisk": compute_cb.SnapshotEvictDiskRequest{}, - "/restmachine/cloudbroker/compute/snapshotList": compute_cb.SnapshotListRequest{}, - "/restmachine/cloudbroker/compute/snapshotRollback": compute_cb.SnapshotRollbackRequest{}, - "/restmachine/cloudbroker/compute/snapshotUsage": compute_cb.SnapshotUsageRequest{}, - "/restmachine/cloudbroker/compute/start": compute_cb.StartRequest{}, - "/restmachine/cloudbroker/compute/start_migration_in": compute_cb.StartMigrationINRequest{}, - "/restmachine/cloudbroker/compute/stop": compute_cb.StopRequest{}, - "/restmachine/cloudbroker/compute/stop_migration_in": compute_cb.StopMigrationINRequest{}, - "/restmachine/cloudbroker/compute/tagAdd": compute_cb.TagAddRequest{}, - "/restmachine/cloudbroker/compute/tagRemove": compute_cb.TagRemoveRequest{}, - "/restmachine/cloudbroker/compute/unpinFromStack": compute_cb.UnpinFromStackRequest{}, - "/restmachine/cloudbroker/compute/update": compute_cb.UpdateRequest{}, - "/restmachine/cloudbroker/compute/userGrant": compute_cb.UserGrantRequest{}, - "/restmachine/cloudbroker/compute/userList": compute_cb.UserListRequest{}, - "/restmachine/cloudbroker/compute/userRevoke": compute_cb.UserRevokeRequest{}, - "/restmachine/cloudbroker/compute/userUpdate": compute_cb.UserUpdateRequest{}, - "/restmachine/cloudbroker/compute/changeIp": compute_cb.ChangeIPRequest{}, - "/restmachine/cloudbroker/compute/changeMac": compute_cb.ChangeMACRequest{}, - "/restmachine/cloudbroker/compute/setNetConfig": compute_cb.SetNetConfigRequest{}, - "/restmachine/cloudbroker/compute/guest_agent_disable": compute_cb.GuestAgentDisableRequest{}, - "/restmachine/cloudbroker/compute/guest_agent_enable": compute_cb.GuestAgentEnableRequest{}, - "/restmachine/cloudbroker/compute/guest_agent_execute": compute_cb.GuestAgentExecuteRequest{}, - "/restmachine/cloudbroker/compute/guest_agent_feature_get": compute_cb.GuestAgentFeatureGetRequest{}, - "/restmachine/cloudbroker/compute/guest_agent_feature_update": compute_cb.GuestAgentFeatureUpdateRequest{}, + "/restmachine/cloudbroker/compute/abort_shared_snapshot_merge": compute_cb.AbortSharedSnapshotMergeRequest{}, + "/restmachine/cloudbroker/compute/shared_snapshot_merge_status": compute_cb.SharedSnapshotMergeStatusRequest{}, + "/restmachine/cloudbroker/compute/affinityGroupCheckStart": compute_cb.AffinityGroupCheckStartRequest{}, + "/restmachine/cloudbroker/compute/affinityLabelRemove": compute_cb.AffinityLabelRemoveRequest{}, + "/restmachine/cloudbroker/compute/affinityLabelSet": compute_cb.AffinityLabelSetRequest{}, + "/restmachine/cloudbroker/compute/affinityRelations": compute_cb.AffinityRelationsRequest{}, + "/restmachine/cloudbroker/compute/affinityRuleAdd": compute_cb.AffinityRuleAddRequest{}, + "/restmachine/cloudbroker/compute/affinityRuleRemove": compute_cb.AffinityRuleRemoveRequest{}, + "/restmachine/cloudbroker/compute/affinityRulesClear": compute_cb.AffinityRulesClearRequest{}, + "/restmachine/cloudbroker/compute/antiAffinityRuleAdd": compute_cb.AntiAffinityRuleAddRequest{}, + "/restmachine/cloudbroker/compute/antiAffinityRuleRemove": compute_cb.AntiAffinityRuleRemoveRequest{}, + "/restmachine/cloudbroker/compute/antiAffinityRulesClear": compute_cb.AffinityRulesClearRequest{}, + "/restmachine/cloudbroker/compute/attachGpu": compute_cb.AttachGPURequest{}, + "/restmachine/cloudbroker/compute/attachPciDevice": compute_cb.AttachPCIDeviceRequest{}, + "/restmachine/cloudbroker/compute/audits": compute_cb.AuditsRequest{}, + "/restmachine/cloudbroker/compute/bootDiskSet": compute_cb.BootDiskSetRequest{}, + "/restmachine/cloudbroker/compute/bootOrderGet": compute_cb.BootOrderGetRequest{}, + "/restmachine/cloudbroker/compute/bootOrderSet": compute_cb.BootOrderSetRequest{}, + "/restmachine/cloudbroker/compute/cdEject": compute_cb.CDEjectRequest{}, + "/restmachine/cloudbroker/compute/cdInsert": compute_cb.CDInsertRequest{}, + "/restmachine/cloudbroker/compute/changeLinkState": compute_cb.ChangeLinkStateRequest{}, + "/restmachine/cloudbroker/compute/change_mtu": compute_cb.ChangeMTURequest{}, + "/restmachine/cloudbroker/compute/change_security_groups": compute_cb.ChangeSecGroupsRequest{}, + "/restmachine/cloudbroker/compute/clone": compute_cb.CloneRequest{}, + "/restmachine/cloudbroker/compute/clone_abort": compute_cb.CloneAbortRequest{}, + "/restmachine/cloudbroker/compute/clone_status": compute_cb.GetCloneStatusRequest{}, + "/restmachine/cloudbroker/compute/computeciSet": compute_cb.ComputeCISetRequest{}, + "/restmachine/cloudbroker/compute/computeciUnset": compute_cb.ComputeCIUnsetRequest{}, + "/restmachine/cloudbroker/compute/createTemplate": compute_cb.CreateTemplateRequest{}, + "/restmachine/cloudbroker/compute/createTemplateFromBlank": compute_cb.CreateTemplateFromBlankRequest{}, + "/restmachine/cloudbroker/compute/delete": compute_cb.DeleteRequest{}, + "/restmachine/cloudbroker/compute/deleteCustomFields": compute_cb.DeleteCustomFieldsRequest{}, + "/restmachine/cloudbroker/compute/detachGpu": compute_cb.DetachGPURequest{}, + "/restmachine/cloudbroker/compute/detachPciDevice": compute_cb.DetachPCIDeviceRequest{}, + "/restmachine/cloudbroker/compute/disable": compute_cb.DisableRequest{}, + "/restmachine/cloudbroker/compute/diskAdd": compute_cb.DiskAddRequest{}, + "/restmachine/cloudbroker/compute/diskAttach": compute_cb.DiskAttachRequest{}, + "/restmachine/cloudbroker/compute/diskDel": compute_cb.DiskDelRequest{}, + "/restmachine/cloudbroker/compute/diskDetach": compute_cb.DiskDetachRequest{}, + "/restmachine/cloudbroker/compute/diskMigrate": compute_cb.DiskMigrateRequest{}, + "/restmachine/cloudbroker/compute/diskResize": compute_cb.DiskResizeRequest{}, + "/restmachine/cloudbroker/compute/diskSwitchToReplication": compute_cb.DiskSwitchToReplicationRequest{}, + "/restmachine/cloudbroker/compute/diskQos": compute_cb.DiskQOSRequest{}, + "/restmachine/cloudbroker/compute/enable": compute_cb.EnableRequest{}, + "/restmachine/cloudbroker/compute/get": compute_cb.GetRequest{}, + "/restmachine/cloudbroker/compute/getAudits": compute_cb.GetAuditsRequest{}, + "/restmachine/cloudbroker/compute/getConsoleUrl": compute_cb.GetConsoleURLRequest{}, + "/restmachine/cloudbroker/compute/getCustomFields": compute_cb.GetCustomFieldsRequest{}, + "/restmachine/cloudbroker/compute/getLog": compute_cb.GetLogRequest{}, + "/restmachine/cloudbroker/compute/list": compute_cb.ListRequest{}, + "/restmachine/cloudbroker/compute/listDeleted": compute_cb.ListDeletedRequest{}, + "/restmachine/cloudbroker/compute/listPciDevice": compute_cb.ListPCIDeviceRequest{}, + "/restmachine/cloudbroker/compute/listVGpu": compute_cb.ListVGPURequest{}, + "/restmachine/cloudbroker/compute/massDelete": compute_cb.MassDeleteRequest{}, + "/restmachine/cloudbroker/compute/massStart": compute_cb.MassStartRequest{}, + "/restmachine/cloudbroker/compute/massStop": compute_cb.MassStopRequest{}, + "/restmachine/cloudbroker/compute/massReboot": compute_cb.MassRebootRequest{}, + "/restmachine/cloudbroker/compute/migrate": compute_cb.MigrateRequest{}, + "/restmachine/cloudbroker/compute/migrateStorage": compute_cb.MigrateStorageRequest{}, + "/restmachine/cloudbroker/compute/migrateStorageAbort": compute_cb.MigrateStorageAbortRequest{}, + "/restmachine/cloudbroker/compute/migrateStorageCleanup": compute_cb.MigrateStorageCleanUpRequest{}, + "/restmachine/cloudbroker/compute/migrateStorageInfo": compute_cb.MigrateStorageInfoRequest{}, + "/restmachine/cloudbroker/compute/migrate_storage_list": compute_cb.MigrateStorageListRequest{}, + "/restmachine/cloudbroker/compute/moveToRg": compute_cb.MoveToRGRequest{}, + "/restmachine/cloudbroker/compute/netAttach": compute_cb.NetAttachRequest{}, + "/restmachine/cloudbroker/compute/netDetach": compute_cb.NetDetachRequest{}, + "/restmachine/cloudbroker/compute/netQos": compute_cb.NetQOSRequest{}, + "/restmachine/cloudbroker/compute/pfwAdd": compute_cb.PFWAddRequest{}, + "/restmachine/cloudbroker/compute/pfwDel": compute_cb.PFWDelRequest{}, + "/restmachine/cloudbroker/compute/pfwList": compute_cb.PFWListRequest{}, + "/restmachine/cloudbroker/compute/pause": compute_cb.PauseRequest{}, + "/restmachine/cloudbroker/compute/pinToStack": compute_cb.PinToStackRequest{}, + "/restmachine/cloudbroker/compute/powerCycle": compute_cb.PowerCycleRequest{}, + "/restmachine/cloudbroker/compute/raiseDown": EmptyStruct{}, + "/restmachine/cloudbroker/compute/reboot": compute_cb.RebootRequest{}, + "/restmachine/cloudbroker/compute/redeploy": compute_cb.RedeployRequest{}, + "/restmachine/cloudbroker/compute/reset": compute_cb.ResetRequest{}, + "/restmachine/cloudbroker/compute/resize": compute_cb.ResizeRequest{}, + "/restmachine/cloudbroker/compute/restore": compute_cb.RestoreRequest{}, + "/restmachine/cloudbroker/compute/resume": compute_cb.ResumeRequest{}, + "/restmachine/cloudbroker/compute/setCustomFields": compute_cb.SetCustomFieldsRequest{}, + "/restmachine/cloudbroker/compute/snapshotCreate": compute_cb.SnapshotCreateRequest{}, + "/restmachine/cloudbroker/compute/snapshotDelete": compute_cb.SnapshotDeleteRequest{}, + "/restmachine/cloudbroker/compute/snapshotEvictDisk": compute_cb.SnapshotEvictDiskRequest{}, + "/restmachine/cloudbroker/compute/snapshotList": compute_cb.SnapshotListRequest{}, + "/restmachine/cloudbroker/compute/snapshotRollback": compute_cb.SnapshotRollbackRequest{}, + "/restmachine/cloudbroker/compute/snapshotUsage": compute_cb.SnapshotUsageRequest{}, + "/restmachine/cloudbroker/compute/start": compute_cb.StartRequest{}, + "/restmachine/cloudbroker/compute/start_migration_in": compute_cb.StartMigrationINRequest{}, + "/restmachine/cloudbroker/compute/stop": compute_cb.StopRequest{}, + "/restmachine/cloudbroker/compute/stop_migration_in": compute_cb.StopMigrationINRequest{}, + "/restmachine/cloudbroker/compute/tagAdd": compute_cb.TagAddRequest{}, + "/restmachine/cloudbroker/compute/tagRemove": compute_cb.TagRemoveRequest{}, + "/restmachine/cloudbroker/compute/unpinFromStack": compute_cb.UnpinFromStackRequest{}, + "/restmachine/cloudbroker/compute/update": compute_cb.UpdateRequest{}, + "/restmachine/cloudbroker/compute/userGrant": compute_cb.UserGrantRequest{}, + "/restmachine/cloudbroker/compute/userList": compute_cb.UserListRequest{}, + "/restmachine/cloudbroker/compute/userRevoke": compute_cb.UserRevokeRequest{}, + "/restmachine/cloudbroker/compute/userUpdate": compute_cb.UserUpdateRequest{}, + "/restmachine/cloudbroker/compute/changeIp": compute_cb.ChangeIPRequest{}, + "/restmachine/cloudbroker/compute/changeMac": compute_cb.ChangeMACRequest{}, + "/restmachine/cloudbroker/compute/setNetConfig": compute_cb.SetNetConfigRequest{}, + "/restmachine/cloudbroker/compute/guest_agent_disable": compute_cb.GuestAgentDisableRequest{}, + "/restmachine/cloudbroker/compute/guest_agent_enable": compute_cb.GuestAgentEnableRequest{}, + "/restmachine/cloudbroker/compute/guest_agent_execute": compute_cb.GuestAgentExecuteRequest{}, + "/restmachine/cloudbroker/compute/guest_agent_feature_get": compute_cb.GuestAgentFeatureGetRequest{}, + "/restmachine/cloudbroker/compute/guest_agent_feature_update": compute_cb.GuestAgentFeatureUpdateRequest{}, // disks "/restmachine/cloudbroker/disks/change_disk_storage_policy": disks_cb.ChangeDiskStoragePolicyRequest{}, @@ -664,6 +668,9 @@ func getRequestsMapCloudbroker() map[string]interface{} { "/restmachine/cloudbroker/disks/snapshotDelete": disks_cb.SnapshotDeleteRequest{}, "/restmachine/cloudbroker/disks/snapshotRollback": disks_cb.SnapshotRollbackRequest{}, "/restmachine/cloudbroker/disks/unshare": disks_cb.UnshareRequest{}, + "/restmachine/cloudbroker/disks/migrate": disks_cb.MigrateRequest{}, + "/restmachine/cloudbroker/disks/migrate_abort": disks_cb.MigrateAbortRequest{}, + "/restmachine/cloudbroker/disks/migrate_status": disks_cb.GetMigrateStatusRequest{}, // dpdknet "/restmachine/cloudbroker/dpdknet/get": dpdknet_cb.GetRequest{},