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.
decort-golang-sdk/pkg/cloudbroker/disks/get.go

49 lines
1.3 KiB

package disks
import (
"context"
"encoding/json"
"net/http"
3 years ago
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
2 years ago
// GetRequest struct to get information about disk
type GetRequest struct {
3 years ago
// ID of the disk
// Required: true
3 years ago
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`
}
2 years ago
// Get gets disk details as a RecordDisk struct.
3 years ago
// Notice: the devicename field is the name as it is passed to the kernel (kname in linux) for unattached disks this field has no relevant value
func (d Disks) Get(ctx context.Context, req GetRequest) (*RecordDisk, error) {
2 years ago
res, err := d.GetRaw(ctx, req)
if err != nil {
return nil, err
}
3 years ago
info := RecordDisk{}
3 years ago
err = json.Unmarshal(res, &info)
if err != nil {
return nil, err
}
3 years ago
return &info, nil
}
2 years ago
// GetRaw gets disk details as an array of bytes.
// Notice: the devicename field is the name as it is passed to the kernel (kname in linux) for unattached disks this field has no relevant value
func (d Disks) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) {
err := validators.ValidateRequest(req)
if err != nil {
2 years ago
return nil, validators.ValidationErrors(validators.GetErrors(err))
2 years ago
}
url := "/cloudbroker/disks/get"
res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req)
return res, err
}