github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/cbr/v3/policies/update.go (about)

     1  package policies
     2  
     3  import (
     4  	"github.com/opentelekomcloud/gophertelekomcloud"
     5  	"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
     6  )
     7  
     8  type UpdateOpts struct {
     9  	Enabled             *bool           `json:"enabled,omitempty"`
    10  	Name                string          `json:"name,omitempty"`
    11  	OperationDefinition *PolicyODCreate `json:"operation_definition,omitempty"`
    12  	Trigger             *Trigger        `json:"trigger,omitempty"`
    13  }
    14  
    15  // PolicyODCreate is policy operation definition
    16  // see https://docs.otc.t-systems.com/en-us/api/cbr/CreatePolicy.html#CreatePolicy__request_PolicyoODCreate
    17  type PolicyODCreate struct {
    18  	DailyBackups          int    `json:"day_backups"`
    19  	WeekBackups           int    `json:"week_backups"`
    20  	YearBackups           int    `json:"year_backups"`
    21  	MonthBackups          int    `json:"month_backups"`
    22  	MaxBackups            int    `json:"max_backups,omitempty"`
    23  	RetentionDurationDays int    `json:"retention_duration_days,omitempty"`
    24  	Timezone              string `json:"timezone,omitempty"`
    25  }
    26  
    27  func Update(client *golangsdk.ServiceClient, id string, opts UpdateOpts) (*Policy, error) {
    28  	b, err := golangsdk.BuildRequestBody(opts, "policy")
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	raw, err := client.Put(client.ServiceURL("policies", id), b, nil, &golangsdk.RequestOpts{
    34  		OkCodes: []int{200},
    35  	})
    36  	if err != nil {
    37  		return nil, err
    38  	}
    39  
    40  	var res Policy
    41  	err = extract.IntoStructPtr(raw.Body, &res, "policy")
    42  	return &res, err
    43  }