-
Notifications
You must be signed in to change notification settings - Fork 0
/
results.go
87 lines (73 loc) · 2.34 KB
/
results.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package servergroups
import (
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
// A ServerGroup creates a policy for instance placement in the cloud.
type ServerGroup struct {
// ID is the unique ID of the Server Group.
ID string `json:"id"`
// Name is the common name of the server group.
Name string `json:"name"`
// Polices are the group policies.
//
// Normally a single policy is applied:
//
// "affinity" will place all servers within the server group on the
// same compute node.
//
// "anti-affinity" will place servers within the server group on different
// compute nodes.
Policies []string `json:"policies"`
// Members are the members of the server group.
Members []string `json:"members"`
// Metadata includes a list of all user-specified key-value pairs attached
// to the Server Group.
Metadata map[string]interface{}
}
// ServerGroupPage stores a single page of all ServerGroups results from a
// List call.
type ServerGroupPage struct {
pagination.SinglePageBase
}
// IsEmpty determines whether or not a ServerGroupsPage is empty.
func (page ServerGroupPage) IsEmpty() (bool, error) {
va, err := ExtractServerGroups(page)
return len(va) == 0, err
}
// ExtractServerGroups interprets a page of results as a slice of
// ServerGroups.
func ExtractServerGroups(r pagination.Page) ([]ServerGroup, error) {
var s struct {
ServerGroups []ServerGroup `json:"server_groups"`
}
err := (r.(ServerGroupPage)).ExtractInto(&s)
return s.ServerGroups, err
}
type ServerGroupResult struct {
gophercloud.Result
}
// Extract is a method that attempts to interpret any Server Group resource
// response as a ServerGroup struct.
func (r ServerGroupResult) Extract() (*ServerGroup, error) {
var s struct {
ServerGroup *ServerGroup `json:"server_group"`
}
err := r.ExtractInto(&s)
return s.ServerGroup, err
}
// CreateResult is the response from a Create operation. Call its Extract method
// to interpret it as a ServerGroup.
type CreateResult struct {
ServerGroupResult
}
// GetResult is the response from a Get operation. Call its Extract method to
// interpret it as a ServerGroup.
type GetResult struct {
ServerGroupResult
}
// DeleteResult is the response from a Delete operation. Call its ExtractErr
// method to determine if the call succeeded or failed.
type DeleteResult struct {
gophercloud.ErrResult
}