// Update function updates member // More details: http://developer.openstack.org/api-ref-image-v2.html#updateImageMember-v2 func Update(client *gophercloud.ServiceClient, imageID string, memberID string, opts UpdateOptsBuilder) MemberUpdateResult { var res MemberUpdateResult body := opts.ToMemberUpdateMap() _, res.Err = client.Put(imageMemberURL(client, imageID, memberID), body, &res.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) return res }
// Update is an operation which modifies the attributes of the specified VIP. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult { type vip struct { Name string `json:"name,omitempty"` PoolID string `json:"pool_id,omitempty"` Description *string `json:"description,omitempty"` Persistence *SessionPersistence `json:"session_persistence,omitempty"` ConnLimit *int `json:"connection_limit,omitempty"` AdminStateUp *bool `json:"admin_state_up,omitempty"` } type request struct { VirtualIP vip `json:"vip"` } reqBody := request{VirtualIP: vip{ Name: opts.Name, PoolID: opts.PoolID, Description: gophercloud.MaybeString(opts.Description), ConnLimit: opts.ConnLimit, AdminStateUp: opts.AdminStateUp, }} if opts.Persistence != nil { reqBody.VirtualIP.Persistence = opts.Persistence } var res UpdateResult _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) return res }
// Update allows routers to be updated. You can update the name, administrative // state, and the external gateway. For more information about how to set the // external gateway for a router, see Create. This operation does not enable // the update of router interfaces. To do this, use the AddInterface and // RemoveInterface functions. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult { type router struct { Name *string `json:"name,omitempty"` AdminStateUp *bool `json:"admin_state_up,omitempty"` GatewayInfo *GatewayInfo `json:"external_gateway_info,omitempty"` Routes []Route `json:"routes"` } type request struct { Router router `json:"router"` } reqBody := request{Router: router{ Name: gophercloud.MaybeString(opts.Name), AdminStateUp: opts.AdminStateUp, }} if opts.GatewayInfo != nil { reqBody.Router.GatewayInfo = opts.GatewayInfo } if opts.Routes != nil { reqBody.Router.Routes = opts.Routes } // Send request to API var res UpdateResult _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// Update allows floating IP resources to be updated. Currently, the only way to // "update" a floating IP is to associate it with a new internal port, or // disassociated it from all ports. See UpdateOpts for instructions of how to // do this. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult { type floatingIP struct { PortID *string `json:"port_id"` } type request struct { FloatingIP floatingIP `json:"floatingip"` } var portID *string if opts.PortID == "" { portID = nil } else { portID = &opts.PortID } reqBody := request{FloatingIP: floatingIP{PortID: portID}} // Send request to API var res UpdateResult _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// Update is the operation responsible for updating exist users by their UUID. func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) UpdateResult { var result UpdateResult reqBody := opts.ToUserUpdateMap() _, result.Err = client.Put(ResourceURL(client, id), reqBody, &result.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return result }
// Upload uploads image file func Upload(client *gophercloud.ServiceClient, id string, data io.ReadSeeker) PutImageDataResult { var res PutImageDataResult _, res.Err = client.Put(imageDataURL(client, id), data, nil, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, OkCodes: []int{204}, }) return res }
//OpenstackPut puts a resource using OpenStack API func OpenstackPut(client *gophercloud.ServiceClient, url string, data interface{}) (interface{}, error) { var response interface{} _, err := client.Put(url, data, &response, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) if err != nil { return nil, err } return response, nil }
// Update is the operation responsible for updating a health monitor. func Update(c *gophercloud.ServiceClient, id int, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToMonitorUpdateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(rootURL(c, id), reqBody, nil, nil) return res }
// UpdateCert is the operation responsible for updating the details of an // existing SSL certificate. func UpdateCert(c *gophercloud.ServiceClient, lbID, certID int, opts UpdateCertOptsBuilder) UpdateCertResult { var res UpdateCertResult reqBody, err := opts.ToCertUpdateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(certResourceURL(c, lbID, certID), reqBody, &res.Body, nil) return res }
// Update accepts an UpdateOpts struct and updates an existing stack using the values // provided. func Update(c *gophercloud.ServiceClient, stackName, stackID string, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToStackUpdateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(updateURL(c, stackName, stackID), reqBody, nil, nil) return res }
// Update is the operation responsible for updating an existing node. A node's // IP, port, and status are immutable attributes and cannot be modified. func Update(c *gophercloud.ServiceClient, lbID, nodeID int, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToNodeUpdateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(resourceURL(c, lbID, nodeID), reqBody, nil, nil) return res }
// Create is the operation responsible for creating or updating the connection // throttling configuration for a load balancer. func Create(c *gophercloud.ServiceClient, lbID int, opts CreateOptsBuilder) CreateResult { var res CreateResult reqBody, err := opts.ToCTCreateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(rootURL(c, lbID), reqBody, &res.Body, nil) return res }
// SetErrorPage will set the HTML of the load balancer's error page to a // specific value. func SetErrorPage(client *gophercloud.ServiceClient, id int, html string) ErrorPageResult { var res ErrorPageResult type stringMap map[string]string reqBody := map[string]stringMap{"errorpage": stringMap{"content": html}} _, res.Err = client.Put(errorPageURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// ResetMetadata will create multiple new key-value pairs for the given server ID. // Note: Using this operation will erase any already-existing metadata and create // the new metadata provided. To keep any already-existing metadata, use the // UpdateMetadatas or UpdateMetadata function. func ResetMetadata(client *gophercloud.ServiceClient, id string, opts ResetMetadataOptsBuilder) ResetMetadataResult { var res ResetMetadataResult metadata, err := opts.ToMetadataResetMap() if err != nil { res.Err = err return res } _, res.Err = client.Put(metadataURL(client, id), metadata, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// CreateMetadatum will create or update the key-value pair with the given key for the given server ID. func CreateMetadatum(client *gophercloud.ServiceClient, id string, opts MetadatumOptsBuilder) CreateMetadatumResult { var res CreateMetadatumResult metadatum, key, err := opts.ToMetadatumCreateMap() if err != nil { res.Err = err return res } _, res.Err = client.Put(metadatumURL(client, id, key), metadatum, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// UpdateMetadata will update the Snapshot with provided information. To // extract the updated Snapshot from the response, call the ExtractMetadata // method on the UpdateMetadataResult. func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) UpdateMetadataResult { var res UpdateMetadataResult reqBody, err := opts.ToSnapshotUpdateMetadataMap() if err != nil { res.Err = err return res } _, res.Err = client.Put(updateMetadataURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// Update is the operation responsible for updating the SSL Termination // configuration for a load balancer. func Update(c *gophercloud.ServiceClient, lbID int, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToSSLUpdateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(rootURL(c, lbID), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// Update accepts a UpdateOpts struct and updates an existing port using the // values provided. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToPortUpdateMap() if err != nil { res.Err = err return res } _, res.Err = c.Put(updateURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) return res }
// Update allows firewalls to be updated. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToFirewallUpdateMap() if err != nil { res.Err = err return res } // Send request to API _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// Update allows Member to be updated. func UpdateAssociateMember(c *gophercloud.ServiceClient, poolID string, memberID string, opts MemberUpdateOpts) UpdateResult { var res UpdateResult reqBody, err := opts.ToMemberUpdateMap() if err != nil { res.Err = err return res } // Send request to API _, res.Err = c.Put(memberResourceURL(c, poolID, memberID), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) return res }
// Update will modify the mutable properties of a security group, notably its // name and description. func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) UpdateResult { var result UpdateResult reqBody, err := opts.ToSecGroupUpdateMap() if err != nil { result.Err = err return result } _, result.Err = client.Put(resourceURL(client, id), reqBody, &result.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return result }
// RemoveInterface removes an internal router interface, which detaches a // subnet from the router. You must specify either a SubnetID or PortID, since // these values are used to identify the router interface to remove. // // Unlike AddInterface, you can also specify both a SubnetID and PortID. If you // choose to specify both, the subnet ID must correspond to the subnet ID of // the first IP address on the port specified by the port ID. Otherwise, the // operation will fail and return a 409 Conflict error. // // If the router, subnet or port which are referenced do not exist or are not // visible to you, the operation will fail and a 404 Not Found error will be // returned. After this operation completes, the port connecting the router // with the subnet is removed from the subnet for the network. func RemoveInterface(c *gophercloud.ServiceClient, id string, opts InterfaceOpts) InterfaceResult { var res InterfaceResult type request struct { SubnetID string `json:"subnet_id,omitempty"` PortID string `json:"port_id,omitempty"` } body := request{SubnetID: opts.SubnetID, PortID: opts.PortID} _, res.Err = c.Put(removeInterfaceURL(c, id), body, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
func RemoveRule(c *gophercloud.ServiceClient, policyID, ruleID string) error { type request struct { RuleId string `json:"firewall_rule_id"` } reqBody := request{ RuleId: ruleID, } // Send request to API var res commonResult _, res.Err = c.Put(removeURL(c, policyID), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res.Err }
// Update accepts a UpdateOpts struct and updates an existing network using the // values provided. For more information, see the Create function. func Update(c *gophercloud.ServiceClient, networkID string, opts UpdateOptsBuilder) UpdateResult { var res UpdateResult reqBody, err := opts.ToNetworkUpdateMap() if err != nil { res.Err = err return res } // Send request to API _, res.Err = c.Put(updateURL(c, networkID), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) return res }
// Update allows members to be updated. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult { type member struct { AdminStateUp bool `json:"admin_state_up"` } type request struct { Member member `json:"member"` } reqBody := request{Member: member{AdminStateUp: opts.AdminStateUp}} // Send request to API var res UpdateResult _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) return res }
// Update requests the configuration of the given policy be updated. func Update(client *gophercloud.ServiceClient, groupID, policyID string, opts UpdateOptsBuilder) UpdateResult { var result UpdateResult url := updateURL(client, groupID, policyID) reqBody, err := opts.ToPolicyUpdateMap() if err != nil { result.Err = err return result } _, result.Err = client.Put(url, reqBody, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) return result }
// Update Updates project information func Update(client *gophercloud.ServiceClient, projectID string, opts ProjectOpts) UpdateResult { type request struct { Project project `json:"project"` } reqBody := request{ Project: project{ DomainID: opts.DomainID, ParentID: opts.ParentID, Name: opts.Name, Enabled: opts.Enabled, Description: opts.Description, }, } var result UpdateResult _, result.Err = client.Put(projectURL(client, projectID), reqBody, &result.Body, nil) return result }
func InsertRule(c *gophercloud.ServiceClient, policyID, ruleID, beforeID, afterID string) error { type request struct { RuleId string `json:"firewall_rule_id"` Before string `json:"insert_before,omitempty"` After string `json:"insert_after,omitempty"` } reqBody := request{ RuleId: ruleID, Before: beforeID, After: afterID, } // Send request to API var res commonResult _, res.Err = c.Put(insertURL(c, policyID), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res.Err }
// Update allows pools to be updated. func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult { type pool struct { Name string `json:"name,"` LBMethod string `json:"lb_method"` } type request struct { Pool pool `json:"pool"` } reqBody := request{Pool: pool{ Name: opts.Name, LBMethod: opts.LBMethod, }} // Send request to API var res UpdateResult _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }
// AddInterface attaches a subnet to an internal router interface. You must // specify either a SubnetID or PortID in the request body. If you specify both, // the operation will fail and an error will be returned. // // If you specify a SubnetID, the gateway IP address for that particular subnet // is used to create the router interface. Alternatively, if you specify a // PortID, the IP address associated with the port is used to create the router // interface. // // If you reference a port that is associated with multiple IP addresses, or // if the port is associated with zero IP addresses, the operation will fail and // a 400 Bad Request error will be returned. // // If you reference a port already in use, the operation will fail and a 409 // Conflict error will be returned. // // The PortID that is returned after using Extract() on the result of this // operation can either be the same PortID passed in or, on the other hand, the // identifier of a new port created by this operation. After the operation // completes, the device ID of the port is set to the router ID, and the // device owner attribute is set to `network:router_interface'. func AddInterface(c *gophercloud.ServiceClient, id string, opts InterfaceOpts) InterfaceResult { var res InterfaceResult // Validate if (opts.SubnetID == "" && opts.PortID == "") || (opts.SubnetID != "" && opts.PortID != "") { res.Err = errInvalidInterfaceOpts return res } type request struct { SubnetID string `json:"subnet_id,omitempty"` PortID string `json:"port_id,omitempty"` } body := request{SubnetID: opts.SubnetID, PortID: opts.PortID} _, res.Err = c.Put(addInterfaceURL(c, id), body, &res.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return res }