diff --git a/go.mod b/go.mod index 9f92c8451e..0415787149 100644 --- a/go.mod +++ b/go.mod @@ -87,7 +87,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.20250605105206-cf991e1db223 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250606110740-befa6bb40ace yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 yunion.io/x/jsonutils v1.0.1-0.20250507052344-1abcf4f443b1 yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91 diff --git a/go.sum b/go.sum index 4eb907b8f5..c08bb93cfe 100644 --- a/go.sum +++ b/go.sum @@ -1274,8 +1274,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.20250605105206-cf991e1db223 h1:GhTxefJxvBXs5e4JBN2kPC3C/XE+DpkOG+r+xvA6cpk= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250605105206-cf991e1db223/go.mod h1:FXxAEbdNfWXX9gjME3K2nJhkydHY5EKEUZb+RLEzVwQ= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250606110740-befa6bb40ace h1:04ZpIEo9q4BVWgqiuDsfvSJaj2FNNyvNUkz8bOYcwq4= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250606110740-befa6bb40ace/go.mod h1:FXxAEbdNfWXX9gjME3K2nJhkydHY5EKEUZb+RLEzVwQ= yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 h1:msG4SiDSVU7CrXH06WuHlNEZXIooTcmNbfrIGHuIHBU= yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0/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/loadbalancerbackends.go b/pkg/compute/models/loadbalancerbackends.go index 2bb03fcf24..a28a6bb93d 100644 --- a/pkg/compute/models/loadbalancerbackends.go +++ b/pkg/compute/models/loadbalancerbackends.go @@ -640,9 +640,6 @@ func (lbb *SLoadbalancerBackend) SyncWithCloudLoadbalancerBackend(ctx context.Co if err != nil { return err } - if account, _ := provider.GetCloudaccount(); account != nil { - syncMetadata(ctx, userCred, lbb, ext, account.ReadOnly) - } db.OpsLog.LogSyncUpdate(lbb, diff, userCred) return nil } @@ -664,7 +661,6 @@ func (lbbg *SLoadbalancerBackendGroup) newFromCloudLoadbalancerBackend(ctx conte if err != nil { return nil, errors.Wrapf(err, "Insert") } - syncMetadata(ctx, userCred, lbb, ext, false) db.OpsLog.LogEvent(lbb, db.ACT_CREATE, lbb.GetShortDesc(ctx), userCred) return lbb, nil } diff --git a/vendor/modules.txt b/vendor/modules.txt index 8f520ad059..6483e57a18 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1576,7 +1576,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.20250605105206-cf991e1db223 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250606110740-befa6bb40ace ## explicit; go 1.21 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go index 5e7c2b8052..d090ccfadc 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go @@ -830,7 +830,13 @@ type ICloudLoadbalancerBackendGroup interface { } type ICloudLoadbalancerBackend interface { - ICloudResource + GetId() string + GetName() string + GetGlobalId() string + GetCreatedAt() time.Time + GetDescription() string + + GetStatus() string GetWeight() int GetPort() int diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerbackend.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerbackend.go index 542ec59115..a3b61bc4d0 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerbackend.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerbackend.go @@ -31,6 +31,7 @@ type SLoadbalancerBackend struct { lbbg *SLoadbalancerBackendGroup ServerId string + ServerIp string Port int Weight int } @@ -89,7 +90,7 @@ func (backend *SLoadbalancerBackend) GetBackendId() string { } func (backend *SLoadbalancerBackend) GetIpAddress() string { - return "" + return backend.ServerIp } func (region *SRegion) GetLoadbalancerBackends(backendgroupId string) ([]SLoadbalancerBackend, error) { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttplistener.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttplistener.go index 698216c312..33b48cfa8a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttplistener.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttplistener.go @@ -269,7 +269,7 @@ func (self *SLoadbalancerHTTPListener) SetAcl(ctx context.Context, opts *cloudpr } func (listerner *SLoadbalancerHTTPListener) GetILoadbalancerListenerRules() ([]cloudprovider.ICloudLoadbalancerListenerRule, error) { - rules, err := listerner.lb.region.GetLoadbalancerListenerRules(listerner.lb.LoadBalancerId, listerner.ListenerPort) + rules, err := listerner.lb.region.GetLoadbalancerListenerRules(listerner.lb.LoadBalancerId, "HTTP", listerner.ListenerPort) if err != nil { return nil, err } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttpslistener.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttpslistener.go index c5c44c3276..3674f07009 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttpslistener.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerhttpslistener.go @@ -270,7 +270,7 @@ func (self *SLoadbalancerHTTPSListener) SetAcl(ctx context.Context, opts *cloudp } func (listerner *SLoadbalancerHTTPSListener) GetILoadbalancerListenerRules() ([]cloudprovider.ICloudLoadbalancerListenerRule, error) { - rules, err := listerner.lb.region.GetLoadbalancerListenerRules(listerner.lb.LoadBalancerId, listerner.ListenerPort) + rules, err := listerner.lb.region.GetLoadbalancerListenerRules(listerner.lb.LoadBalancerId, "HTTPS", listerner.ListenerPort) if err != nil { return nil, err } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerlistenerrule.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerlistenerrule.go index 2a8720e666..f476c01569 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerlistenerrule.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aliyun/loadbalancerlistenerrule.go @@ -111,10 +111,11 @@ func (lbr *SLoadbalancerListenerRule) GetBackendGroupId() string { return lbr.VServerGroupId } -func (region *SRegion) GetLoadbalancerListenerRules(loadbalancerId string, listenerPort int) ([]SLoadbalancerListenerRule, error) { +func (region *SRegion) GetLoadbalancerListenerRules(loadbalancerId, protocol string, listenerPort int) ([]SLoadbalancerListenerRule, error) { params := map[string]string{} params["RegionId"] = region.RegionId params["LoadBalancerId"] = loadbalancerId + params["ListenerProtocol"] = protocol params["ListenerPort"] = fmt.Sprintf("%d", listenerPort) body, err := region.lbRequest("DescribeRules", params) if err != nil { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerbackend.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerbackend.go index c135392f1e..b6f050fc5b 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerbackend.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerbackend.go @@ -36,7 +36,7 @@ type SElbBackend struct { } type Target struct { - ID string `json:"Id"` + Id string `json:"Id"` Port int `json:"Port"` } @@ -47,7 +47,7 @@ type TargetHealth struct { } func (self *SElbBackend) GetId() string { - return fmt.Sprintf("%s::%s::%d", self.group.GetId(), self.Target.ID, self.Target.Port) + return fmt.Sprintf("%s::%s::%d", self.group.GetId(), self.Target.Id, self.Target.Port) } func (self *SElbBackend) GetName() string { @@ -91,7 +91,7 @@ func (self *SElbBackend) GetBackendRole() string { } func (self *SElbBackend) GetBackendId() string { - return self.Target.ID + return self.Target.Id } func (self *SElbBackend) SyncConf(ctx context.Context, port, weight int) error { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerlistener.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerlistener.go index cd02d8262b..b9f684bb8a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerlistener.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/loadbalancerlistener.go @@ -44,7 +44,7 @@ type SElbListener struct { Port int `json:"Port"` Protocol string `json:"Protocol"` - DefaultActions []DefaultAction `json:"DefaultActions"` + DefaultActions []DefaultAction `xml:"DefaultActions>member"` SSLPolicy string `json:"SslPolicy"` Certificates []Certificate `json:"Certificates"` LoadBalancerArn string `json:"LoadBalancerArn"` @@ -162,11 +162,16 @@ func (self *SElbListener) getBackendGroup() (*SElbBackendGroup, error) { return self.group, nil } - lbbg, err := self.lb.region.GetElbBackendgroup(self.DefaultActions[0].TargetGroupArn) + groupId := self.GetBackendGroupId() + if len(groupId) == 0 { + return nil, errors.Wrapf(cloudprovider.ErrNotFound, "empty group id") + } + + lbbg, err := self.lb.region.GetElbBackendgroup(groupId) if err != nil { return nil, errors.Wrap(err, "GetElbBackendgroup") } - + lbbg.lb = self.lb self.group = lbbg return self.group, nil } @@ -270,7 +275,10 @@ func (self *SElbListener) GetHealthCheckExp() string { } func (self *SElbListener) GetBackendGroupId() string { - return self.DefaultActions[0].TargetGroupArn + for _, group := range self.DefaultActions { + return group.TargetGroupArn + } + return "" } func (self *SElbListener) GetBackendServerPort() int { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/loadbalancer_backend.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/loadbalancer_backend.go index 6e17974438..79db60ea21 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/loadbalancer_backend.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/loadbalancer_backend.go @@ -34,14 +34,23 @@ type SLoadbalancerBackend struct { instanceGroup SInstanceGroup // 实例组 Backend SInstanceGroupInstance // backend + Instance string + IpAddr string + Port int `json:"port"` } func (self *SLoadbalancerBackend) GetId() string { + if len(self.Instance) > 0 { + return fmt.Sprintf("%s::%s::%d", self.Instance, self.IpAddr, self.Port) + } return fmt.Sprintf("%s::%s::%s::%d", self.lbbg.GetGlobalId(), self.instanceGroup.GetGlobalId(), self.GetBackendId(), self.Port) } func (self *SLoadbalancerBackend) GetName() string { + if len(self.Instance) > 0 { + return self.Instance + } segs := strings.Split(self.Backend.Instance, "/") name := "" if len(segs) > 0 { @@ -66,26 +75,6 @@ func (self *SLoadbalancerBackend) Refresh() error { return nil } -func (self *SLoadbalancerBackend) IsEmulated() bool { - return true -} - -func (self *SLoadbalancerBackend) GetSysTags() map[string]string { - return nil -} - -func (self *SLoadbalancerBackend) GetTags() (map[string]string, error) { - return nil, nil -} - -func (self *SLoadbalancerBackend) SetTags(tags map[string]string, replace bool) error { - return cloudprovider.ErrNotSupported -} - -func (self *SLoadbalancerBackend) GetProjectId() string { - return self.lbbg.GetProjectId() -} - func (self *SLoadbalancerBackend) GetWeight() int { return 0 } @@ -107,6 +96,9 @@ func (self *SLoadbalancerBackend) GetBackendRole() string { } func (self *SLoadbalancerBackend) GetBackendId() string { + if len(self.Instance) > 0 { + return self.Instance + } r := SResourceBase{ Name: "", SelfLink: self.Backend.Instance, @@ -115,7 +107,7 @@ func (self *SLoadbalancerBackend) GetBackendId() string { } func (self *SLoadbalancerBackend) GetIpAddress() string { - return "" + return self.IpAddr } func (self *SLoadbalancerBackend) SyncConf(ctx context.Context, port, weight int) error { @@ -141,6 +133,33 @@ func (self *SLoadBalancerBackendGroup) GetLoadbalancerBackends() ([]SLoadbalance } ret := make([]SLoadbalancerBackend, 0) + for _, backend := range self.backendService.Backends { + if strings.Contains(backend.Group, "networkEndpointGroups") { + endpoints := struct { + Items []struct { + NetworkEndpoint struct { + IpAddress string + Port int + Instance string + } + } + }{} + err = self.lb.region.PostBySelfId(backend.Group+"/listNetworkEndpoints", &endpoints) + if err != nil { + return nil, errors.Wrapf(err, "listNetworkEndpoints") + } + for _, item := range endpoints.Items { + backend := SLoadbalancerBackend{ + lbbg: self, + backendService: self.backendService, + Instance: item.NetworkEndpoint.Instance, + IpAddr: item.NetworkEndpoint.IpAddress, + Port: item.NetworkEndpoint.Port, + } + ret = append(ret, backend) + } + } + } for i := range igs { ig := igs[i] // http lb diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/region.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/region.go index cd74cb3582..ce87671b78 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/region.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/google/region.go @@ -541,10 +541,25 @@ func (self *SGoogleClient) GetBySelfId(id string, retval interface{}) error { return nil } +func (self *SGoogleClient) PostBySelfId(id string, retval interface{}) error { + resp, err := jsonRequest(self.client, "POST", GOOGLE_COMPUTE_DOMAIN, GOOGLE_API_VERSION, id, nil, nil, self.debug) + if err != nil { + return err + } + if retval != nil { + return resp.Unmarshal(retval) + } + return nil +} + func (self *SRegion) GetBySelfId(id string, retval interface{}) error { return self.client.GetBySelfId(id, retval) } +func (self *SRegion) PostBySelfId(id string, retval interface{}) error { + return self.client.PostBySelfId(id, retval) +} + func (region *SRegion) StorageListAll(resource string, params map[string]string, retval interface{}) error { return region.client.storageListAll(resource, params, retval) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/loadbalancer_backendgroup.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/loadbalancer_backendgroup.go index dd70a6d3ec..9e8a2b99a5 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/loadbalancer_backendgroup.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/loadbalancer_backendgroup.go @@ -296,21 +296,7 @@ func (self *SElbBackendGroup) AddBackendServer(serverId string, weight int, port } func (self *SElbBackendGroup) RemoveBackendServer(backendId string, weight int, port int) error { - ibackend, err := self.GetILoadbalancerBackendById(backendId) - if err != nil { - if errors.Cause(err) == cloudprovider.ErrNotFound { - return nil - } - - return errors.Wrap(err, "ElbBackendGroup.GetILoadbalancerBackendById") - } - - err = self.region.RemoveLoadBalancerBackend(self.GetId(), backendId) - if err != nil { - return errors.Wrap(err, "ElbBackendGroup.RemoveBackendServer") - } - - return cloudprovider.WaitDeleted(ibackend, 2*time.Second, 30*time.Second) + return self.region.RemoveLoadBalancerBackend(self.GetId(), backendId) } func (self *SElbBackendGroup) Delete(ctx context.Context) error { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/loadbalancer_backendgroup.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/loadbalancer_backendgroup.go index 6ea158791d..047c287a09 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/loadbalancer_backendgroup.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/loadbalancer_backendgroup.go @@ -284,21 +284,7 @@ func (self *SElbBackendGroup) AddBackendServer(serverId string, weight int, port } func (self *SElbBackendGroup) RemoveBackendServer(backendId string, weight int, port int) error { - ibackend, err := self.GetILoadbalancerBackendById(backendId) - if err != nil { - if errors.Cause(err) == cloudprovider.ErrNotFound { - return nil - } - - return errors.Wrap(err, "ElbBackendGroup.GetILoadbalancerBackendById") - } - - err = self.region.RemoveLoadBalancerBackend(self.GetId(), backendId) - if err != nil { - return errors.Wrap(err, "ElbBackendGroup.RemoveBackendServer") - } - - return cloudprovider.WaitDeleted(ibackend, 2*time.Second, 30*time.Second) + return self.region.RemoveLoadBalancerBackend(self.GetId(), backendId) } func (self *SElbBackendGroup) Delete(ctx context.Context) error {