github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/elb/v3/policies/results.go (about) 1 package policies 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/openstack/common/structs" 6 "github.com/opentelekomcloud/gophertelekomcloud/openstack/elb/v3/rules" 7 "github.com/opentelekomcloud/gophertelekomcloud/pagination" 8 ) 9 10 type Policy struct { 11 ID string `json:"id"` 12 Action Action `json:"action"` 13 Description string `json:"description"` 14 ListenerID string `json:"listener_id"` 15 Name string `json:"name"` 16 Position int `json:"position"` 17 Priority int `json:"priority"` 18 ProjectID string `json:"project_id"` 19 Status string `json:"provisioning_status"` 20 RedirectListenerID string `json:"redirect_listener_id"` 21 RedirectPoolID string `json:"redirect_pool_id"` 22 Rules []structs.ResourceRef `json:"rules"` 23 Conditions []rules.Condition `json:"conditions"` 24 FixedResponseConfig FixedResponseOptions `json:"fixed_response_config"` 25 RedirectUrl string `json:"redirect_url"` 26 RedirectUrlConfig RedirectUrlOptions `json:"redirect_url_config"` 27 RedirectPoolsConfig []RedirectPoolOptions `json:"redirect_pools_config"` 28 } 29 30 type commonResult struct { 31 golangsdk.Result 32 } 33 34 func (r commonResult) Extract() (*Policy, error) { 35 p := &Policy{} 36 err := r.ExtractIntoStructPtr(p, "l7policy") 37 if err != nil { 38 return nil, err 39 } 40 return p, nil 41 } 42 43 type CreateResult struct { 44 commonResult 45 } 46 47 type GetResult struct { 48 commonResult 49 } 50 51 type UpdateResult struct { 52 commonResult 53 } 54 55 type DeleteResult struct { 56 golangsdk.ErrResult 57 } 58 59 type PolicyPage struct { 60 pagination.PageWithInfo 61 } 62 63 func (p PolicyPage) IsEmpty() (bool, error) { 64 l, err := ExtractPolicies(p) 65 if err != nil { 66 return false, err 67 } 68 return len(l) == 0, nil 69 } 70 71 func ExtractPolicies(p pagination.Page) ([]Policy, error) { 72 var policies []Policy 73 err := p.(PolicyPage).ExtractIntoSlicePtr(&policies, "l7policies") 74 if err != nil { 75 return nil, err 76 } 77 return policies, nil 78 }