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 }