diff --git a/openstack/rds/v3/backups/requests.go b/openstack/rds/v3/backups/requests.go new file mode 100644 index 000000000..bf37ea7b0 --- /dev/null +++ b/openstack/rds/v3/backups/requests.go @@ -0,0 +1,43 @@ +package backups + +import ( + "github.com/huaweicloud/golangsdk" +) + +var RequestOpts golangsdk.RequestOpts = golangsdk.RequestOpts{ + MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"}, +} + +// UpdateOptsBuilder allows extensions to add additional parameters to the +// Update request. +type UpdateOptsBuilder interface { + ToBackupUpdateMap() (map[string]interface{}, error) +} + +// UpdateOpts contains all the values needed to update a Backup. +type UpdateOpts struct { + //Keep Days + KeepDays *int `json:"keep_days" required:"true"` + //Start Time + StartTime string `json:"start_time,omitempty"` + //Period + Period string `json:"period,omitempty"` +} + +// ToBackupUpdateMap builds a update request body from UpdateOpts. +func (opts UpdateOpts) ToBackupUpdateMap() (map[string]interface{}, error) { + return golangsdk.BuildRequestBody(opts, "backup_policy") +} + +// Update accepts a UpdateOpts struct and uses the values to update a Backup.The response code from api is 200 +func Update(c *golangsdk.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { + b, err := opts.ToBackupUpdateMap() + if err != nil { + r.Err = err + return + } + reqOpt := &golangsdk.RequestOpts{OkCodes: []int{200}, + MoreHeaders: RequestOpts.MoreHeaders} + _, r.Err = c.Put(resourceURL(c, id), b, nil, reqOpt) + return +} diff --git a/openstack/rds/v3/backups/results.go b/openstack/rds/v3/backups/results.go new file mode 100644 index 000000000..1e9382f8a --- /dev/null +++ b/openstack/rds/v3/backups/results.go @@ -0,0 +1,10 @@ +package backups + +import ( + "github.com/huaweicloud/golangsdk" +) + +// UpdateResult represents the result of a update operation. +type UpdateResult struct { + golangsdk.ErrResult +} diff --git a/openstack/rds/v3/backups/urls.go b/openstack/rds/v3/backups/urls.go new file mode 100644 index 000000000..bed6f5912 --- /dev/null +++ b/openstack/rds/v3/backups/urls.go @@ -0,0 +1,7 @@ +package backups + +import "github.com/huaweicloud/golangsdk" + +func resourceURL(c *golangsdk.ServiceClient, id string) string { + return c.ServiceURL("instances", id, "backups/policy") +}