Files
decort-golang-sdk/samples/client/client.go

43 lines
957 B
Go
Raw Normal View History

2025-11-18 14:42:39 +03:00
package client
import (
"context"
"fmt"
"errors"
decortsdk "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/compute"
)
type Migrator interface {
Migrate(ctxOrigin context.Context, vmUUID, to uint64) (bool, error)
}
type migrator struct {
cfg *Config
client decortsdk.ClientInterface
}
func NewMigrator(cfg *Config, c decortsdk.ClientInterface) Migrator {
return &migrator{
cfg: cfg,
client: c,
}
}
2026-04-03 16:26:42 +03:00
func (m *migrator) Migrate(ctxOrigin context.Context, dxVMID, nodeID uint64) (bool, error) {
2025-11-18 14:42:39 +03:00
req := compute.MigrateRequest{
2026-04-03 16:26:42 +03:00
ComputeID: dxVMID,
TargetNodeID: nodeID,
Force: false,
2025-11-18 14:42:39 +03:00
}
ctx, cancel := context.WithTimeout(ctxOrigin, m.cfg.QueryTimeout)
ok, err := m.client.CloudBroker().Compute().Migrate(ctx, req)
cancel()
if err != nil {
2026-04-03 16:26:42 +03:00
return false, errors.Join(err, fmt.Errorf("Migrate VM %d to Node %d", dxVMID, nodeID))
2025-11-18 14:42:39 +03:00
}
return ok, nil
}