diff --git a/pkg/cloudcommon/db/modelbase.go b/pkg/cloudcommon/db/modelbase.go index 4396b60c4a..d0169ef4d9 100644 --- a/pkg/cloudcommon/db/modelbase.go +++ b/pkg/cloudcommon/db/modelbase.go @@ -17,13 +17,13 @@ package db import ( "context" "database/sql" + "fmt" "net/http" + "time" "yunion.io/x/jsonutils" "yunion.io/x/sqlchemy" - "log" - "time" "yunion.io/x/onecloud/pkg/appsrv" "yunion.io/x/onecloud/pkg/cloudcommon/object" "yunion.io/x/onecloud/pkg/httperrors" @@ -57,9 +57,13 @@ func NewModelBaseManager(model interface{}, tableName string, keyword string, ke func (manager *SModelBaseManager) GetIModelManager() IModelManager { virt := manager.GetVirtualObject() if virt == nil { - log.Fatalf("%s.GetIModelManager got nil!", manager.keywordPlural) + panic(fmt.Sprintf("Forgot to call SetVirtualObject?")) } - return virt.(IModelManager) + r, ok := virt.(IModelManager) + if !ok { + panic(fmt.Sprintf("Cannot convert virtual object to IModelManager: %#v", virt)) + } + return r } func (manager *SModelBaseManager) SetAlias(alias string, aliasPlural string) { diff --git a/pkg/cloudcommon/etcd/models/serviceregistries.go b/pkg/cloudcommon/etcd/models/serviceregistries.go index 7177b4885d..bd12011a1e 100644 --- a/pkg/cloudcommon/etcd/models/serviceregistries.go +++ b/pkg/cloudcommon/etcd/models/serviceregistries.go @@ -52,6 +52,7 @@ func init() { "service-registries", ), } + ServiceRegistryManager.SetVirtualObject(ServiceRegistryManager) } func (manager *SServiceRegistryManager) Register(ctx context.Context, addr string, port int, diff --git a/pkg/yunionconf/models/parameters.go b/pkg/yunionconf/models/parameters.go index 3b58b6b343..866158d1b8 100644 --- a/pkg/yunionconf/models/parameters.go +++ b/pkg/yunionconf/models/parameters.go @@ -59,7 +59,15 @@ type SParameter struct { var ParameterManager *SParameterManager func init() { - ParameterManager = &SParameterManager{SResourceBaseManager: db.NewResourceBaseManager(SParameter{}, "paramters_tbl", "parameter", "parameters")} + ParameterManager = &SParameterManager{ + SResourceBaseManager: db.NewResourceBaseManager( + SParameter{}, + "paramters_tbl", + "parameter", + "parameters", + ), + } + ParameterManager.SetVirtualObject(ParameterManager) } func isAdminQuery(query jsonutils.JSONObject) bool {