Files
decort-golang-sdk/pkg/cloudbroker/disks/get.go

49 lines
1.3 KiB
Go
Raw Normal View History

2022-10-03 16:56:47 +03:00
package disks
import (
"context"
"encoding/json"
"net/http"
2023-03-24 17:09:30 +03:00
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
2022-10-03 16:56:47 +03:00
)
2023-10-23 12:40:54 +03:00
// GetRequest struct to get information about disk
2022-10-03 16:56:47 +03:00
type GetRequest struct {
2022-12-22 17:56:47 +03:00
// ID of the disk
// Required: true
2023-03-24 17:09:30 +03:00
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`
2022-10-03 16:56:47 +03:00
}
2023-10-23 12:40:54 +03:00
// Get gets disk details as a RecordDisk struct.
2022-12-22 17:56:47 +03:00
// 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) {
2023-10-23 12:40:54 +03:00
res, err := d.GetRaw(ctx, req)
2022-10-03 16:56:47 +03:00
if err != nil {
return nil, err
}
2022-12-22 17:56:47 +03:00
info := RecordDisk{}
2022-10-03 16:56:47 +03:00
2022-12-22 17:56:47 +03:00
err = json.Unmarshal(res, &info)
2022-10-03 16:56:47 +03:00
if err != nil {
return nil, err
}
2022-12-22 17:56:47 +03:00
return &info, nil
2022-10-03 16:56:47 +03:00
}
2023-10-23 12:40:54 +03:00
// 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 {
2023-10-25 17:37:18 +03:00
return nil, validators.ValidationErrors(validators.GetErrors(err))
2023-10-23 12:40:54 +03:00
}
url := "/cloudbroker/disks/get"
res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req)
return res, err
}