@@ -175,3 +175,38 @@ func GetTraits(ctx context.Context, client *gophercloud.ServiceClient, resourceP
175175 _ , r .Header , r .Err = gophercloud .ParseResponse (resp , err )
176176 return
177177}
178+
179+ // UpdateTraitsOptsBuilder allows extensions to add additional parameters to the
180+ // UpdateTraits request.
181+ type UpdateTraitsOptsBuilder interface {
182+ ToResourceProviderUpdateTraitsMap () (map [string ]any , error )
183+ }
184+
185+ // UpdateTraitsOpts represents options used to update traits of a resource provider.
186+ type UpdateTraitsOpts = ResourceProviderTraits
187+
188+ // ToResourceProviderUpdateTraitsMap constructs a request body from UpdateTraitsOpts.
189+ func (opts UpdateTraitsOpts ) ToResourceProviderUpdateTraitsMap () (map [string ]any , error ) {
190+ return gophercloud .BuildRequestBody (opts , "" )
191+ }
192+
193+ func UpdateTraits (ctx context.Context , client * gophercloud.ServiceClient , resourceProviderID string , opts UpdateTraitsOptsBuilder ) (r GetTraitsResult ) {
194+ b , err := opts .ToResourceProviderUpdateTraitsMap ()
195+ if err != nil {
196+ r .Err = err
197+ return
198+ }
199+ resp , err := client .Put (ctx , getResourceProviderTraitsURL (client , resourceProviderID ), b , & r .Body , & gophercloud.RequestOpts {
200+ OkCodes : []int {200 },
201+ })
202+ _ , r .Header , r .Err = gophercloud .ParseResponse (resp , err )
203+ return
204+ }
205+
206+ func DeleteTraits (ctx context.Context , client * gophercloud.ServiceClient , resourceProviderID string ) (r DeleteResult ) {
207+ resp , err := client .Delete (ctx , getResourceProviderTraitsURL (client , resourceProviderID ), & gophercloud.RequestOpts {
208+ OkCodes : []int {204 },
209+ })
210+ _ , r .Header , r .Err = gophercloud .ParseResponse (resp , err )
211+ return
212+ }
0 commit comments