package compute import ( "context" "net/http" "strconv" "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) // UpdateRequest struct to update compute type UpdateRequest struct { // ID of the compute // Required: true ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"` // New name // Required: false Name string `url:"name,omitempty" json:"name,omitempty"` // New description // Required: false Description string `url:"desc,omitempty" json:"desc,omitempty"` // Rule for VM placement with NUMA affinity. // Possible values - none (placement without NUMA affinity), // strict (strictly with NUMA affinity, if not possible - do not start VM), // loose (use NUMA affinity if possible) // Required: false // Default: none NumaAffinity string `url:"numaAffinity,omitempty" json:"numaAffinity,omitempty" validate:"omitempty,numaAffinity"` // Run VM on dedicated CPUs. To use this feature, the system must be pre-configured by allocating CPUs on the physical node // Required: false // Default: false CPUPin bool `url:"cpupin" json:"cpupin"` // Type of the emulated system, Q35 or i440fx // Required: false Chipset string `url:"chipset,omitempty" json:"chipset,omitempty" validate:"omitempty,chipset"` // Use Huge Pages to allocate RAM of the virtual machine. The system must be pre-configured by allocating Huge Pages on the physical node // Required: false // Default: false HPBacked bool `url:"hpBacked" json:"hpBacked"` } // Update updates some properties of the compute func (c Compute) Update(ctx context.Context, req UpdateRequest) (bool, error) { err := validators.ValidateRequest(req) if err != nil { return false, validators.ValidationErrors(validators.GetErrors(err)) } url := "/cloudapi/compute/update" 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 }