in alibabacloudstack/resource_apsarastack_expressconnect_physicalconnection.go [163:269]
func resourceAlibabacloudStackExpressConnectPhysicalConnectionUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
vpcService := VpcService{client}
d.Partial(true)
update := false
request := map[string]interface{}{
"PhysicalConnectionId": d.Id(),
}
if !d.IsNewResource() && d.HasChange("bandwidth") {
update = true
if v, ok := d.GetOk("bandwidth"); ok {
request["bandwidth"] = v
}
}
if !d.IsNewResource() && d.HasChange("circuit_code") {
update = true
if v, ok := d.GetOk("circuit_code"); ok {
request["CircuitCode"] = v
}
}
if !d.IsNewResource() && d.HasChange("description") {
update = true
if v, ok := d.GetOk("description"); ok {
request["Description"] = v
}
}
if !d.IsNewResource() && d.HasChange("line_operator") {
update = true
request["LineOperator"] = d.Get("line_operator")
}
if !d.IsNewResource() && d.HasChange("peer_location") {
update = true
request["PeerLocation"] = d.Get("peer_location")
}
if !d.IsNewResource() && d.HasChange("physical_connection_name") {
update = true
if v, ok := d.GetOk("physical_connection_name"); ok {
request["Name"] = v
}
}
if !d.IsNewResource() && d.HasChange("port_type") {
update = true
if v, ok := d.GetOk("port_type"); ok {
request["PortType"] = v
}
}
if !d.IsNewResource() && d.HasChange("redundant_physical_connection_id") {
update = true
if v, ok := d.GetOk("redundant_physical_connection_id"); ok {
request["RedundantPhysicalConnectionId"] = v
}
}
if update {
action := "ModifyPhysicalConnectionAttribute"
request["ClientToken"] = buildClientToken("ModifyPhysicalConnectionAttribute")
_, err := client.DoTeaRequest("POST", "Vpc", "2016-04-28", action, "", nil, nil, request)
if err != nil {
return err
}
}
if d.HasChange("status") {
object, err := vpcService.DescribeExpressConnectPhysicalConnection(d.Id())
if err != nil {
return errmsgs.WrapError(err)
}
target := d.Get("status").(string)
if object["Status"].(string) != target {
if target == "Canceled" {
request := map[string]interface{}{
"PhysicalConnectionId": d.Id(),
}
action := "CancelPhysicalConnection"
request["ClientToken"] = buildClientToken("CancelPhysicalConnection")
_, err := client.DoTeaRequest("POST", "Vpc", "2016-04-28", action, "", nil, nil, request)
if err != nil {
return err
}
}
if target == "Enabled" {
request := map[string]interface{}{
"PhysicalConnectionId": d.Id(),
}
action := "EnablePhysicalConnection"
request["ClientToken"] = buildClientToken("EnablePhysicalConnection")
_, err := client.DoTeaRequest("POST", "Vpc", "2016-04-28", action, "", nil, nil, request)
if err != nil {
return err
}
}
if target == "Terminated" {
request := map[string]interface{}{
"PhysicalConnectionId": d.Id(),
}
action := "TerminatePhysicalConnection"
request["ClientToken"] = buildClientToken("TerminatePhysicalConnection")
_, err := client.DoTeaRequest("POST", "Vpc", "2016-04-28", action, "", nil, nil, request)
if err != nil {
return err
}
}
}
}
d.Partial(false)
return nil
}