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