1package servergroups
2
3import "github.com/gophercloud/gophercloud"
4
5// ExtractPolicy will extract the policy attribute.
6// This requires the client to be set to microversion 2.64 or later.
7func ExtractPolicy(r gophercloud.Result) (string, error) {
8	var s struct {
9		Policy string `json:"policy"`
10	}
11	err := r.ExtractIntoStructPtr(&s, "server_group")
12
13	return s.Policy, err
14}
15
16// ExtractRules will extract the rules attribute.
17// This requires the client to be set to microversion 2.64 or later.
18func ExtractRules(r gophercloud.Result) (Rules, error) {
19	var s struct {
20		Rules Rules `json:"rules"`
21	}
22	err := r.ExtractIntoStructPtr(&s, "server_group")
23
24	return s.Rules, err
25}
26
27// Rules represents set of rules for a policy.
28type Rules struct {
29	// MaxServerPerHost specifies how many servers can reside on a single compute host.
30	// It can be used only with the "anti-affinity" policy.
31	MaxServerPerHost int `json:"max_server_per_host,omitempty"`
32}
33