diff --git a/go.mod b/go.mod index a62cbb51f03..b0148de4402 100644 --- a/go.mod +++ b/go.mod @@ -54,6 +54,7 @@ require ( github.com/sevlyar/go-daemon v0.1.5 github.com/shirou/gopsutil v3.21.11+incompatible github.com/shirou/gopsutil/v3 v3.22.10 + github.com/sirupsen/logrus v1.9.0 github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9 github.com/smartystreets/goconvey v1.7.2 github.com/stretchr/testify v1.8.1 @@ -86,14 +87,14 @@ 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.20231130083509-dc487c8f62a5 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231204021053-993c9a48f356 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 yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900 yunion.io/x/pkg v1.0.1-0.20231101105448-abef64cdc142 yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e - yunion.io/x/sqlchemy v1.1.2-0.20231128175927-6f5f8a9858dc + yunion.io/x/sqlchemy v1.1.2-0.20231201052514-97026b18ccf0 yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c ) @@ -225,7 +226,6 @@ require ( github.com/richardlehane/msoleps v1.0.3 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 // indirect - github.com/sirupsen/logrus v1.9.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect diff --git a/go.sum b/go.sum index c431d33dbc7..3e746fc8073 100644 --- a/go.sum +++ b/go.sum @@ -1192,8 +1192,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.20231130083509-dc487c8f62a5 h1:fmipkO7u0DDjKfxP+qGC3JCeGgbKFC8+ZMvRGbr+YZ4= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231130083509-dc487c8f62a5/go.mod h1:aj1gR9PPb6eqqKOwvANe26CoZFY8ydmXy0fuvgKYXH0= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231204021053-993c9a48f356 h1:W5MTOBconNnPDyOt5solcsY3olJSz+ScngODY3UYt0A= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231204021053-993c9a48f356/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= @@ -1211,7 +1211,7 @@ yunion.io/x/pkg v1.0.1-0.20231101105448-abef64cdc142 h1:L6LqxfP08eWUx+A6yQdrL6VB yunion.io/x/pkg v1.0.1-0.20231101105448-abef64cdc142/go.mod h1:ksCJVQ+DwKrJ5QBEoU8pzrDFfDaZVAFH/iJ6yQCYxJk= yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e h1:v+EzIadodSwkdZ/7bremd7J8J50Cise/HCylsOJngmo= yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo= -yunion.io/x/sqlchemy v1.1.2-0.20231128175927-6f5f8a9858dc h1:Q+uZD4rGqmu9CXBF6iwIn98NEGpDAtReEzxljM2lhb8= -yunion.io/x/sqlchemy v1.1.2-0.20231128175927-6f5f8a9858dc/go.mod h1:uuPVZEyEq3sWd5vf9VjGSy6lZzof22X87OEHw9sddJQ= +yunion.io/x/sqlchemy v1.1.2-0.20231201052514-97026b18ccf0 h1:+MaykFV6YCakTLnHR3v31tovXhkvWgkBPFa83MuCekA= +yunion.io/x/sqlchemy v1.1.2-0.20231201052514-97026b18ccf0/go.mod h1:uuPVZEyEq3sWd5vf9VjGSy6lZzof22X87OEHw9sddJQ= yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c h1:QuLab2kSRECZRxo4Lo2KcYn6XjQFDGaZ1+x0pYDVVwQ= yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng= diff --git a/vendor/modules.txt b/vendor/modules.txt index 553bdda5e8f..98422b3ac60 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1458,7 +1458,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.20231130083509-dc487c8f62a5 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231204021053-993c9a48f356 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing @@ -1616,7 +1616,7 @@ yunion.io/x/pkg/utils # yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e ## explicit; go 1.12 yunion.io/x/s3cli -# yunion.io/x/sqlchemy v1.1.2-0.20231128175927-6f5f8a9858dc +# yunion.io/x/sqlchemy v1.1.2-0.20231201052514-97026b18ccf0 ## explicit; go 1.17 yunion.io/x/sqlchemy yunion.io/x/sqlchemy/backends diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_mysql.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_mysql.go index e86943269db..fedca9a20a4 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_mysql.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_mysql.go @@ -94,7 +94,7 @@ func (self *SRegion) ListGaussMySqlInstances() ([]GaussDBMySQL, error) { if len(ret) >= part.TotalCount || len(part.Instances) == 0 { break } - query.Set("offset", fmt.Sprintf("%s", len(ret))) + query.Set("offset", fmt.Sprintf("%d", len(ret))) } return ret, nil } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_nosql.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_nosql.go index fe8e400c24b..9d5d957515b 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_nosql.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/gaussdb_nosql.go @@ -94,7 +94,7 @@ func (self *SRegion) ListGaussNoSQLInstances() ([]GaussDBNoSQL, error) { if len(ret) >= part.TotalCount || len(part.Instances) == 0 { break } - query.Set("offset", fmt.Sprintf("%s", len(ret))) + query.Set("offset", fmt.Sprintf("%d", len(ret))) } return ret, nil } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instance.go index ce324174b43..564a37ab996 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instance.go @@ -89,6 +89,7 @@ type OSSchedulerHints struct { } type SecurityGroup struct { + Id string `json:"id"` Name string `json:"name"` } @@ -257,16 +258,16 @@ func (self *SInstance) Refresh() error { return nil } -func (self *SInstance) IsEmulated() bool { - return false -} - func (self *SInstance) GetInstanceType() string { return self.Flavor.ID } func (self *SInstance) GetSecurityGroupIds() ([]string, error) { - return self.host.zone.region.GetInstanceSecrityGroupIds(self.GetId()) + ret := []string{} + for _, sec := range self.SecurityGroups { + ret = append(ret, sec.Id) + } + return ret, nil } // https://support.huaweicloud.com/api-ecs/ecs_02_1002.html @@ -410,23 +411,29 @@ func (self *SInstance) GetIDisks() ([]cloudprovider.ICloudDisk, error) { } func (self *SInstance) GetINics() ([]cloudprovider.ICloudNic, error) { - nics := make([]cloudprovider.ICloudNic, 0) - - // https://support.huaweicloud.com/api-ecs/zh-cn_topic_0094148849.html - // OS-EXT-IPS.type - // todo: 这里没有区分是IPv4 还是 IPv6。统一当IPv4处理了.可能会引发错误 + ret := map[string]*SInstanceNic{} for _, ipAddresses := range self.Addresses { for _, ipAddress := range ipAddresses { - if ipAddress.OSEXTIPSType == "fixed" { - nic := SInstanceNic{ - instance: self, - ipAddr: ipAddress.Addr, - macAddr: ipAddress.OSEXTIPSMACMACAddr, + if ipAddress.OSEXTIPSType == "fixed" && ipAddress.Version == "4" { + _, ok := ret[ipAddress.OSEXTIPSMACMACAddr] + if !ok { + ret[ipAddress.OSEXTIPSMACMACAddr] = &SInstanceNic{ + instance: self, + ipAddr: ipAddress.Addr, + macAddr: ipAddress.OSEXTIPSMACMACAddr, + subAddrs: []string{}, + } + } else { + addrs := append(ret[ipAddress.OSEXTIPSMACMACAddr].subAddrs, ipAddress.Addr) + ret[ipAddress.OSEXTIPSMACMACAddr].subAddrs = addrs } - nics = append(nics, &nic) } } } + nics := make([]cloudprovider.ICloudNic, 0) + for mac := range ret { + nics = append(nics, ret[mac]) + } return nics, nil } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instancenic.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instancenic.go index 3aecdb2ec4f..ebbc192bdc0 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instancenic.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/instancenic.go @@ -60,17 +60,22 @@ type SInstanceNic struct { ipAddr string macAddr string + subAddrs []string cloudprovider.DummyICloudNic } func (self *SInstanceNic) GetId() string { - return "" + return self.ipAddr } func (self *SInstanceNic) GetIP() string { return self.ipAddr } +func (self *SInstanceNic) GetSubAddress() ([]string, error) { + return self.subAddrs, nil +} + func (self *SInstanceNic) GetMAC() string { return self.macAddr } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/certificate.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/certificate.go index 7a201638d45..5d1db34e8d0 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/certificate.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/certificate.go @@ -321,6 +321,7 @@ func (self *SRegion) GetILoadBalancerCertificates() ([]cloudprovider.ICloudLoadb icerts := make([]cloudprovider.ICloudLoadbalancerCertificate, len(certs)) for i := range certs { + certs[i].client = self.client icerts[i] = &certs[i] } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/instancenic.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/instancenic.go index c41a8218e6a..0a439285f4e 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/instancenic.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/qcloud/instancenic.go @@ -16,6 +16,7 @@ package qcloud import ( "yunion.io/x/cloudmux/pkg/cloudprovider" + "yunion.io/x/pkg/util/netutils" ) type SInstanceNic struct { @@ -38,6 +39,10 @@ func (self *SInstanceNic) GetIP() string { } func (self *SInstanceNic) GetMAC() string { + if len(self.macAddr) == 0 { + ip, _ := netutils.NewIPV4Addr(self.GetIP()) + return ip.ToMac("00:16:") + } return self.macAddr } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/remotefile/instancenic.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/remotefile/instancenic.go index 706f520ae1e..7879a6c6d03 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/remotefile/instancenic.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/remotefile/instancenic.go @@ -14,7 +14,10 @@ package remotefile -import "yunion.io/x/cloudmux/pkg/cloudprovider" +import ( + "yunion.io/x/cloudmux/pkg/cloudprovider" + "yunion.io/x/pkg/util/netutils" +) type SInstanceNic struct { SResourceBase @@ -32,6 +35,10 @@ func (self *SInstanceNic) GetIP() string { } func (self *SInstanceNic) GetMAC() string { + if len(self.Mac) == 0 { + ip, _ := netutils.NewIPV4Addr(self.GetIP()) + return ip.ToMac("00:16:") + } return self.Mac }