From 8cf0b0e2165d3a030cdcf2cd368cd11fefafb8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Tue, 9 Jan 2024 17:50:29 +0800 Subject: [PATCH] fix(region): skip sync used ip addr (#19208) --- go.mod | 2 +- go.sum | 4 ++-- pkg/compute/models/networkinterfacenetwork.go | 4 ++++ vendor/modules.txt | 2 +- .../x/cloudmux/pkg/multicloud/huawei/port.go | 15 ++------------- 5 files changed, 10 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 2594cdd101..1704c79593 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240107043224-6b8945f3c23a + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240109085612-93eff1024d5f yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 diff --git a/go.sum b/go.sum index 724e87489c..74df904410 100644 --- a/go.sum +++ b/go.sum @@ -1201,8 +1201,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240107043224-6b8945f3c23a h1:nFdT/vqHCKZv0ZnJE1WWaIvYyqpsszhRJnhoOpsQf8g= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240107043224-6b8945f3c23a/go.mod h1:aj1gR9PPb6eqqKOwvANe26CoZFY8ydmXy0fuvgKYXH0= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240109085612-93eff1024d5f h1:I4L3JsssDNrAH33UEtZAMNSeZa8Ctf5F7zjYlJmrvjM= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240109085612-93eff1024d5f/go.mod h1:aj1gR9PPb6eqqKOwvANe26CoZFY8ydmXy0fuvgKYXH0= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/pkg/compute/models/networkinterfacenetwork.go b/pkg/compute/models/networkinterfacenetwork.go index 70b4cef6b6..6921a3b4df 100644 --- a/pkg/compute/models/networkinterfacenetwork.go +++ b/pkg/compute/models/networkinterfacenetwork.go @@ -168,6 +168,10 @@ func (manager *SNetworkinterfacenetworkManager) newFromCloudInterfaceAddress(ctx if !network.IsAddressInRange(ipAddr) { return fmt.Errorf("ip %s not in network %s(%s) range", address.IpAddr, network.Name, network.Id) } + // skip sync used ip address + if used, err := network.isAddressUsed(address.IpAddr); err != nil || used { + return nil + } address.NetworkId = network.Id diff --git a/vendor/modules.txt b/vendor/modules.txt index b7f878563c..9be7dfd0c2 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1465,7 +1465,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240107043224-6b8945f3c23a +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240109085612-93eff1024d5f ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/port.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/port.go index 0349f8f390..3a8d4a8012 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/port.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/port.go @@ -19,7 +19,6 @@ import ( "strings" "yunion.io/x/pkg/errors" - "yunion.io/x/pkg/utils" api "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/cloudmux/pkg/cloudprovider" @@ -129,19 +128,9 @@ func (port *Port) GetICloudInterfaceAddresses() ([]cloudprovider.ICloudInterface return address, nil } +// 华为云端口API device_owner 变化会导致子网ip重复同步,故忽略弹性网卡同步 func (region *SRegion) GetINetworkInterfaces() ([]cloudprovider.ICloudNetworkInterface, error) { - ports, err := region.GetPorts("") - if err != nil { - return nil, err - } - ret := []cloudprovider.ICloudNetworkInterface{} - for i := 0; i < len(ports); i++ { - if len(ports[i].DeviceID) == 0 || !utils.IsInStringArray(ports[i].DeviceOwner, []string{"compute:CCI", "compute:nova", "neutron:LOADBALANCERV2"}) { - ports[i].region = region - ret = append(ret, &ports[i]) - } - } - return ret, nil + return []cloudprovider.ICloudNetworkInterface{}, nil } // https://console.huaweicloud.com/apiexplorer/#/openapi/VPC/doc?version=v2&api=ShowPort