From d50f441c2511e0ab4e70b0942bf5813f1ed2ec82 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 6 Dec 2018 14:56:16 +0000 Subject: [PATCH 1/4] =?UTF-8?q?vpcs:=20GetRegion():=20=E4=BC=A0=E9=80=92?= =?UTF-8?q?=E5=8E=9F=E5=A7=8Berr=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/routetables.go | 6 ++--- pkg/compute/models/vpcs.go | 37 ++++++++++++++----------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/pkg/compute/models/routetables.go b/pkg/compute/models/routetables.go index e2abf06fde..ebf7930615 100644 --- a/pkg/compute/models/routetables.go +++ b/pkg/compute/models/routetables.go @@ -142,9 +142,9 @@ func (man *SRouteTableManager) ValidateCreateData(ctx context.Context, userCred return nil, err } vpc := vpcV.Model.(*SVpc) - cloudregion := vpc.GetRegion() - if cloudregion == nil { - return nil, httperrors.NewConflictError("failed fetching cloudregion of vpc %s(%s)", vpc.Name, vpc.Id) + cloudregion, err := vpc.GetRegion() + if err != nil { + return nil, httperrors.NewConflictError("failed getting region of vpc %s(%s)", vpc.Name, vpc.Id) } data.Set("cloudregion_id", jsonutils.NewString(cloudregion.Id)) return man.SVirtualResourceBaseManager.ValidateCreateData(ctx, userCred, ownerProjId, query, data) diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index 4d8cda4e93..738186710f 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -153,23 +153,24 @@ func (self *SVpc) GetNetworkCount() int { func (self *SVpc) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSONDict { extra.Add(jsonutils.NewInt(int64(self.GetWireCount())), "wire_count") extra.Add(jsonutils.NewInt(int64(self.GetNetworkCount())), "network_count") - region := self.GetRegion() - if region != nil { - extra.Add(jsonutils.NewString(region.GetName()), "region") - if len(region.GetExternalId()) > 0 { - extra.Add(jsonutils.NewString(region.GetExternalId()), "region_external_id") - } + region, err := self.GetRegion() + if err != nil { + log.Errorf("failed getting region for vpc %s(%s)", self.Name, self.Id) + return extra + } + extra.Add(jsonutils.NewString(region.GetName()), "region") + if len(region.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(region.GetExternalId()), "region_external_id") } return extra } -func (self *SVpc) GetRegion() *SCloudregion { +func (self *SVpc) GetRegion() (*SCloudregion, error) { region, err := CloudregionManager.FetchById(self.CloudregionId) if err != nil { - log.Errorf("Get region error %s", err) - return nil + return nil, err } - return region.(*SCloudregion) + return region.(*SCloudregion), nil } func (self *SVpc) GetCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict { @@ -410,14 +411,12 @@ func (self *SVpc) PostCreate(ctx context.Context, userCred mcclient.TokenCredent } func (self *SVpc) GetIRegion() (cloudprovider.ICloudRegion, error) { - region := self.GetRegion() - if region == nil { - log.Errorf("cannot find region for this vpc??") - return nil, fmt.Errorf("Cannot find region") + region, err := self.GetRegion() + if err != nil { + return nil, err } provider, err := self.GetDriver() if err != nil { - log.Errorf("fail to find cloud provider") return nil, err } return provider.GetIRegionById(region.GetExternalId()) @@ -433,11 +432,9 @@ func (self *SVpc) GetIVpc() (cloudprovider.ICloudVpc, error) { if provider.IsOnPremiseInfrastructure() { iregion, err = provider.GetOnPremiseIRegion() } else { - region := self.GetRegion() - if region == nil { - msg := "fail to find region of host???" - log.Errorf(msg) - return nil, fmt.Errorf(msg) + region, err := self.GetRegion() + if err != nil { + return nil, err } iregion, err = provider.GetIRegionById(region.ExternalId) } From 2666bfa2aedc751fffeea13f5aa1b363c729b7bc Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 6 Dec 2018 15:02:04 +0000 Subject: [PATCH 2/4] =?UTF-8?q?vpcs:=20SyncWithCloudVpc():=20=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E9=87=8D=E5=A4=8D=E8=AE=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/vpcs.go | 3 --- pkg/compute/tasks/vpc_create_task.go | 1 - 2 files changed, 4 deletions(-) diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index 738186710f..2d1b3bc402 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -288,9 +288,6 @@ func (self *SVpc) SyncWithCloudVpc(extVPC cloudprovider.ICloudVpc) error { return nil }) - if err != nil { - log.Errorf("syncWithCloudVpc error %s", err) - } return err } diff --git a/pkg/compute/tasks/vpc_create_task.go b/pkg/compute/tasks/vpc_create_task.go index f4342dcaf6..7dc7382048 100644 --- a/pkg/compute/tasks/vpc_create_task.go +++ b/pkg/compute/tasks/vpc_create_task.go @@ -51,7 +51,6 @@ func (self *VpcCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, err = vpc.SyncWithCloudVpc(ivpc) if err != nil { - log.Errorf("SyncWithCloudVpc fail: %s", err) self.TaskFailed(ctx, vpc, err) return } From dddd859c0955996c76b42f90af21a02a48d25d29 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 6 Dec 2018 15:37:44 +0000 Subject: [PATCH 3/4] =?UTF-8?q?tasks:=20VpcCreateTask:=20=E9=A3=8E?= =?UTF-8?q?=E6=A0=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/tasks/vpc_create_task.go | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/pkg/compute/tasks/vpc_create_task.go b/pkg/compute/tasks/vpc_create_task.go index 7dc7382048..1164090984 100644 --- a/pkg/compute/tasks/vpc_create_task.go +++ b/pkg/compute/tasks/vpc_create_task.go @@ -59,16 +59,13 @@ func (self *VpcCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, syncVpcWires(ctx, provider, self, vpc, ivpc, &models.SSyncRange{}) hosts := models.HostManager.GetHostsByManagerAndRegion(provider.Id, vpc.CloudregionId) - if hosts != nil { - for i := 0; i < len(hosts); i += 1 { - ihost, err := hosts[i].GetIHost() - if err != nil { - log.Errorf("getiHost fail %s", err) - self.TaskFailed(ctx, vpc, err) - return - } - syncHostWires(ctx, provider, self, &hosts[i], ihost) + for i := 0; i < len(hosts); i += 1 { + ihost, err := hosts[i].GetIHost() + if err != nil { + self.TaskFailed(ctx, vpc, err) + return } + syncHostWires(ctx, provider, self, &hosts[i], ihost) } self.SetStageComplete(ctx, nil) From 76f1ba405c417af042d6ebafc69e919e35589a91 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 6 Dec 2018 16:40:59 +0000 Subject: [PATCH 4/4] =?UTF-8?q?hosts:=20GetHostsByManagerAndRegion():=20sq?= =?UTF-8?q?l=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/hosts.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index 44f30955c7..e4900d322d 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -1978,12 +1978,10 @@ func (self *SHost) GetDetailsIpmi(ctx context.Context, userCred mcclient.TokenCr } func (manager *SHostManager) GetHostsByManagerAndRegion(managerId string, regionId string) []SHost { - hosts := HostManager.Query().SubQuery() - zones := ZoneManager.Query().SubQuery() - q := hosts.Query() - q = q.Join(zones, sqlchemy.Equals(hosts.Field("zone_id"), zones.Field("id"))) - q = q.Filter(sqlchemy.Equals(hosts.Field("manager_id"), managerId)) - q = q.Filter(sqlchemy.Equals(zones.Field("cloudregion_id"), regionId)) + zones := ZoneManager.Query().Equals("cloudregion_id", regionId).SubQuery() + hosts := HostManager.Query() + q := hosts.Equals("manager_id", managerId) + q = q.Join(zones, sqlchemy.Equals(zones.Field("id"), hosts.Field("zone_id"))) ret := make([]SHost, 0) err := db.FetchModelObjects(HostManager, q, &ret) if err != nil {