Skip to content
This repository was archived by the owner on Aug 1, 2023. It is now read-only.

Commit e6f92c9

Browse files
author
Samuel Ortiz
committed
imageservice: Use UpdateOptsBuilder for the members Update() method
So that we can easily extend it to support more than just status updating. Signed-off-by: Samuel Ortiz <[email protected]>
1 parent a9520d6 commit e6f92c9

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

openstack/imageservice/v2/members/requests.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,32 @@ func Delete(client *gophercloud.ServiceClient, imageID string, memberID string)
8484
return res
8585
}
8686

87-
// Update fuction updates member
87+
// UpdateOptsBuilder allows extensions to add additional attributes to the Update request.
88+
type UpdateOptsBuilder interface {
89+
ToMemberUpdateMap() map[string]interface{}
90+
}
91+
92+
// UpdateOpts implements UpdateOptsBuilder
93+
type UpdateOpts struct {
94+
Status string
95+
}
96+
97+
// ToMemberUpdateMap formats an UpdateOpts structure into a request body.
98+
func (opts UpdateOpts) ToMemberUpdateMap() map[string]interface{} {
99+
m := make(map[string]interface{})
100+
101+
if opts.Status != "" {
102+
m["status"] = opts.Status
103+
}
104+
105+
return m
106+
}
107+
108+
// Update function updates member
88109
// More details: http://developer.openstack.org/api-ref-image-v2.html#updateImageMember-v2
89-
func Update(client *gophercloud.ServiceClient, imageID string, memberID string, status string) MemberUpdateResult {
110+
func Update(client *gophercloud.ServiceClient, imageID string, memberID string, opts UpdateOptsBuilder) MemberUpdateResult {
90111
var res MemberUpdateResult
91-
body := map[string]interface{}{}
92-
body["status"] = status
112+
body := opts.ToMemberUpdateMap()
93113
_, res.Err = client.Put(imageMemberURL(client, imageID, memberID), body, &res.Body,
94114
&gophercloud.RequestOpts{OkCodes: []int{200}})
95115
return res

0 commit comments

Comments
 (0)