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  }