From b863ea6d32ab715e88a82a70635fc981a7b219dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Tue, 22 Jan 2019 14:39:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=90=8C=E6=AD=A5lb=20networ?= =?UTF-8?q?k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/loadbalancers.go | 23 +++++++++++++++++++++-- pkg/util/aliyun/loadbalancer.go | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/pkg/compute/models/loadbalancers.go b/pkg/compute/models/loadbalancers.go index 8052c24d6f..83a91a3b22 100644 --- a/pkg/compute/models/loadbalancers.go +++ b/pkg/compute/models/loadbalancers.go @@ -352,21 +352,40 @@ func (man *SLoadbalancerManager) newFromCloudLoadbalancer(ctx context.Context, u log.Errorf("newFromCloudRegion fail %s", err) return nil, err } + lb.syncLoadbalancerNetwork(ctx, userCred) return &lb, nil } +func (lb *SLoadbalancer) syncLoadbalancerNetwork(ctx context.Context, userCred mcclient.TokenCredential) { + if len(lb.NetworkId) > 0 { + lbNetReq := &SLoadbalancerNetworkRequestData{ + loadbalancer: lb, + networkId: lb.NetworkId, + address: lb.Address, + } + _, err := LoadbalancernetworkManager.NewLoadbalancerNetwork(ctx, userCred, lbNetReq) + if err != nil { + log.Errorf("failed to create loadbalancer network: %v", err) + } + } +} + func (lb *SLoadbalancer) SyncWithCloudLoadbalancer(ctx context.Context, userCred mcclient.TokenCredential, extLb cloudprovider.ICloudLoadbalancer, projectId string, projectSync bool) error { _, err := lb.GetModelManager().TableSpec().Update(lb, func() error { lb.Address = extLb.GetAddress() lb.Status = extLb.GetStatus() lb.Name = extLb.GetName() - + if networkId := extLb.GetNetworkId(); len(networkId) > 0 { + if network, err := NetworkManager.FetchByExternalId(networkId); err == nil && network != nil { + lb.NetworkId = network.GetId() + } + } if projectSync && len(projectId) > 0 { lb.ProjectId = projectId } - return nil }) + lb.syncLoadbalancerNetwork(ctx, userCred) return err } diff --git a/pkg/util/aliyun/loadbalancer.go b/pkg/util/aliyun/loadbalancer.go index 1000d723ca..221f7b3d50 100644 --- a/pkg/util/aliyun/loadbalancer.go +++ b/pkg/util/aliyun/loadbalancer.go @@ -97,7 +97,7 @@ func (lb *SLoadbalancer) GetNetworkType() string { } func (lb *SLoadbalancer) GetNetworkId() string { - return "" + return lb.VSwitchId } func (lb *SLoadbalancer) GetZoneId() string {