dsl struct tags; wip
diff --git a/openstack/compute/v2/extensions/servergroups/requests.go b/openstack/compute/v2/extensions/servergroups/requests.go
index 212edac..1348cfa 100644
--- a/openstack/compute/v2/extensions/servergroups/requests.go
+++ b/openstack/compute/v2/extensions/servergroups/requests.go
@@ -21,61 +21,40 @@
// CreateOpts specifies a Server Group allocation request
type CreateOpts struct {
// Name is the name of the server group
- Name string
-
+ Name string `json:"name" required:"true"`
// Policies are the server group policies
- Policies []string
+ Policies []string `json:"policies" required:"true"`
}
// ToServerGroupCreateMap constructs a request body from CreateOpts.
func (opts CreateOpts) ToServerGroupCreateMap() (map[string]interface{}, error) {
- if opts.Name == "" {
- err := gophercloud.ErrMissingInput{}
- err.Function = "servergroups.ToServerGroupCreateMap"
- err.Argument = "servergroups.CreateOpts.Name"
- return nil, err
- }
-
- if len(opts.Policies) < 1 {
- err := gophercloud.ErrMissingInput{}
- err.Function = "servergroups.ToServerGroupCreateMap"
- err.Argument = "servergroups.CreateOpts.Policies"
- return nil, err
- }
-
- serverGroup := make(map[string]interface{})
- serverGroup["name"] = opts.Name
- serverGroup["policies"] = opts.Policies
-
- return map[string]interface{}{"server_group": serverGroup}, nil
+ return gophercloud.BuildRequestBody(opts, "server_group")
}
// Create requests the creation of a new Server Group
func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult {
- var res CreateResult
-
- reqBody, err := opts.ToServerGroupCreateMap()
+ var r CreateResult
+ b, err := opts.ToServerGroupCreateMap()
if err != nil {
- res.Err = err
- return res
+ r.Err = err
+ return r
}
-
- _, res.Err = client.Post(createURL(client), reqBody, &res.Body, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{
OkCodes: []int{200},
})
- return res
+ return r
}
// Get returns data about a previously created ServerGroup.
func Get(client *gophercloud.ServiceClient, id string) GetResult {
- var res GetResult
- _, res.Err = client.Get(getURL(client, id), &res.Body, nil)
- return res
+ var r GetResult
+ _, r.Err = client.Get(getURL(client, id), &r.Body, nil)
+ return r
}
// Delete requests the deletion of a previously allocated ServerGroup.
func Delete(client *gophercloud.ServiceClient, id string) DeleteResult {
- var res DeleteResult
- _, res.Err = client.Delete(deleteURL(client, id), nil)
- return res
+ var r DeleteResult
+ _, r.Err = client.Delete(deleteURL(client, id), nil)
+ return r
}