You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
package compute
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants"
|
|
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
|
)
|
|
|
|
// OSUsers struct contains OS user data for Guest OS.
|
|
// Must be provided if NewVMUUID is provided.
|
|
type OSUser struct {
|
|
// Login of a user
|
|
Login string `url:"login,omitempty" json:"login,omitempty"`
|
|
|
|
// Password of a user
|
|
Password string `url:"password,omitempty" json:"password,omitempty"`
|
|
|
|
// GUID
|
|
GUID string `url:"guid,omitempty" json:"guid,omitempty"`
|
|
|
|
// Pubkey
|
|
Pubkey string `url:"pubkey,omitempty" json:"pubkey,omitempty"`
|
|
}
|
|
|
|
// StopMigrationINRequest struct to stop compute for external migration in
|
|
type StopMigrationINRequest struct {
|
|
// ID of compute instance
|
|
// Required: true
|
|
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
|
|
|
|
// If provided, indicates the UUID of the VM on the target host and that migration completed.
|
|
// Required: false
|
|
NewVMUUID string `url:"new_vm_uuid,omitempty" json:"new_vm_uuid,omitempty"`
|
|
|
|
// OS user data for Guest OS
|
|
// Required: false
|
|
OSUsers []OSUser `url:"os_users,omitempty" json:"os_users,omitempty"`
|
|
}
|
|
|
|
// StopMigrationIN stops compute for external migration in
|
|
func (c Compute) StopMigrationIN(ctx context.Context, req StopMigrationINRequest) (string, error) {
|
|
err := validators.ValidateRequest(req)
|
|
if err != nil {
|
|
return "", validators.ValidationErrors(validators.GetErrors(err))
|
|
}
|
|
|
|
url := "/cloudbroker/compute/stop_migration_in"
|
|
|
|
res, err := c.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(res), nil
|
|
}
|