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/bservice/group_add.go

76 lines
1.7 KiB

package bservice
import (
"context"
"errors"
"strconv"
"github.com/rudecs/decort-sdk/opts"
"github.com/rudecs/decort-sdk/typed"
)
type GroupAddRequest struct {
ServiceID uint64 `url:"serviceId"`
Name string `url:"name"`
Count uint64 `url:"count"`
CPU uint64 `url:"cpu"`
RAM uint64 `url:"ram"`
Disk uint64 `url:"disk"`
ImageID uint64 `url:"imageId"`
Driver string `url:"driver"`
Role string `url:"role,omitempty"`
VINSes []uint64 `url:"vinses,omitempty"`
Extnets []uint64 `url:"extnets,omitempty"`
TimeoutStart uint64 `url:"timeoutStart"`
}
func (bsrq GroupAddRequest) Validate() error {
if bsrq.ServiceID == 0 {
return errors.New("field ServiceID can not be empty or equal to 0")
}
if bsrq.Name == "" {
return errors.New("field Name can not be empty")
}
if bsrq.Count == 0 {
return errors.New("field Count can not be empty or equal to 0")
}
if bsrq.CPU == 0 {
return errors.New("field CPU can not be empty or equal to 0")
}
if bsrq.RAM == 0 {
return errors.New("field RAM can not be empty or equal to 0")
}
if bsrq.Disk == 0 {
return errors.New("field Disk can not be empty or equal to 0")
}
if bsrq.ImageID == 0 {
return errors.New("field ImageID can not be empty or equal to 0")
}
if bsrq.Driver == "" {
return errors.New("field Driver can not be empty")
}
return nil
}
func (b BService) GroupAdd(ctx context.Context, req GroupAddRequest, options ...opts.DecortOpts) (uint64, error) {
if err := req.Validate(); err != nil {
return 0, err
}
url := "/cloudapi/bservice/groupAdd"
res, err := b.client.DecortApiCall(ctx, typed.POST, url, req)
if err != nil {
return 0, err
}
return strconv.ParseUint(string(res), 10, 64)
}