From 16b80dfefb075f95b86fcaeec0da827c84ef04d5 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Wed, 8 Aug 2018 13:47:56 +0000 Subject: [PATCH] cloudcommon: db: make master, slave id explict in joint resource base --- pkg/cloudcommon/db/interface.go | 2 +- pkg/cloudcommon/db/jointbase.go | 7 +++---- pkg/compute/models/hostwires.go | 11 +++++++++-- pkg/compute/models/storagecachedimages.go | 11 ++++++++++- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pkg/cloudcommon/db/interface.go b/pkg/cloudcommon/db/interface.go index fee8f2bf21..e9de71647c 100644 --- a/pkg/cloudcommon/db/interface.go +++ b/pkg/cloudcommon/db/interface.go @@ -116,7 +116,7 @@ type IJointModelManager interface { GetMasterManager() IStandaloneModelManager GetSlaveManager() IStandaloneModelManager - FetchByIds(id1 string, id2 string) (IJointModel, error) + FetchByIds(masterId string, slaveId string) (IJointModel, error) AllowListDescendent(ctx context.Context, userCred mcclient.TokenCredential, model IStandaloneModel, query jsonutils.JSONObject) bool AllowAttach(ctx context.Context, userCred mcclient.TokenCredential, master IStandaloneModel, slave IStandaloneModel) bool diff --git a/pkg/cloudcommon/db/jointbase.go b/pkg/cloudcommon/db/jointbase.go index e1cfb323bb..ed1a0e7156 100644 --- a/pkg/cloudcommon/db/jointbase.go +++ b/pkg/cloudcommon/db/jointbase.go @@ -65,7 +65,7 @@ func (manager *SJointResourceBaseManager) SlaveField(q *sqlchemy.SQuery) sqlchem return queryField(q, manager.GetSlaveManager()) } -func (manager *SJointResourceBaseManager) FetchByIds(id1 string, id2 string) (IJointModel, error) { +func (manager *SJointResourceBaseManager) FetchByIds(masterId string, slaveId string) (IJointModel, error) { obj, err := NewModelObject(manager) if err != nil { return nil, err @@ -83,9 +83,8 @@ func (manager *SJointResourceBaseManager) FetchByIds(id1 string, id2 string) (IJ if slaveField == nil { return nil, fmt.Errorf("cannot find slave id") } - cond1 := sqlchemy.AND(sqlchemy.Equals(masterField, id1), sqlchemy.Equals(slaveField, id2)) - cond2 := sqlchemy.AND(sqlchemy.Equals(slaveField, id1), sqlchemy.Equals(masterField, id2)) - q = q.Filter(sqlchemy.OR(cond1, cond2)) + cond := sqlchemy.AND(sqlchemy.Equals(masterField, masterId), sqlchemy.Equals(slaveField, slaveId)) + q = q.Filter(cond) count := q.Count() if count > 1 { return nil, sqlchemy.ErrDuplicateEntry diff --git a/pkg/compute/models/hostwires.go b/pkg/compute/models/hostwires.go index c9b684f9eb..e2e25bf009 100644 --- a/pkg/compute/models/hostwires.go +++ b/pkg/compute/models/hostwires.go @@ -18,8 +18,15 @@ var HostwireManager *SHostwireManager func init() { db.InitManager(func() { - HostwireManager = &SHostwireManager{SHostJointsManager: NewHostJointsManager(SHostwire{}, - "hostwires_tbl", "hostwire", "hostwires", WireManager)} + HostwireManager = &SHostwireManager{ + SHostJointsManager: NewHostJointsManager( + SHostwire{}, + "hostwires_tbl", + "hostwire", + "hostwires", + WireManager, + ), + } }) } diff --git a/pkg/compute/models/storagecachedimages.go b/pkg/compute/models/storagecachedimages.go index c40282b28b..26f706bbac 100644 --- a/pkg/compute/models/storagecachedimages.go +++ b/pkg/compute/models/storagecachedimages.go @@ -35,7 +35,16 @@ var StoragecachedimageManager *SStoragecachedimageManager func init() { db.InitManager(func() { - StoragecachedimageManager = &SStoragecachedimageManager{SJointResourceBaseManager: db.NewJointResourceBaseManager(SStoragecachedimage{}, "storagecachedimages_tbl", "storagecachedimage", "storagecachedimages", StoragecacheManager, CachedimageManager)} + StoragecachedimageManager = &SStoragecachedimageManager{ + SJointResourceBaseManager: db.NewJointResourceBaseManager( + SStoragecachedimage{}, + "storagecachedimages_tbl", + "storagecachedimage", + "storagecachedimages", + StoragecacheManager, + CachedimageManager, + ), + } }) }