package disks import ( "context" "net/http" "repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/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 of the storage policy // Required: true StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id" validate:"required"` } type wrapperMigrateRequest struct { MigrateRequest AsyncMode bool `url:"async_mode" json:"async_mode"` } // Move moves disk to another sep, pool and storage policy in sync mode func (c Disks) Migrate(ctx context.Context, req MigrateRequest) (string, error) { err := validators.ValidateRequest(req) if err != nil { return "", validators.ValidationErrors(validators.GetErrors(err)) } wrappedReq := wrapperMigrateRequest{ MigrateRequest: req, AsyncMode: false, } url := "/cloudbroker/disks/migrate" res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, wrappedReq) if err != nil { return "", err } result := string(res) return result, nil } // Move moves disk to another sep, pool and storage policy in async mode func (c Disks) MigrateAsync(ctx context.Context, req MigrateRequest) (string, error) { err := validators.ValidateRequest(req) if err != nil { return "", validators.ValidationErrors(validators.GetErrors(err)) } wrappedReq := wrapperMigrateRequest{ MigrateRequest: req, AsyncMode: true, } url := "/cloudbroker/disks/migrate" res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, wrappedReq) if err != nil { return "", err } result := string(res) return result, nil }