mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
feature: allow manager to preapre query context (#19455)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -75,7 +75,7 @@ func init() {
|
||||
|
||||
func (man *SAnsiblePlaybookManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
|
||||
pbV := NewAnsiblePlaybookValidator("playbook", userCred)
|
||||
if err := pbV.Validate(data); err != nil {
|
||||
if err := pbV.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data.Set("status", jsonutils.NewString(api.AnsiblePlaybookStatusInit))
|
||||
@@ -137,7 +137,7 @@ func (apb *SAnsiblePlaybook) ValidateUpdateCondition(ctx context.Context) error
|
||||
|
||||
func (apb *SAnsiblePlaybook) ValidateUpdateData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
|
||||
pbV := NewAnsiblePlaybookValidator("playbook", userCred)
|
||||
if err := pbV.Validate(data); err != nil {
|
||||
if err := pbV.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
apb.Playbook = pbV.Playbook // Update as a whole
|
||||
|
||||
@@ -46,7 +46,7 @@ func NewAnsiblePlaybookValidator(key string, userCred mcclient.TokenCredential)
|
||||
return v
|
||||
}
|
||||
|
||||
func (v *ValidatorAnsiblePlaybook) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorAnsiblePlaybook) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
pb := ansible.NewPlaybook()
|
||||
err := data.Unmarshal(pb, "playbook")
|
||||
if err != nil {
|
||||
|
||||
@@ -68,10 +68,11 @@ func ApplyQueryDistinctExtraField(
|
||||
type FilterByOwnerProvider interface {
|
||||
Keyword() string
|
||||
KeywordPlural() string
|
||||
FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery
|
||||
FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery
|
||||
}
|
||||
|
||||
func ApplyFilterByOwner(
|
||||
ctx context.Context,
|
||||
q *sqlchemy.SQuery,
|
||||
userCred mcclient.TokenCredential,
|
||||
owner mcclient.IIdentityProvider,
|
||||
@@ -79,7 +80,7 @@ func ApplyFilterByOwner(
|
||||
managers ...FilterByOwnerProvider,
|
||||
) *sqlchemy.SQuery {
|
||||
for _, manager := range managers {
|
||||
q = manager.FilterByOwner(q, manager, userCred, owner, scope)
|
||||
q = manager.FilterByOwner(ctx, q, manager, userCred, owner, scope)
|
||||
}
|
||||
return q
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
// Copyright 2019 Yunion
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/pkg/appctx"
|
||||
)
|
||||
|
||||
const (
|
||||
APP_CONTEXT_KEY_DB_METADATA_MANAGER = appctx.AppContextKey("db_metadata_manager")
|
||||
APP_CONTEXT_KEY_DB_TENANT_CACHE_MANAGER = appctx.AppContextKey("db_tenant_cache_manager")
|
||||
)
|
||||
|
||||
func GetMetadaManagerInContext(ctx context.Context) *SMetadataManager {
|
||||
val := ctx.Value(APP_CONTEXT_KEY_DB_METADATA_MANAGER)
|
||||
if val != nil {
|
||||
return val.(*SMetadataManager)
|
||||
} else {
|
||||
return Metadata
|
||||
}
|
||||
}
|
||||
|
||||
func SaveMetadaManagerInContext(ctx context.Context, manager *SMetadataManager) context.Context {
|
||||
return context.WithValue(ctx, APP_CONTEXT_KEY_DB_METADATA_MANAGER, manager)
|
||||
}
|
||||
|
||||
func GetTenantCacheManagerInContext(ctx context.Context) *STenantCacheManager {
|
||||
val := ctx.Value(APP_CONTEXT_KEY_DB_TENANT_CACHE_MANAGER)
|
||||
if val != nil {
|
||||
return val.(*STenantCacheManager)
|
||||
} else {
|
||||
return TenantCacheManager
|
||||
}
|
||||
}
|
||||
|
||||
func SaveTenantCacheManagerInContext(ctx context.Context, manager *STenantCacheManager) context.Context {
|
||||
return context.WithValue(ctx, APP_CONTEXT_KEY_DB_TENANT_CACHE_MANAGER, manager)
|
||||
}
|
||||
@@ -253,7 +253,8 @@ func ListItemQueryFilters(manager IModelManager,
|
||||
return listItemQueryFilters(manager, ctx, q, userCred, query, action, false)
|
||||
}
|
||||
|
||||
func listItemQueryFiltersRaw(manager IModelManager,
|
||||
func listItemQueryFiltersRaw(
|
||||
manager IModelManager,
|
||||
ctx context.Context, q *sqlchemy.SQuery,
|
||||
userCred mcclient.TokenCredential,
|
||||
query jsonutils.JSONObject,
|
||||
@@ -274,7 +275,7 @@ func listItemQueryFiltersRaw(manager IModelManager,
|
||||
if !useRawQuery {
|
||||
// Specifically for joint resource, these filters will exclude
|
||||
// deleted resources by joining with master/slave tables
|
||||
q = manager.FilterByOwner(q, manager, userCred, ownerId, queryScope)
|
||||
q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, queryScope)
|
||||
q = manager.FilterBySystemAttributes(q, userCred, query, queryScope)
|
||||
q = manager.FilterByHiddenSystemAttributes(q, userCred, query, queryScope)
|
||||
}
|
||||
@@ -915,6 +916,7 @@ func (dispatcher *DBModelDispatcher) List(ctx context.Context, query jsonutils.J
|
||||
userCred := fetchUserCredential(ctx)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query)
|
||||
|
||||
ctx = manager.PrepareQueryContext(ctx, userCred, query)
|
||||
// list详情
|
||||
items, err := ListItems(manager, ctx, userCred, query, ctxIds)
|
||||
if err != nil {
|
||||
@@ -977,10 +979,10 @@ func getItemDetails(manager IModelManager, item IModel, ctx context.Context, use
|
||||
return nil, httperrors.NewInternalServerError("FetchCustomizeColumns returns incorrect results(expect 1 actual %d)", len(extraRows))
|
||||
}
|
||||
|
||||
func (dispatcher *DBModelDispatcher) tryGetModelProperty(ctx context.Context, property string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
func tryGetModelProperty(manager IModelManager, ctx context.Context, property string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
userCred := fetchUserCredential(ctx)
|
||||
funcName := fmt.Sprintf("GetProperty%s", utils.Kebab2Camel(property, "-"))
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query)
|
||||
|
||||
modelValue := reflect.ValueOf(manager)
|
||||
// params := []interface{}{ctx, userCred, query}
|
||||
|
||||
@@ -1019,8 +1021,9 @@ func (dispatcher *DBModelDispatcher) Get(ctx context.Context, idStr string, quer
|
||||
// log.Debugf("Get %s", idStr)
|
||||
userCred := fetchUserCredential(ctx)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query)
|
||||
ctx = manager.PrepareQueryContext(ctx, userCred, query)
|
||||
|
||||
data, err := dispatcher.tryGetModelProperty(ctx, idStr, query)
|
||||
data, err := tryGetModelProperty(manager, ctx, idStr, query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if data != nil {
|
||||
@@ -1057,6 +1060,8 @@ func (dispatcher *DBModelDispatcher) Get(ctx context.Context, idStr string, quer
|
||||
func (dispatcher *DBModelDispatcher) GetSpecific(ctx context.Context, idStr string, spec string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
userCred := fetchUserCredential(ctx)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query)
|
||||
ctx = manager.PrepareQueryContext(ctx, userCred, query)
|
||||
|
||||
model, err := fetchItem(manager, ctx, userCred, idStr, query)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), idStr)
|
||||
@@ -1287,7 +1292,7 @@ func _doCreateItem(
|
||||
uniqValues := manager.FetchUniqValues(ctx, dataDict)
|
||||
name, _ := dataDict.GetString("name")
|
||||
if len(name) > 0 {
|
||||
err = NewNameValidator(manager, ownerId, name, uniqValues)
|
||||
err = NewNameValidator(ctx, manager, ownerId, name, uniqValues)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -70,19 +70,22 @@ func (dispatcher *DBJointModelDispatcher) ListMasterDescendent(ctx context.Conte
|
||||
}
|
||||
}
|
||||
|
||||
model, err := fetchItem(dispatcher.JointModelManager().GetMasterManager(), ctx, userCred, idStr, query)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query).(IJointModelManager)
|
||||
ctx = manager.PrepareQueryContext(ctx, userCred, query)
|
||||
|
||||
model, err := fetchItem(manager.GetMasterManager(), ctx, userCred, idStr, query)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(dispatcher.JointModelManager().GetMasterManager().Keyword(), idStr)
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.GetMasterManager().Keyword(), idStr)
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetMasterManager().Keyword()))
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), dispatcher.JointModelManager().GetMasterFieldName())
|
||||
if len(dispatcher.JointModelManager().GetMasterManager().Alias()) > 0 {
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetMasterManager().Alias()))
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetMasterManager().Keyword()))
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), manager.GetMasterFieldName())
|
||||
if len(manager.GetMasterManager().Alias()) > 0 {
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetMasterManager().Alias()))
|
||||
}
|
||||
|
||||
return dispatcher._listJoint(ctx, userCred, model.(IStandaloneModel), queryDict)
|
||||
return _listJoint(manager, ctx, userCred, model.(IStandaloneModel), queryDict)
|
||||
}
|
||||
|
||||
func (dispatcher *DBJointModelDispatcher) ListSlaveDescendent(ctx context.Context, idStr string, query jsonutils.JSONObject) (*printutils.ListResult, error) {
|
||||
@@ -97,23 +100,26 @@ func (dispatcher *DBJointModelDispatcher) ListSlaveDescendent(ctx context.Contex
|
||||
}
|
||||
}
|
||||
|
||||
model, err := fetchItem(dispatcher.JointModelManager().GetSlaveManager(), ctx, userCred, idStr, query)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query).(IJointModelManager)
|
||||
ctx = manager.PrepareQueryContext(ctx, userCred, query)
|
||||
|
||||
model, err := fetchItem(manager.GetSlaveManager(), ctx, userCred, idStr, query)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(dispatcher.JointModelManager().GetSlaveManager().Keyword(), idStr)
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.GetSlaveManager().Keyword(), idStr)
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetSlaveManager().Keyword()))
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), dispatcher.JointModelManager().GetSlaveFieldName())
|
||||
if len(dispatcher.JointModelManager().GetSlaveManager().Alias()) > 0 {
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetSlaveManager().Alias()))
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetSlaveManager().Keyword()))
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), manager.GetSlaveFieldName())
|
||||
if len(manager.GetSlaveManager().Alias()) > 0 {
|
||||
queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetSlaveManager().Alias()))
|
||||
}
|
||||
|
||||
return dispatcher._listJoint(ctx, userCred, model.(IStandaloneModel), queryDict)
|
||||
return _listJoint(manager, ctx, userCred, model.(IStandaloneModel), queryDict)
|
||||
}
|
||||
|
||||
func (dispatcher *DBJointModelDispatcher) _listJoint(ctx context.Context, userCred mcclient.TokenCredential, ctxModel IStandaloneModel, queryDict jsonutils.JSONObject) (*printutils.ListResult, error) {
|
||||
items, err := ListItems(dispatcher.JointModelManager(), ctx, userCred, queryDict, nil)
|
||||
func _listJoint(manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, ctxModel IStandaloneModel, queryDict jsonutils.JSONObject) (*printutils.ListResult, error) {
|
||||
items, err := ListItems(manager, ctx, userCred, queryDict, nil)
|
||||
if err != nil {
|
||||
log.Errorf("Fail to list items: %s", err)
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
@@ -121,16 +127,16 @@ func (dispatcher *DBJointModelDispatcher) _listJoint(ctx context.Context, userCr
|
||||
return items, nil
|
||||
}
|
||||
|
||||
func fetchJointItem(dispatcher *DBJointModelDispatcher, ctx context.Context, userCred mcclient.TokenCredential, id1 string, id2 string, query jsonutils.JSONObject) (IStandaloneModel, IStandaloneModel, IJointModel, error) {
|
||||
master, err := fetchItem(dispatcher.JointModelManager().GetMasterManager(), ctx, userCred, id1, query)
|
||||
func fetchJointItem(manager IJointModelManager, ctx context.Context, userCred mcclient.TokenCredential, id1 string, id2 string, query jsonutils.JSONObject) (IStandaloneModel, IStandaloneModel, IJointModel, error) {
|
||||
master, err := fetchItem(manager.GetMasterManager(), ctx, userCred, id1, query)
|
||||
if err != nil {
|
||||
return nil, nil, nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
slave, err := fetchItem(dispatcher.JointModelManager().GetSlaveManager(), ctx, userCred, id2, query)
|
||||
slave, err := fetchItem(manager.GetSlaveManager(), ctx, userCred, id2, query)
|
||||
if err != nil {
|
||||
return nil, nil, nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
item, err := FetchJointByIds(dispatcher.JointModelManager(), master.GetId(), slave.GetId(), query)
|
||||
item, err := FetchJointByIds(manager, master.GetId(), slave.GetId(), query)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
@@ -139,9 +145,11 @@ func fetchJointItem(dispatcher *DBJointModelDispatcher, ctx context.Context, use
|
||||
|
||||
func (dispatcher *DBJointModelDispatcher) Get(ctx context.Context, id1 string, id2 string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
userCred := fetchUserCredential(ctx)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query)
|
||||
|
||||
_, _, item, err := fetchJointItem(dispatcher, ctx, userCred, id1, id2, query)
|
||||
manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query).(IJointModelManager)
|
||||
ctx = manager.PrepareQueryContext(ctx, userCred, query)
|
||||
|
||||
_, _, item, err := fetchJointItem(manager, ctx, userCred, id1, id2, query)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), id1+"-"+id2)
|
||||
} else if err != nil {
|
||||
@@ -151,7 +159,7 @@ func (dispatcher *DBJointModelDispatcher) Get(ctx context.Context, id1 string, i
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return getItemDetails(dispatcher.JointModelManager(), item, ctx, userCred, query)
|
||||
return getItemDetails(manager, item, ctx, userCred, query)
|
||||
}
|
||||
|
||||
func attachItems(
|
||||
@@ -214,7 +222,7 @@ func (dispatcher *DBJointModelDispatcher) Attach(ctx context.Context, id1 string
|
||||
}
|
||||
}
|
||||
|
||||
_, _, joinItem, err := fetchJointItem(dispatcher, ctx, userCred, master.GetId(), slave.GetId(), query)
|
||||
_, _, joinItem, err := fetchJointItem(dispatcher.JointModelManager(), ctx, userCred, master.GetId(), slave.GetId(), query)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return nil, err
|
||||
}
|
||||
@@ -237,7 +245,7 @@ func (dispatcher *DBJointModelDispatcher) Update(ctx context.Context, id1 string
|
||||
manager := dispatcher.manager.GetMutableInstance(ctx, userCred, query, data)
|
||||
|
||||
// 获取对象与关联表(such as guestdisks_tbl)
|
||||
master, slave, item, err := fetchJointItem(dispatcher, ctx, userCred, id1, id2, query)
|
||||
master, slave, item, err := fetchJointItem(dispatcher.JointModelManager(), ctx, userCred, id1, id2, query)
|
||||
if err == sql.ErrNoRows {
|
||||
if jsonutils.QueryBoolean(query, "auto_create", false) {
|
||||
queryDict := query.(*jsonutils.JSONDict)
|
||||
@@ -265,7 +273,7 @@ func (dispatcher *DBJointModelDispatcher) Detach(ctx context.Context, id1 string
|
||||
userCred := fetchUserCredential(ctx)
|
||||
manager := dispatcher.manager.GetMutableInstance(ctx, userCred, query, data)
|
||||
|
||||
master, slave, item, err := fetchJointItem(dispatcher, ctx, userCred, id1, id2, query)
|
||||
master, slave, item, err := fetchJointItem(dispatcher.JointModelManager(), ctx, userCred, id1, id2, query)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), id1+"-"+id2)
|
||||
} else if err != nil {
|
||||
|
||||
@@ -54,7 +54,7 @@ func (manager *SDomainizedResourceBaseManager) ResourceScope() rbacscope.TRbacSc
|
||||
return rbacscope.ScopeDomain
|
||||
}
|
||||
|
||||
func (manager *SDomainizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SDomainizedResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeProject, rbacscope.ScopeDomain:
|
||||
@@ -64,9 +64,8 @@ func (manager *SDomainizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery,
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters)
|
||||
}
|
||||
|
||||
}
|
||||
case rbacscope.ScopeSystem:
|
||||
if userCred != nil {
|
||||
@@ -74,14 +73,13 @@ func (manager *SDomainizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery,
|
||||
if !result.DomainTags.IsEmpty() {
|
||||
policyFilters := tagutils.STagFilters{}
|
||||
policyFilters.AddFilters(result.DomainTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", policyFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", policyFilters)
|
||||
}
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -149,7 +147,7 @@ func (manager *SDomainizedResourceBaseManager) ListItemFilter(
|
||||
if !query.NoDomainTags.IsEmpty() {
|
||||
tagFilters.AddNoFilters(query.NoDomainTags)
|
||||
}
|
||||
q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", tagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", tagFilters)
|
||||
return q, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ func (model *SDomainLevelResourceBase) PerformChangeOwner(ctx context.Context, u
|
||||
}
|
||||
|
||||
q := manager.Query().Equals("name", model.GetName())
|
||||
q = manager.FilterByOwner(q, manager, userCred, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope())
|
||||
q = q.NotEquals("id", model.GetId())
|
||||
cnt, err := q.CountWithError()
|
||||
|
||||
@@ -96,7 +96,7 @@ func FetchById(manager IModelManager, idStr string) (IModel, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func FetchByName(manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
func FetchByName(ctx context.Context, manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
q := manager.Query()
|
||||
q = manager.FilterByName(q, idStr)
|
||||
count, err := q.CountWithError()
|
||||
@@ -104,7 +104,7 @@ func FetchByName(manager IModelManager, userCred mcclient.IIdentityProvider, idS
|
||||
return nil, err
|
||||
}
|
||||
if count > 0 && userCred != nil {
|
||||
q = manager.FilterByOwner(q, manager, nil, userCred, manager.NamespaceScope())
|
||||
q = manager.FilterByOwner(ctx, q, manager, nil, userCred, manager.NamespaceScope())
|
||||
q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope())
|
||||
count, err = q.CountWithError()
|
||||
if err != nil {
|
||||
@@ -129,13 +129,13 @@ func FetchByName(manager IModelManager, userCred mcclient.IIdentityProvider, idS
|
||||
}
|
||||
}
|
||||
|
||||
func FetchByIdOrName(manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
func FetchByIdOrName(ctx context.Context, manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
if stringutils2.IsUtf8(idStr) {
|
||||
return FetchByName(manager, userCred, idStr)
|
||||
return FetchByName(ctx, manager, userCred, idStr)
|
||||
}
|
||||
obj, err := FetchById(manager, idStr)
|
||||
if err == sql.ErrNoRows {
|
||||
return FetchByName(manager, userCred, idStr)
|
||||
return FetchByName(ctx, manager, userCred, idStr)
|
||||
} else {
|
||||
return obj, err
|
||||
}
|
||||
@@ -197,7 +197,7 @@ func fetchItemByName(manager IModelManager, ctx context.Context, userCred mcclie
|
||||
if err != nil {
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
q = manager.FilterByOwner(q, manager, userCred, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope())
|
||||
count, err = q.CountWithError()
|
||||
if err != nil {
|
||||
|
||||
@@ -54,8 +54,8 @@ func (manager *SInfrasResourceBaseManager) GetIInfrasModelManager() IInfrasModel
|
||||
return manager.GetVirtualObject().(IInfrasModelManager)
|
||||
}
|
||||
|
||||
func (manager *SInfrasResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return SharableManagerFilterByOwner(manager.GetIInfrasModelManager(), q, userCred, owner, scope)
|
||||
func (manager *SInfrasResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return SharableManagerFilterByOwner(ctx, manager.GetIInfrasModelManager(), q, userCred, owner, scope)
|
||||
}
|
||||
|
||||
func (model *SInfrasResourceBase) IsSharable(reqUsrId mcclient.IIdentityProvider) bool {
|
||||
|
||||
@@ -78,7 +78,6 @@ type IModelManager interface {
|
||||
FilterByName(q *sqlchemy.SQuery, name string) *sqlchemy.SQuery
|
||||
|
||||
FilterByOwnerProvider
|
||||
//FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery
|
||||
|
||||
FilterBySystemAttributes(q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, scope rbacscope.TRbacScope) *sqlchemy.SQuery
|
||||
FilterByHiddenSystemAttributes(q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, scope rbacscope.TRbacScope) *sqlchemy.SQuery
|
||||
@@ -88,8 +87,8 @@ type IModelManager interface {
|
||||
|
||||
// RawFetchById(idStr string) (IModel, error)
|
||||
FetchById(idStr string) (IModel, error)
|
||||
FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error)
|
||||
FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error)
|
||||
FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error)
|
||||
FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error)
|
||||
|
||||
// create hooks
|
||||
// AllowCreateItem(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool
|
||||
@@ -142,6 +141,8 @@ type IModelManager interface {
|
||||
CreateByInsertOrUpdate() bool
|
||||
|
||||
CustomizedTotalCount(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, totalQ *sqlchemy.SQuery) (int, jsonutils.JSONObject, error)
|
||||
|
||||
PrepareQueryContext(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) context.Context
|
||||
}
|
||||
|
||||
type IModel interface {
|
||||
|
||||
@@ -147,9 +147,9 @@ func (m *SMetadata) GetName() string {
|
||||
return fmt.Sprintf("%s-%s", m.Id, m.Key)
|
||||
}
|
||||
|
||||
func (m *SMetadata) GetModelManager() IModelManager {
|
||||
return Metadata
|
||||
}
|
||||
// func (m *SMetadata) GetModelManager() IModelManager {
|
||||
// return Metadata
|
||||
// }
|
||||
|
||||
func GetModelIdstr(model IModel) string {
|
||||
return getObjectIdstr(model.GetModelManager().Keyword(), model.GetId())
|
||||
@@ -412,7 +412,7 @@ func (manager *SMetadataManager) ListItemFilter(ctx context.Context, q *sqlchemy
|
||||
log.Warningf("FetchCheckQueryOwnerScope.%s error: %v", man.Keyword(), err)
|
||||
continue
|
||||
}
|
||||
sq = man.FilterByOwner(sq, man, userCred, ownerId, queryScope)
|
||||
sq = man.FilterByOwner(ctx, sq, man, userCred, ownerId, queryScope)
|
||||
sq = man.FilterBySystemAttributes(sq, userCred, query, queryScope)
|
||||
sq = man.FilterByHiddenSystemAttributes(sq, userCred, query, queryScope)
|
||||
conditions = append(conditions, sqlchemy.In(q.Field("obj_id"), sq))
|
||||
@@ -446,7 +446,7 @@ func (manager *SMetadataManager) GetStringValue(ctx context.Context, model IMode
|
||||
}
|
||||
idStr := GetModelIdstr(model)
|
||||
m := SMetadata{}
|
||||
err := manager.Query().Equals("id", idStr).Equals("key", key).First(&m)
|
||||
err := manager.Query("value").Equals("id", idStr).Equals("key", key).First(&m)
|
||||
if err == nil {
|
||||
return m.Value
|
||||
}
|
||||
@@ -462,7 +462,7 @@ func (manager *SMetadataManager) GetJsonValue(ctx context.Context, model IModel,
|
||||
}
|
||||
idStr := GetModelIdstr(model)
|
||||
m := SMetadata{}
|
||||
err := manager.Query().Equals("id", idStr).Equals("key", key).First(&m)
|
||||
err := manager.Query("value").Equals("id", idStr).Equals("key", key).First(&m)
|
||||
if err == nil {
|
||||
json, _ := jsonutils.ParseString(m.Value)
|
||||
return json
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
@@ -32,40 +33,40 @@ import (
|
||||
|
||||
type SMetadataResourceBaseModelManager struct{}
|
||||
|
||||
func ObjectIdQueryWithPolicyResult(q *sqlchemy.SQuery, manager IModelManager, result rbacutils.SPolicyResult) *sqlchemy.SQuery {
|
||||
func ObjectIdQueryWithPolicyResult(ctx context.Context, q *sqlchemy.SQuery, manager IModelManager, result rbacutils.SPolicyResult) *sqlchemy.SQuery {
|
||||
scope := manager.ResourceScope()
|
||||
if scope == rbacscope.ScopeDomain || scope == rbacscope.ScopeProject {
|
||||
if !result.DomainTags.IsEmpty() {
|
||||
tagFilters := tagutils.STagFilters{}
|
||||
tagFilters.AddFilters(result.DomainTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", tagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", tagFilters)
|
||||
}
|
||||
}
|
||||
if scope == rbacscope.ScopeProject {
|
||||
if !result.ProjectTags.IsEmpty() {
|
||||
tagFilters := tagutils.STagFilters{}
|
||||
tagFilters.AddFilters(result.ProjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", tagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", tagFilters)
|
||||
}
|
||||
}
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
tagFilters := tagutils.STagFilters{}
|
||||
tagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), tagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), tagFilters)
|
||||
}
|
||||
return q
|
||||
}
|
||||
|
||||
func ObjectIdQueryWithTagFilters(q *sqlchemy.SQuery, idField string, modelName string, filters tagutils.STagFilters) *sqlchemy.SQuery {
|
||||
func ObjectIdQueryWithTagFilters(ctx context.Context, q *sqlchemy.SQuery, idField string, modelName string, filters tagutils.STagFilters) *sqlchemy.SQuery {
|
||||
if len(filters.Filters) > 0 {
|
||||
sq := objIdQueryWithTags(modelName, filters.Filters)
|
||||
sq := objIdQueryWithTags(ctx, modelName, filters.Filters)
|
||||
if sq != nil {
|
||||
sqq := sq.SubQuery()
|
||||
q = q.Join(sqq, sqlchemy.Equals(q.Field(idField), sqq.Field("obj_id")))
|
||||
}
|
||||
}
|
||||
if len(filters.NoFilters) > 0 {
|
||||
sq := objIdQueryWithTags(modelName, filters.NoFilters)
|
||||
sq := objIdQueryWithTags(ctx, modelName, filters.NoFilters)
|
||||
if sq != nil {
|
||||
q = q.Filter(sqlchemy.NotIn(q.Field(idField), sq.SubQuery()))
|
||||
}
|
||||
@@ -73,8 +74,9 @@ func ObjectIdQueryWithTagFilters(q *sqlchemy.SQuery, idField string, modelName s
|
||||
return q
|
||||
}
|
||||
|
||||
func objIdQueryWithTags(modelName string, tagsList []map[string][]string) *sqlchemy.SQuery {
|
||||
metadataResQ := Metadata.Query().Equals("obj_type", modelName).SubQuery()
|
||||
func objIdQueryWithTags(ctx context.Context, modelName string, tagsList []map[string][]string) *sqlchemy.SQuery {
|
||||
manager := GetMetadaManagerInContext(ctx)
|
||||
metadataResQ := manager.Query().Equals("obj_type", modelName).SubQuery()
|
||||
|
||||
queries := make([]sqlchemy.IQuery, 0)
|
||||
for _, tags := range tagsList {
|
||||
@@ -106,10 +108,12 @@ func objIdQueryWithTags(modelName string, tagsList []map[string][]string) *sqlch
|
||||
}
|
||||
|
||||
func (meta *SMetadataResourceBaseModelManager) ListItemFilter(
|
||||
ctx context.Context,
|
||||
manager IModelManager,
|
||||
q *sqlchemy.SQuery,
|
||||
input apis.MetadataResourceListInput,
|
||||
) *sqlchemy.SQuery {
|
||||
metadataMan := GetMetadaManagerInContext(ctx)
|
||||
|
||||
inputTagFilters := tagutils.STagFilters{}
|
||||
if len(input.Tags) > 0 {
|
||||
@@ -124,7 +128,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter(
|
||||
if !input.NoObjTags.IsEmpty() {
|
||||
inputTagFilters.AddNoFilters(input.NoObjTags)
|
||||
}
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), inputTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), inputTagFilters)
|
||||
|
||||
//if !input.PolicyObjectTags.IsEmpty() {
|
||||
// projTagFilters := tagutils.STagFilters{}
|
||||
@@ -133,7 +137,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter(
|
||||
//}
|
||||
|
||||
if input.WithoutUserMeta != nil || input.WithUserMeta != nil {
|
||||
metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery()
|
||||
metadatas := metadataMan.Query().Equals("obj_type", manager.Keyword()).SubQuery()
|
||||
sq := metadatas.Query(metadatas.Field("obj_id")).Startswith("key", USER_TAG_PREFIX).Distinct().SubQuery()
|
||||
if (input.WithoutUserMeta != nil && *input.WithoutUserMeta) || (input.WithUserMeta != nil && !*input.WithUserMeta) {
|
||||
q = q.Filter(sqlchemy.NotIn(q.Field("id"), sq))
|
||||
@@ -143,7 +147,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if input.WithCloudMeta != nil {
|
||||
metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery()
|
||||
metadatas := metadataMan.Query().Equals("obj_type", manager.Keyword()).SubQuery()
|
||||
sq := metadatas.Query(metadatas.Field("obj_id")).Startswith("key", CLOUD_TAG_PREFIX).Distinct().SubQuery()
|
||||
if *input.WithCloudMeta {
|
||||
q = q.Filter(sqlchemy.In(q.Field("id"), sq))
|
||||
@@ -153,7 +157,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if input.WithAnyMeta != nil {
|
||||
metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery()
|
||||
metadatas := metadataMan.Query().Equals("obj_type", manager.Keyword()).SubQuery()
|
||||
sq := metadatas.Query(metadatas.Field("obj_id")).Distinct().SubQuery()
|
||||
if *input.WithAnyMeta {
|
||||
q = q.Filter(sqlchemy.In(q.Field("id"), sq))
|
||||
|
||||
@@ -137,6 +137,10 @@ func (manager *SModelBaseManager) GetMutableInstance(ctx context.Context, userCr
|
||||
return manager.GetIModelManager()
|
||||
}
|
||||
|
||||
func (manager *SModelBaseManager) PrepareQueryContext(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) context.Context {
|
||||
return ctx
|
||||
}
|
||||
|
||||
func (manager *SModelBaseManager) SetAlias(alias string, aliasPlural string) {
|
||||
manager.alias = alias
|
||||
manager.aliasPlural = aliasPlural
|
||||
@@ -260,7 +264,7 @@ func (manager *SModelBaseManager) FilterByName(q *sqlchemy.SQuery, name string)
|
||||
return q
|
||||
}
|
||||
|
||||
func (manager *SModelBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SModelBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return q
|
||||
}
|
||||
|
||||
@@ -280,11 +284,11 @@ func (manager *SModelBaseManager) FetchById(idStr string) (IModel, error) {
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
|
||||
func (manager *SModelBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
func (manager *SModelBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
|
||||
func (manager *SModelBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
func (manager *SModelBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
|
||||
|
||||
@@ -28,11 +28,11 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/util/stringutils2"
|
||||
)
|
||||
|
||||
func isNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) (bool, error) {
|
||||
return isRawNameUnique(manager, ownerId, name, uniqValues, false)
|
||||
func isNameUnique(ctx context.Context, manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) (bool, error) {
|
||||
return isRawNameUnique(ctx, manager, ownerId, name, uniqValues, false)
|
||||
}
|
||||
|
||||
func isRawNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject, isRaw bool) (bool, error) {
|
||||
func isRawNameUnique(ctx context.Context, manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject, isRaw bool) (bool, error) {
|
||||
var q *sqlchemy.SQuery
|
||||
if isRaw {
|
||||
q = manager.TableSpec().Instance().Query()
|
||||
@@ -40,7 +40,7 @@ func isRawNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider,
|
||||
q = manager.Query()
|
||||
}
|
||||
q = manager.FilterByName(q, name)
|
||||
q = manager.FilterByOwner(q, manager, nil, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterByOwner(ctx, q, manager, nil, ownerId, manager.NamespaceScope())
|
||||
if !isRaw {
|
||||
q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope())
|
||||
if uniqValues != nil {
|
||||
@@ -54,12 +54,12 @@ func isRawNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider,
|
||||
return cnt == 0, nil
|
||||
}
|
||||
|
||||
func NewNameValidator(manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) error {
|
||||
func NewNameValidator(ctx context.Context, manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) error {
|
||||
err := manager.ValidateName(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
uniq, err := isNameUnique(manager, ownerId, name, uniqValues)
|
||||
uniq, err := isNameUnique(ctx, manager, ownerId, name, uniqValues)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -69,11 +69,11 @@ func NewNameValidator(manager IModelManager, ownerId mcclient.IIdentityProvider,
|
||||
return nil
|
||||
}
|
||||
|
||||
func isAlterNameUnique(model IModel, name string) (bool, error) {
|
||||
return isRawAlterNameUnique(model, name, false)
|
||||
func isAlterNameUnique(ctx context.Context, model IModel, name string) (bool, error) {
|
||||
return isRawAlterNameUnique(ctx, model, name, false)
|
||||
}
|
||||
|
||||
func isRawAlterNameUnique(model IModel, name string, isRaw bool) (bool, error) {
|
||||
func isRawAlterNameUnique(ctx context.Context, model IModel, name string, isRaw bool) (bool, error) {
|
||||
manager := model.GetModelManager()
|
||||
var q *sqlchemy.SQuery
|
||||
if isRaw {
|
||||
@@ -82,7 +82,7 @@ func isRawAlterNameUnique(model IModel, name string, isRaw bool) (bool, error) {
|
||||
q = manager.Query()
|
||||
}
|
||||
q = manager.FilterByName(q, name)
|
||||
q = manager.FilterByOwner(q, manager, nil, model.GetOwnerId(), manager.NamespaceScope())
|
||||
q = manager.FilterByOwner(ctx, q, manager, nil, model.GetOwnerId(), manager.NamespaceScope())
|
||||
q = manager.FilterByNotId(q, model.GetId())
|
||||
if !isRaw {
|
||||
q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope())
|
||||
@@ -97,12 +97,12 @@ func isRawAlterNameUnique(model IModel, name string, isRaw bool) (bool, error) {
|
||||
return cnt == 0, nil
|
||||
}
|
||||
|
||||
func alterNameValidator(model IModel, name string) error {
|
||||
func alterNameValidator(ctx context.Context, model IModel, name string) error {
|
||||
err := model.GetModelManager().ValidateName(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
uniq, err := isAlterNameUnique(model, name)
|
||||
uniq, err := isAlterNameUnique(ctx, model, name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -139,9 +139,9 @@ func GenerateName2(ctx context.Context, manager IModelManager, ownerId mcclient.
|
||||
var uniq bool
|
||||
var err error
|
||||
if model == nil {
|
||||
uniq, err = isRawNameUnique(manager, ownerId, name, nil, consts.IsHistoricalUniqueName())
|
||||
uniq, err = isRawNameUnique(ctx, manager, ownerId, name, nil, consts.IsHistoricalUniqueName())
|
||||
} else {
|
||||
uniq, err = isRawAlterNameUnique(model, name, consts.IsHistoricalUniqueName())
|
||||
uniq, err = isRawAlterNameUnique(ctx, model, name, consts.IsHistoricalUniqueName())
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
@@ -362,7 +362,7 @@ func (manager *SOpsLogManager) LogSyncUpdate(m IModel, uds sqlchemy.UpdateDiffs,
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SOpsLogManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (self *SOpsLogManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if ownerId != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeUser:
|
||||
|
||||
@@ -52,7 +52,7 @@ func (model *SProjectizedResourceBase) GetOwnerId() mcclient.IIdentityProvider {
|
||||
return &owner
|
||||
}
|
||||
|
||||
func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SProjectizedResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeProject:
|
||||
@@ -62,7 +62,7 @@ func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
case rbacscope.ScopeDomain:
|
||||
@@ -72,12 +72,12 @@ func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery
|
||||
if !result.ProjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ProjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters)
|
||||
}
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
case rbacscope.ScopeSystem:
|
||||
@@ -86,17 +86,17 @@ func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery
|
||||
if !result.DomainTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.DomainTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", policyTagFilters)
|
||||
}
|
||||
if !result.ProjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ProjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters)
|
||||
}
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,7 +162,7 @@ func (manager *SProjectizedResourceBaseManager) ListItemFilter(
|
||||
if !query.NoProjectTags.IsEmpty() {
|
||||
tagFilters.AddNoFilters(query.NoProjectTags)
|
||||
}
|
||||
q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", tagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", tagFilters)
|
||||
return q, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -236,8 +236,8 @@ func RegisterReferrer(man db.IModelManager) {
|
||||
referrersMen = append(referrersMen, man)
|
||||
}
|
||||
|
||||
func ValidateProxySettingResourceInput(userCred mcclient.TokenCredential, input proxyapi.ProxySettingResourceInput) (*SProxySetting, proxyapi.ProxySettingResourceInput, error) {
|
||||
m, err := ProxySettingManager.FetchByIdOrName(userCred, input.ProxySettingId)
|
||||
func ValidateProxySettingResourceInput(ctx context.Context, userCred mcclient.TokenCredential, input proxyapi.ProxySettingResourceInput) (*SProxySetting, proxyapi.ProxySettingResourceInput, error) {
|
||||
m, err := ProxySettingManager.FetchByIdOrName(ctx, userCred, input.ProxySettingId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, input, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", ProxySettingManager.Keyword(), input.ProxySettingId)
|
||||
|
||||
@@ -110,7 +110,7 @@ func (m *SScopedResourceBase) IsOwner(userCred mcclient.TokenCredential) bool {
|
||||
return userCred.HasSystemAdminPrivilege()
|
||||
}
|
||||
|
||||
func (m *SScopedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (m *SScopedResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner == nil {
|
||||
return q
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ func SharableManagerValidateCreateData(
|
||||
return input, nil
|
||||
}
|
||||
|
||||
func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func SharableManagerFilterByOwner(ctx context.Context, manager IStandaloneModelManager, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
resScope := manager.ResourceScope()
|
||||
if resScope == rbacscope.ScopeUser {
|
||||
@@ -254,7 +254,7 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
} else if resScope == rbacscope.ScopeProject && scope == rbacscope.ScopeProject {
|
||||
@@ -289,7 +289,7 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -317,12 +317,12 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S
|
||||
if !result.ProjectTags.IsEmpty() && resScope == rbacscope.ScopeProject {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ProjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters)
|
||||
}
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -336,7 +336,7 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S
|
||||
subq := manager.Query("id")
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.DomainTags)
|
||||
subq = ObjectIdQueryWithTagFilters(subq, "domain_id", "domain", policyTagFilters)
|
||||
subq = ObjectIdQueryWithTagFilters(ctx, subq, "domain_id", "domain", policyTagFilters)
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.In(q.Field("id"), subq.SubQuery()),
|
||||
sqlchemy.AND(
|
||||
@@ -348,12 +348,12 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S
|
||||
if !result.ProjectTags.IsEmpty() && resScope == rbacscope.ScopeProject {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ProjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters)
|
||||
}
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,8 +48,8 @@ func (manager *SSharableVirtualResourceBaseManager) GetISharableVirtualModelMana
|
||||
return manager.GetVirtualObject().(ISharableVirtualModelManager)
|
||||
}
|
||||
|
||||
func (manager *SSharableVirtualResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return SharableManagerFilterByOwner(manager.GetISharableVirtualModelManager(), q, userCred, owner, scope)
|
||||
func (manager *SSharableVirtualResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return SharableManagerFilterByOwner(ctx, manager.GetISharableVirtualModelManager(), q, userCred, owner, scope)
|
||||
}
|
||||
|
||||
func (model *SSharableVirtualResourceBase) IsSharable(reqUsrId mcclient.IIdentityProvider) bool {
|
||||
|
||||
@@ -72,12 +72,12 @@ func (manager *SStandaloneResourceBaseManager) ValidateName(name string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SStandaloneResourceBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByName(manager.GetIStandaloneModelManager(), userCred, idStr)
|
||||
func (manager *SStandaloneResourceBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByName(ctx, manager.GetIStandaloneModelManager(), userCred, idStr)
|
||||
}
|
||||
|
||||
func (manager *SStandaloneResourceBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByIdOrName(manager.GetIStandaloneModelManager(), userCred, idStr)
|
||||
func (manager *SStandaloneResourceBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByIdOrName(ctx, manager.GetIStandaloneModelManager(), userCred, idStr)
|
||||
}
|
||||
|
||||
func (manager *SStandaloneResourceBaseManager) ListItemFilter(
|
||||
@@ -203,7 +203,7 @@ func (model *SStandaloneResourceBase) ValidateUpdateData(ctx context.Context, us
|
||||
if strings.ContainsAny(input.Name, "\n\r\t") {
|
||||
return input, errors.Wrap(httperrors.ErrInputParameter, "name should not contains any \\n\\r\\t")
|
||||
}
|
||||
err = alterNameValidator(model.GetIStandaloneModel(), input.Name)
|
||||
err = alterNameValidator(ctx, model.GetIStandaloneModel(), input.Name)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "alterNameValidator")
|
||||
}
|
||||
|
||||
@@ -100,13 +100,13 @@ func (manager *SStandaloneAnonResourceBaseManager) FilterByNotId(q *sqlchemy.SQu
|
||||
return q.NotEquals("id", idStr)
|
||||
}
|
||||
|
||||
func (manager *SStandaloneAnonResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SStandaloneAnonResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if userCred != nil {
|
||||
result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), man.KeywordPlural(), policy.PolicyActionList)
|
||||
if !result.ObjectTags.IsEmpty() {
|
||||
policyTagFilters := tagutils.STagFilters{}
|
||||
policyTagFilters.AddFilters(result.ObjectTags)
|
||||
q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters)
|
||||
q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters)
|
||||
}
|
||||
}
|
||||
return q
|
||||
@@ -153,7 +153,7 @@ func (manager *SStandaloneAnonResourceBaseManager) ListItemFilter(
|
||||
q = q.In("id", input.Ids)
|
||||
}
|
||||
|
||||
q = manager.SMetadataResourceBaseModelManager.ListItemFilter(manager.GetIModelManager(), q, input.MetadataResourceListInput)
|
||||
q = manager.SMetadataResourceBaseModelManager.ListItemFilter(ctx, manager.GetIModelManager(), q, input.MetadataResourceListInput)
|
||||
|
||||
return q, nil
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ func (manager *SStatusDomainLevelUserResourceBaseManager) ValidateCreateData(ctx
|
||||
return input, nil
|
||||
}
|
||||
|
||||
func (manager *SStatusDomainLevelUserResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SStatusDomainLevelUserResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeProject, rbacscope.ScopeUser:
|
||||
|
||||
@@ -149,7 +149,7 @@ func (self *STask) GetOwnerId() mcclient.IIdentityProvider {
|
||||
return &owner
|
||||
}
|
||||
|
||||
func (manager *STaskManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *STaskManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeProject:
|
||||
|
||||
@@ -125,7 +125,7 @@ func (manager *SUserResourceBaseManager) FetchCustomizeColumns(
|
||||
return rows
|
||||
}
|
||||
|
||||
func (manager *SUserResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SUserResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
if scope == rbacscope.ScopeUser {
|
||||
if len(owner.GetUserId()) > 0 {
|
||||
@@ -149,12 +149,12 @@ func (manager *SUserResourceBaseManager) GetIUserModelManager() IUserModelManage
|
||||
return manager.GetVirtualObject().(IUserModelManager)
|
||||
}
|
||||
|
||||
func (manager *SUserResourceBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByName(manager, userCred, idStr)
|
||||
func (manager *SUserResourceBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByName(ctx, manager, userCred, idStr)
|
||||
}
|
||||
|
||||
func (manager *SUserResourceBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByIdOrName(manager, userCred, idStr)
|
||||
func (manager *SUserResourceBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByIdOrName(ctx, manager, userCred, idStr)
|
||||
}
|
||||
|
||||
func (manager *SUserResourceBaseManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input apis.UserResourceCreateInput) (apis.UserResourceCreateInput, error) {
|
||||
|
||||
@@ -59,12 +59,12 @@ func (manager *SVirtualJointResourceBaseManager) AllowAttach(ctx context.Context
|
||||
return false
|
||||
}
|
||||
|
||||
func (manager *SVirtualJointResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SVirtualJointResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
masterQ := manager.GetMasterManager().Query("id")
|
||||
masterQ = manager.GetMasterManager().FilterByOwner(masterQ, manager.GetMasterManager(), userCred, owner, scope)
|
||||
masterQ = manager.GetMasterManager().FilterByOwner(ctx, masterQ, manager.GetMasterManager(), userCred, owner, scope)
|
||||
slaveQ := manager.GetSlaveManager().Query("id")
|
||||
slaveQ = manager.GetSlaveManager().FilterByOwner(slaveQ, manager.GetSlaveManager(), userCred, owner, scope)
|
||||
slaveQ = manager.GetSlaveManager().FilterByOwner(ctx, slaveQ, manager.GetSlaveManager(), userCred, owner, scope)
|
||||
iManager := manager.GetIJointModelManager()
|
||||
q = q.In(iManager.GetMasterFieldName(), masterQ.SubQuery())
|
||||
q = q.In(iManager.GetSlaveFieldName(), slaveQ.SubQuery())
|
||||
|
||||
@@ -213,12 +213,12 @@ func (manager *SVirtualResourceBaseManager) FilterBySystemAttributes(q *sqlchemy
|
||||
return q
|
||||
}
|
||||
|
||||
func (manager *SVirtualResourceBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByName(manager, userCred, idStr)
|
||||
func (manager *SVirtualResourceBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByName(ctx, manager, userCred, idStr)
|
||||
}
|
||||
|
||||
func (manager *SVirtualResourceBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByIdOrName(manager, userCred, idStr)
|
||||
func (manager *SVirtualResourceBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) {
|
||||
return FetchByIdOrName(ctx, manager, userCred, idStr)
|
||||
}
|
||||
|
||||
func (manager *SVirtualResourceBaseManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input apis.VirtualResourceCreateInput) (apis.VirtualResourceCreateInput, error) {
|
||||
@@ -380,7 +380,7 @@ func (model *SVirtualResourceBase) PerformChangeOwner(ctx context.Context, userC
|
||||
}
|
||||
|
||||
q := manager.Query().Equals("name", model.GetName())
|
||||
q = manager.FilterByOwner(q, manager, userCred, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, manager.NamespaceScope())
|
||||
q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope())
|
||||
q = q.NotEquals("id", model.GetId())
|
||||
cnt, err := q.CountWithError()
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/sqlchemy"
|
||||
|
||||
@@ -27,7 +29,7 @@ type ModelFilterOptions struct {
|
||||
OwnerId mcclient.IIdentityProvider
|
||||
}
|
||||
|
||||
func ApplyModelFilters(q *sqlchemy.SQuery, data *jsonutils.JSONDict, opts []*ModelFilterOptions) (*sqlchemy.SQuery, error) {
|
||||
func ApplyModelFilters(ctx context.Context, q *sqlchemy.SQuery, data *jsonutils.JSONDict, opts []*ModelFilterOptions) (*sqlchemy.SQuery, error) {
|
||||
var err error
|
||||
for _, opt := range opts {
|
||||
v := NewModelIdOrNameValidator(
|
||||
@@ -36,7 +38,7 @@ func ApplyModelFilters(q *sqlchemy.SQuery, data *jsonutils.JSONDict, opts []*Mod
|
||||
opt.OwnerId,
|
||||
)
|
||||
v.Optional(true)
|
||||
q, err = v.QueryFilter(q, data)
|
||||
q, err = v.QueryFilter(ctx, q, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ package validators
|
||||
// uri
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"math"
|
||||
"net"
|
||||
@@ -42,10 +43,10 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/util/choices"
|
||||
)
|
||||
|
||||
type ValidatorFunc func(*jsonutils.JSONDict) error
|
||||
type ValidatorFunc func(context.Context, *jsonutils.JSONDict) error
|
||||
|
||||
type IValidatorBase interface {
|
||||
Validate(data *jsonutils.JSONDict) error
|
||||
Validate(ctx context.Context, data *jsonutils.JSONDict) error
|
||||
}
|
||||
|
||||
type IValidator interface {
|
||||
@@ -144,7 +145,7 @@ func NewIPv4PrefixValidator(key string) *ValidatorIPv4Prefix {
|
||||
return v
|
||||
}
|
||||
|
||||
func (v *ValidatorIPv4Prefix) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorIPv4Prefix) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -197,7 +198,7 @@ func (v *ValidatorIntChoices) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorIntChoices) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorIntChoices) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -241,7 +242,7 @@ func (v *ValidatorStringChoices) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorStringChoices) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorStringChoices) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -325,7 +326,7 @@ func (v *ValidatorStringMultiChoices) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorStringMultiChoices) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorStringMultiChoices) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -355,7 +356,7 @@ func (v *ValidatorBool) getValue() interface{} {
|
||||
func (v *ValidatorBool) Default(i bool) IValidator {
|
||||
return v.Validator.Default(i)
|
||||
}
|
||||
func (v *ValidatorBool) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorBool) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -393,7 +394,7 @@ func (v *ValidatorRange) Default(i int64) IValidator {
|
||||
}
|
||||
panic("invalid default for " + v.Key)
|
||||
}
|
||||
func (v *ValidatorRange) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorRange) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -519,7 +520,7 @@ func (v *ValidatorModelIdOrName) AllowEmpty(b bool) *ValidatorModelIdOrName {
|
||||
return v
|
||||
}
|
||||
|
||||
func (v *ValidatorModelIdOrName) validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorModelIdOrName) validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if !data.Contains(v.Key) && data.Contains(v.modelIdKey) {
|
||||
// a hack when validator is used solely for fetching model
|
||||
// object. This can happen when input json data was validated
|
||||
@@ -550,7 +551,7 @@ func (v *ValidatorModelIdOrName) validate(data *jsonutils.JSONDict) error {
|
||||
return newModelManagerError(v.ModelKeyword)
|
||||
}
|
||||
v.ModelManager = modelManager
|
||||
model, err := modelManager.FetchByIdOrName(v, modelIdOrName)
|
||||
model, err := modelManager.FetchByIdOrName(ctx, v, modelIdOrName)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return newModelNotFoundError(v.ModelKeyword, modelIdOrName, err)
|
||||
@@ -567,8 +568,8 @@ func (v *ValidatorModelIdOrName) validate(data *jsonutils.JSONDict) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (v *ValidatorModelIdOrName) Validate(data *jsonutils.JSONDict) error {
|
||||
err := v.validate(data)
|
||||
func (v *ValidatorModelIdOrName) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
err := v.validate(ctx, data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -587,8 +588,8 @@ func (v *ValidatorModelIdOrName) Validate(data *jsonutils.JSONDict) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (v *ValidatorModelIdOrName) QueryFilter(q *sqlchemy.SQuery, data *jsonutils.JSONDict) (*sqlchemy.SQuery, error) {
|
||||
err := v.validate(data)
|
||||
func (v *ValidatorModelIdOrName) QueryFilter(ctx context.Context, q *sqlchemy.SQuery, data *jsonutils.JSONDict) (*sqlchemy.SQuery, error) {
|
||||
err := v.validate(ctx, data)
|
||||
if err != nil {
|
||||
if IsModelNotFoundError(err) {
|
||||
// hack
|
||||
@@ -620,7 +621,7 @@ func (v *ValidatorRegexp) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorRegexp) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorRegexp) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -697,8 +698,8 @@ func (v *ValidatorHostPort) OptionalPort(optionalPort bool) *ValidatorHostPort {
|
||||
return v
|
||||
}
|
||||
|
||||
func (v *ValidatorHostPort) Validate(data *jsonutils.JSONDict) error {
|
||||
err := v.ValidatorRegexp.Validate(data)
|
||||
func (v *ValidatorHostPort) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
err := v.ValidatorRegexp.Validate(ctx, data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -753,7 +754,7 @@ func (v *ValidatorStruct) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorStruct) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorStruct) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -762,7 +763,7 @@ func (v *ValidatorStruct) Validate(data *jsonutils.JSONDict) error {
|
||||
return newGeneralError(v.Key, err)
|
||||
}
|
||||
if valueValidator, ok := v.Value.(IValidatorBase); ok {
|
||||
err = valueValidator.Validate(data)
|
||||
err = valueValidator.Validate(ctx, data)
|
||||
if err != nil {
|
||||
return newInvalidStructError(v.Key, err)
|
||||
}
|
||||
@@ -803,7 +804,7 @@ func (v *ValidatorIPv4Addr) setDefault(data *jsonutils.JSONDict) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (v *ValidatorIPv4Addr) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorIPv4Addr) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -827,12 +828,12 @@ func NewIPv4AddrValidator(key string) *ValidatorIPv4Addr {
|
||||
return v
|
||||
}
|
||||
|
||||
var ValidateModel = func(userCred mcclient.TokenCredential, manager db.IStandaloneModelManager, id *string) (db.IModel, error) {
|
||||
var ValidateModel = func(ctx context.Context, userCred mcclient.TokenCredential, manager db.IStandaloneModelManager, id *string) (db.IModel, error) {
|
||||
if len(*id) == 0 {
|
||||
return nil, httperrors.NewMissingParameterError(manager.Keyword() + "_id")
|
||||
}
|
||||
|
||||
model, err := manager.FetchByIdOrName(userCred, *id)
|
||||
model, err := manager.FetchByIdOrName(ctx, userCred, *id)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), *id)
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
@@ -152,7 +153,7 @@ func (v *ValidatorByActor) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorByActor) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorByActor) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ func (v *ValidatorPEM) setDefault(data *jsonutils.JSONDict) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (v *ValidatorPEM) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorPEM) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -170,7 +170,7 @@ func (v *ValidatorCertificate) setCertificates(certs []*x509.Certificate, data *
|
||||
v.Certificates = certs
|
||||
}
|
||||
|
||||
func (v *ValidatorCertificate) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorCertificate) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -341,7 +341,7 @@ func (v *ValidatorPrivateKey) setPrivateKey(pkey crypto.PrivateKey, data *jsonut
|
||||
v.PrivateKey = pkey
|
||||
}
|
||||
|
||||
func (v *ValidatorPrivateKey) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorPrivateKey) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
@@ -392,13 +392,13 @@ func NewCertKeyValidator(cert, key string) *ValidatorCertKey {
|
||||
}
|
||||
}
|
||||
|
||||
func (v *ValidatorCertKey) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorCertKey) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
keyV := map[string]IValidator{
|
||||
"certificate": v.ValidatorCertificate,
|
||||
"private_key": v.ValidatorPrivateKey,
|
||||
}
|
||||
for _, v := range keyV {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
@@ -113,7 +114,7 @@ Oycn3Dy2jpdE7SpoBCt3HsIhra8a6h7BcCQ87UwObqTsdLe+7/oD
|
||||
ValidatorPrivateKey: tt.fields.ValidatorPrivateKey,
|
||||
certPubKeyAlgo: tt.fields.certPubKeyAlgo,
|
||||
}
|
||||
if err := v.Validate(tt.args.data); (err != nil) != tt.wantErr {
|
||||
if err := v.Validate(context.Background(), tt.args.data); (err != nil) != tt.wantErr {
|
||||
t.Errorf("ValidateCertKey.Validator() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"golang.org/x/crypto/ssh"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
@@ -55,7 +57,7 @@ func (v *ValidatorSSHKey) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorSSHKey) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorSSHKey) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
)
|
||||
|
||||
@@ -61,7 +63,7 @@ func (v *ValidatorStringLen) getValue() interface{} {
|
||||
return v.Value
|
||||
}
|
||||
|
||||
func (v *ValidatorStringLen) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *ValidatorStringLen) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
if err, isSet := v.Validator.validateEx(data); err != nil || !isSet {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ package validators
|
||||
// - invalid default for string choice, range
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"reflect"
|
||||
"testing"
|
||||
@@ -79,7 +80,7 @@ func testS(t *testing.T, v IValidator, c *C) {
|
||||
|
||||
j, _ := jsonutils.ParseString(c.In)
|
||||
jd := j.(*jsonutils.JSONDict)
|
||||
err := v.Validate(jd)
|
||||
err := v.Validate(context.Background(), jd)
|
||||
if err != nil {
|
||||
verr, ok := err.(*ValidateError)
|
||||
if ok {
|
||||
@@ -777,7 +778,7 @@ type TestStruct struct {
|
||||
|
||||
type TestVStruct TestStruct
|
||||
|
||||
func (v *TestVStruct) Validate(data *jsonutils.JSONDict) error {
|
||||
func (v *TestVStruct) Validate(ctx context.Context, data *jsonutils.JSONDict) error {
|
||||
switch v.Name {
|
||||
case "bad":
|
||||
return newInvalidValueError("Name", v.Name)
|
||||
|
||||
@@ -196,8 +196,8 @@ func (self *SCloudevent) GetOwnerId() mcclient.IIdentityProvider {
|
||||
return &owner
|
||||
}
|
||||
|
||||
func (manager *SCloudeventManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return manager.SDomainizedResourceBaseManager.FilterByOwner(q, man, userCred, owner, scope)
|
||||
func (manager *SCloudeventManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return manager.SDomainizedResourceBaseManager.FilterByOwner(ctx, q, man, userCred, owner, scope)
|
||||
}
|
||||
|
||||
func (manager *SCloudeventManager) FetchOwnerId(ctx context.Context, data jsonutils.JSONObject) (mcclient.IIdentityProvider, error) {
|
||||
|
||||
@@ -41,7 +41,7 @@ type SCloudaccountResourceBase struct {
|
||||
|
||||
func (manager *SCloudaccountResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.CloudaccountResourceListInput) (*sqlchemy.SQuery, error) {
|
||||
if len(query.Cloudaccount) > 0 {
|
||||
account, err := CloudaccountManager.FetchByIdOrName(nil, query.Cloudaccount)
|
||||
account, err := CloudaccountManager.FetchByIdOrName(ctx, nil, query.Cloudaccount)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudaccount", query.Cloudaccount)
|
||||
|
||||
@@ -120,7 +120,7 @@ func (manager *SCloudgroupJointsManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.Cloudgroup) > 0 {
|
||||
group, err := CloudgroupManager.FetchByIdOrName(nil, query.Cloudgroup)
|
||||
group, err := CloudgroupManager.FetchByIdOrName(ctx, nil, query.Cloudgroup)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudgroup", query.Cloudgroup)
|
||||
|
||||
@@ -48,7 +48,7 @@ func (self *SCloudgroupResourceBase) GetCloudgroup() (*SCloudgroup, error) {
|
||||
|
||||
func (manager *SCloudgroupResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, groupCred mcclient.TokenCredential, query api.CloudgroupResourceListInput) (*sqlchemy.SQuery, error) {
|
||||
if len(query.CloudgroupId) > 0 {
|
||||
group, err := CloudgroupManager.FetchByIdOrName(nil, query.CloudgroupId)
|
||||
group, err := CloudgroupManager.FetchByIdOrName(ctx, nil, query.CloudgroupId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudgroup", query.CloudgroupId)
|
||||
|
||||
@@ -71,7 +71,7 @@ func (manager *SCloudpolicycacheManager) ListItemFilter(ctx context.Context, q *
|
||||
return nil, err
|
||||
}
|
||||
if len(query.CloudpolicyId) > 0 {
|
||||
policy, err := CloudpolicyManager.FetchByIdOrName(nil, query.CloudpolicyId)
|
||||
policy, err := CloudpolicyManager.FetchByIdOrName(ctx, nil, query.CloudpolicyId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudpolicy", query.CloudpolicyId)
|
||||
@@ -81,7 +81,7 @@ func (manager *SCloudpolicycacheManager) ListItemFilter(ctx context.Context, q *
|
||||
q = q.Equals("cloudpolicy_id", policy.GetId())
|
||||
}
|
||||
if len(query.CloudaccountId) > 0 {
|
||||
account, err := CloudaccountManager.FetchByIdOrName(nil, query.CloudaccountId)
|
||||
account, err := CloudaccountManager.FetchByIdOrName(ctx, nil, query.CloudaccountId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudaccount", query.CloudaccountId)
|
||||
|
||||
@@ -40,7 +40,7 @@ type SCloudpolicyResourceBase struct {
|
||||
|
||||
func (manager *SCloudpolicyResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, policyCred mcclient.TokenCredential, query api.CloudpolicyResourceListInput) (*sqlchemy.SQuery, error) {
|
||||
if len(query.Cloudpolicy) > 0 {
|
||||
policy, err := CloudpolicyManager.FetchByIdOrName(nil, query.Cloudpolicy)
|
||||
policy, err := CloudpolicyManager.FetchByIdOrName(ctx, nil, query.Cloudpolicy)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudpolicy", query.Cloudpolicy)
|
||||
|
||||
@@ -40,7 +40,7 @@ type SCloudproviderResourceBase struct {
|
||||
|
||||
func (manager *SCloudproviderResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.CloudproviderResourceListInput) (*sqlchemy.SQuery, error) {
|
||||
if len(query.Cloudprovider) > 0 {
|
||||
provider, err := CloudproviderManager.FetchByIdOrName(nil, query.Cloudprovider)
|
||||
provider, err := CloudproviderManager.FetchByIdOrName(ctx, nil, query.Cloudprovider)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudprovider", query.Cloudprovider)
|
||||
|
||||
@@ -48,7 +48,7 @@ func (self *SClouduserJointsBase) GetClouduser() (*SClouduser, error) {
|
||||
|
||||
func (manager *SClouduserResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.ClouduserResourceListInput) (*sqlchemy.SQuery, error) {
|
||||
if len(query.Clouduser) > 0 {
|
||||
user, err := ClouduserManager.FetchByIdOrName(nil, query.Clouduser)
|
||||
user, err := ClouduserManager.FetchByIdOrName(ctx, nil, query.Clouduser)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("clouduser", query.Clouduser)
|
||||
|
||||
@@ -92,7 +92,7 @@ func (manager *SSAMLProviderManager) ValidateCreateData(ctx context.Context, use
|
||||
if len(input.CloudaccountId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("cloudaccount_id")
|
||||
}
|
||||
_, err := validators.ValidateModel(userCred, CloudaccountManager, &input.CloudaccountId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, CloudaccountManager, &input.CloudaccountId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
|
||||
@@ -137,12 +137,12 @@ func (manager *SSamluserManager) ValidateCreateData(ctx context.Context, userCre
|
||||
input.Name = userCred.GetUserName()
|
||||
}
|
||||
}
|
||||
_group, err := validators.ValidateModel(userCred, CloudgroupManager, &input.CloudgroupId)
|
||||
_group, err := validators.ValidateModel(ctx, userCred, CloudgroupManager, &input.CloudgroupId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
group := _group.(*SCloudgroup)
|
||||
_account, err := validators.ValidateModel(userCred, CloudaccountManager, &input.CloudaccountId)
|
||||
_account, err := validators.ValidateModel(ctx, userCred, CloudaccountManager, &input.CloudaccountId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ func (man *SIfaceManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery
|
||||
return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter")
|
||||
}
|
||||
data := query.(*jsonutils.JSONDict)
|
||||
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
|
||||
q, err = validators.ApplyModelFilters(ctx, q, data, []*validators.ModelFilterOptions{
|
||||
{Key: "router", ModelKeyword: "router", OwnerId: userCred},
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -86,7 +86,7 @@ func (man *SRouterManager) ValidateCreateData(ctx context.Context, userCred mccl
|
||||
validators.NewBoolValidator("realize_rules").Default(true),
|
||||
}
|
||||
for _, v := range vs {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -133,7 +133,7 @@ func (router *SRouter) ValidateUpdateData(ctx context.Context, userCred mcclient
|
||||
}
|
||||
for _, v := range vs {
|
||||
v.Optional(true)
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return input, err
|
||||
}
|
||||
}
|
||||
@@ -183,7 +183,7 @@ func (router *SRouter) PerformJoinMeshNetwork(ctx context.Context, userCred mccl
|
||||
return nil, httperrors.NewBadRequestError("expecting json dict")
|
||||
}
|
||||
for _, v := range vs {
|
||||
if err := v.Validate(jd); err != nil {
|
||||
if err := v.Validate(ctx, jd); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ func (router *SRouter) PerformLeaveMeshNetwork(ctx context.Context, userCred mcc
|
||||
return nil, httperrors.NewBadRequestError("expecting json dict")
|
||||
}
|
||||
mnV := validators.NewModelIdOrNameValidator("mesh_network", "meshnetwork", userCred)
|
||||
if err := mnV.Validate(jd); err != nil {
|
||||
if err := mnV.Validate(ctx, jd); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mn := mnV.Model.(*SMeshNetwork)
|
||||
@@ -222,7 +222,7 @@ func (router *SRouter) PerformRegisterIfname(ctx context.Context, userCred mccli
|
||||
return nil, httperrors.NewBadRequestError("expecting json dict")
|
||||
}
|
||||
ifnameV := validators.NewRegexpValidator("ifname", regexpIfname)
|
||||
if err := ifnameV.Validate(jd); err != nil {
|
||||
if err := ifnameV.Validate(ctx, jd); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, err := IfaceManager.addIface(ctx, userCred, router, ifnameV.Value)
|
||||
|
||||
@@ -82,7 +82,7 @@ func (man *SRouteManager) ValidateCreateData(ctx context.Context, userCred mccli
|
||||
ifaceV,
|
||||
}
|
||||
for _, v := range vs {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -103,7 +103,7 @@ func (man *SRouteManager) ValidateCreateData(ctx context.Context, userCred mccli
|
||||
data.Set("router_id", jsonutils.NewString(routerId))
|
||||
data.Set("ifname", jsonutils.NewString(iface.Ifname))
|
||||
routerV := validators.NewModelIdOrNameValidator("router", "router", ownerId)
|
||||
if err := routerV.Validate(data); err != nil {
|
||||
if err := routerV.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !data.Contains("name") {
|
||||
@@ -127,7 +127,7 @@ func (man *SRouteManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery
|
||||
return nil, err
|
||||
}
|
||||
data := query.(*jsonutils.JSONDict)
|
||||
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
|
||||
q, err = validators.ApplyModelFilters(ctx, q, data, []*validators.ModelFilterOptions{
|
||||
{Key: "router", ModelKeyword: "router", OwnerId: userCred},
|
||||
{Key: "iface", ModelKeyword: "iface", OwnerId: userCred},
|
||||
})
|
||||
@@ -150,7 +150,7 @@ func (route *SRoute) ValidateUpdateData(ctx context.Context, userCred mcclient.T
|
||||
}
|
||||
for _, v := range vs {
|
||||
v.Optional(true)
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return input, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ func (man *SRuleManager) validateData(ctx context.Context, userCred mcclient.Tok
|
||||
if isUpdate {
|
||||
v.Optional(true)
|
||||
}
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -177,7 +177,7 @@ func (man *SRuleManager) validateData(ctx context.Context, userCred mcclient.Tok
|
||||
if !isUpdate {
|
||||
prioV.Default(prioDefault)
|
||||
}
|
||||
if err := prioV.Validate(data); err != nil {
|
||||
if err := prioV.Validate(ctx, data); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -225,7 +225,7 @@ func (man *SRuleManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery,
|
||||
return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter")
|
||||
}
|
||||
data := query.(*jsonutils.JSONDict)
|
||||
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
|
||||
q, err = validators.ApplyModelFilters(ctx, q, data, []*validators.ModelFilterOptions{
|
||||
{Key: "router", ModelKeyword: "router", OwnerId: userCred},
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -215,7 +215,7 @@ func (man *SForwardManager) PerformCreateFromServer(ctx context.Context, userCre
|
||||
|
||||
validators.NewNonNegativeValidator("last_seen_timeout").Optional(true),
|
||||
} {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -285,7 +285,7 @@ func (man *SForwardManager) ValidateCreateData(ctx context.Context, userCred mcc
|
||||
|
||||
validators.NewNonNegativeValidator("last_seen_timeout").Optional(true),
|
||||
} {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -322,7 +322,7 @@ func (fwd *SForward) ValidateUpdateData(ctx context.Context, userCred mcclient.T
|
||||
validators.NewNonNegativeValidator("last_seen_timeout"),
|
||||
} {
|
||||
v.Optional(true)
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func (man *SProxyAgentManager) ValidateCreateData(ctx context.Context, userCred
|
||||
validators.NewIPv4AddrValidator("advertise_addr").Optional(true),
|
||||
}
|
||||
for _, v := range vs {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -72,7 +72,7 @@ func (proxyagent *SProxyAgent) ValidateUpdateData(ctx context.Context, userCred
|
||||
}
|
||||
for _, v := range vs {
|
||||
v.Optional(true)
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ func (man *SProxyEndpointManager) PerformCreateFromServer(ctx context.Context, u
|
||||
return nil, errors.Wrapf(err, "db.GenerateName")
|
||||
}
|
||||
}
|
||||
if err := db.NewNameValidator(man, userCred, name, nil); err != nil {
|
||||
if err := db.NewNameValidator(ctx, man, userCred, name, nil); err != nil {
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ func (man *SProxyEndpointManager) ValidateCreateData(
|
||||
validators.NewIPv4AddrValidator("intranet_ip_addr"),
|
||||
}
|
||||
for _, v := range vs {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -229,7 +229,7 @@ func (proxyendpoint *SProxyEndpoint) ValidateUpdateData(ctx context.Context, use
|
||||
}
|
||||
for _, v := range vs {
|
||||
v.Optional(true)
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return input, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ func (man *SProxyMatchManager) ValidateCreateData(ctx context.Context, userCred
|
||||
matchScopeV,
|
||||
endpointV,
|
||||
} {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ func (pm *SProxyMatch) ValidateUpdateData(ctx context.Context, userCred mcclient
|
||||
endpointV,
|
||||
} {
|
||||
v.Optional(true)
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -126,7 +126,7 @@ func (man *SProxyMatchManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(input.ProxyEndpointId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, ProxyEndpointManager, &input.ProxyEndpointId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, ProxyEndpointManager, &input.ProxyEndpointId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ func (self *SAwsGuestDriver) ValidateCreateData(ctx context.Context, userCred mc
|
||||
if len(input.Eip) > 0 || input.EipBw > 0 {
|
||||
// 未明确指定network时,由调度器进行调度,跳过support_eip检查
|
||||
if len(input.Networks) > 0 && len(input.Networks[0].Network) > 0 {
|
||||
inetwork, err := db.FetchByIdOrName(models.NetworkManager, userCred, input.Networks[0].Network)
|
||||
inetwork, err := db.FetchByIdOrName(ctx, models.NetworkManager, userCred, input.Networks[0].Network)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "SAwsGuestDriver.ValidateCreateData.Networks.FetchByIdOrName")
|
||||
}
|
||||
|
||||
@@ -205,9 +205,9 @@ func (self *SBaremetalGuestDriver) Attach2RandomNetwork(guest *models.SGuest, ct
|
||||
}
|
||||
var net *models.SNetwork
|
||||
if netConfig.Private {
|
||||
net, _ = wire.GetCandidatePrivateNetwork(userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
net, _ = wire.GetCandidatePrivateNetwork(ctx, userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
} else {
|
||||
net, _ = wire.GetCandidateAutoAllocNetwork(userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
net, _ = wire.GetCandidateAutoAllocNetwork(ctx, userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
}
|
||||
if net != nil {
|
||||
netsAvaiable = append(netsAvaiable, *net)
|
||||
|
||||
@@ -764,7 +764,7 @@ func (self *SKVMGuestDriver) IsSupportLiveMigrate() bool {
|
||||
}
|
||||
|
||||
func checkAssignHost(ctx context.Context, userCred mcclient.TokenCredential, preferHost string) error {
|
||||
iHost, _ := models.HostManager.FetchByIdOrName(userCred, preferHost)
|
||||
iHost, _ := models.HostManager.FetchByIdOrName(ctx, userCred, preferHost)
|
||||
if iHost == nil {
|
||||
return httperrors.NewBadRequestError("Host %s not found", preferHost)
|
||||
}
|
||||
@@ -993,7 +993,7 @@ func (self *SKVMGuestDriver) ValidateCreateData(ctx context.Context, userCred mc
|
||||
if input.Secgroups[i] == api.SECGROUP_DEFAULT_ID {
|
||||
continue
|
||||
}
|
||||
secObj, err := validators.ValidateModel(userCred, models.SecurityGroupManager, &input.Secgroups[i])
|
||||
secObj, err := validators.ValidateModel(ctx, userCred, models.SecurityGroupManager, &input.Secgroups[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -320,7 +320,7 @@ func (drv *SManagedVirtualizedGuestDriver) ValidateCreateData(ctx context.Contex
|
||||
}
|
||||
var vpc *models.SVpc = nil
|
||||
for _, network := range input.Networks {
|
||||
netObj, err := validators.ValidateModel(userCred, models.NetworkManager, &network.Network)
|
||||
netObj, err := validators.ValidateModel(ctx, userCred, models.NetworkManager, &network.Network)
|
||||
if err == nil {
|
||||
net := netObj.(*models.SNetwork)
|
||||
vpc, err = net.GetVpc()
|
||||
@@ -336,7 +336,7 @@ func (drv *SManagedVirtualizedGuestDriver) ValidateCreateData(ctx context.Contex
|
||||
if gotypes.IsNil(vpc) {
|
||||
return nil, httperrors.NewMissingParameterError("nets")
|
||||
}
|
||||
secObj, err := validators.ValidateModel(userCred, models.SecurityGroupManager, &input.Secgroups[i])
|
||||
secObj, err := validators.ValidateModel(ctx, userCred, models.SecurityGroupManager, &input.Secgroups[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
compute_api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -37,7 +39,7 @@ type OpenForwardResponse struct {
|
||||
Port int `json:"port"`
|
||||
}
|
||||
|
||||
func NewOpenForwardRequestFromJSON(data jsonutils.JSONObject) (*OpenForwardRequest, error) {
|
||||
func NewOpenForwardRequestFromJSON(ctx context.Context, data jsonutils.JSONObject) (*OpenForwardRequest, error) {
|
||||
dict, ok := data.(*jsonutils.JSONDict)
|
||||
if !ok {
|
||||
return nil, httperrors.ErrInputParameter
|
||||
@@ -52,7 +54,7 @@ func NewOpenForwardRequestFromJSON(data jsonutils.JSONObject) (*OpenForwardReque
|
||||
portV,
|
||||
addrV.Optional(true),
|
||||
} {
|
||||
if err := v.Validate(dict); err != nil {
|
||||
if err := v.Validate(ctx, dict); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -84,7 +86,7 @@ type CloseForwardResponse struct {
|
||||
ProxyPort int `json:"port"`
|
||||
}
|
||||
|
||||
func NewCloseForwardRequestFromJSON(data jsonutils.JSONObject) (*CloseForwardRequest, error) {
|
||||
func NewCloseForwardRequestFromJSON(ctx context.Context, data jsonutils.JSONObject) (*CloseForwardRequest, error) {
|
||||
dict, ok := data.(*jsonutils.JSONDict)
|
||||
if !ok {
|
||||
return nil, httperrors.ErrInputParameter
|
||||
@@ -99,7 +101,7 @@ func NewCloseForwardRequestFromJSON(data jsonutils.JSONObject) (*CloseForwardReq
|
||||
proxyAddrV,
|
||||
proxyPortV,
|
||||
} {
|
||||
if err := v.Validate(dict); err != nil {
|
||||
if err := v.Validate(ctx, dict); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -126,7 +128,7 @@ type ListForwardResponse struct {
|
||||
Forwards []OpenForwardResponse `json:"forwards"`
|
||||
}
|
||||
|
||||
func NewListForwardRequestFromJSON(data jsonutils.JSONObject) (*ListForwardRequest, error) {
|
||||
func NewListForwardRequestFromJSON(ctx context.Context, data jsonutils.JSONObject) (*ListForwardRequest, error) {
|
||||
dict, ok := data.(*jsonutils.JSONDict)
|
||||
if !ok {
|
||||
return nil, httperrors.ErrInputParameter
|
||||
@@ -141,7 +143,7 @@ func NewListForwardRequestFromJSON(data jsonutils.JSONObject) (*ListForwardReque
|
||||
portV.Optional(true),
|
||||
addrV.Optional(true),
|
||||
} {
|
||||
if err := v.Validate(dict); err != nil {
|
||||
if err := v.Validate(ctx, dict); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,9 +147,9 @@ func (self *SVirtualizedGuestDriver) Attach2RandomNetwork(guest *models.SGuest,
|
||||
|
||||
var net *models.SNetwork
|
||||
if netConfig.Private {
|
||||
net, _ = wire.GetCandidatePrivateNetwork(userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
net, _ = wire.GetCandidatePrivateNetwork(ctx, userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
} else {
|
||||
net, _ = wire.GetCandidateAutoAllocNetwork(userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
net, _ = wire.GetCandidateAutoAllocNetwork(ctx, userCred, userCred, models.NetworkManager.AllowScope(userCred), netConfig.Exit, netTypes)
|
||||
}
|
||||
if net != nil {
|
||||
netsAvaiable = append(netsAvaiable, *net)
|
||||
|
||||
@@ -82,7 +82,7 @@ func (manager *SAccessGroupResourceBaseManager) ListItemFilter(
|
||||
query api.AccessGroupFilterListInput,
|
||||
) (*sqlchemy.SQuery, error) {
|
||||
if len(query.AccessGroupId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, AccessGroupManager, &query.AccessGroupId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, AccessGroupManager, &query.AccessGroupId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -96,9 +96,9 @@ func (manager *SAccessGroupRuleManager) FetchOwnerId(ctx context.Context, data j
|
||||
return db.FetchDomainInfo(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SAccessGroupRuleManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SAccessGroupRuleManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
sq := AccessGroupManager.Query("id")
|
||||
sq = db.SharableManagerFilterByOwner(AccessGroupManager, sq, userCred, owner, scope)
|
||||
sq = db.SharableManagerFilterByOwner(ctx, AccessGroupManager, sq, userCred, owner, scope)
|
||||
return q.In("access_group_id", sq.SubQuery())
|
||||
}
|
||||
|
||||
@@ -209,7 +209,7 @@ func (manager *SAccessGroupRuleManager) ValidateCreateData(ctx context.Context,
|
||||
if len(input.AccessGroupId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("access_group_id")
|
||||
}
|
||||
_ag, err := validators.ValidateModel(userCred, AccessGroupManager, &input.AccessGroupId)
|
||||
_ag, err := validators.ValidateModel(ctx, userCred, AccessGroupManager, &input.AccessGroupId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
|
||||
@@ -206,12 +206,12 @@ func (manager *SAccessGroupManager) ValidateCreateData(ctx context.Context, user
|
||||
return nil, httperrors.NewMissingParameterError("cloudregion_id")
|
||||
}
|
||||
|
||||
_, err = validators.ValidateModel(userCred, CloudregionManager, &input.CloudregionId)
|
||||
_, err = validators.ValidateModel(ctx, userCred, CloudregionManager, &input.CloudregionId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = validators.ValidateModel(userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
_, err = validators.ValidateModel(ctx, userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ func (self *SBaremetalagent) ValidateUpdateData(ctx context.Context, userCred mc
|
||||
}
|
||||
}
|
||||
if len(input.ZoneId) > 0 {
|
||||
_, input.ZoneResourceInput, err = ValidateZoneResourceInput(userCred, input.ZoneResourceInput)
|
||||
_, input.ZoneResourceInput, err = ValidateZoneResourceInput(ctx, userCred, input.ZoneResourceInput)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "ValidateZoneResourceInput")
|
||||
}
|
||||
@@ -122,7 +122,7 @@ func (manager *SBaremetalagentManager) ValidateCreateData(ctx context.Context, u
|
||||
if len(input.ZoneId) == 0 {
|
||||
return input, errors.Wrap(httperrors.ErrMissingParameter, "zone/zone_id")
|
||||
}
|
||||
_, input.ZoneResourceInput, err = ValidateZoneResourceInput(userCred, input.ZoneResourceInput)
|
||||
_, input.ZoneResourceInput, err = ValidateZoneResourceInput(ctx, userCred, input.ZoneResourceInput)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "ValidateZoneResourceInput")
|
||||
}
|
||||
|
||||
@@ -441,12 +441,12 @@ func (manager *SBucketManager) ValidateCreateData(
|
||||
) (api.BucketCreateInput, error) {
|
||||
var err error
|
||||
var cloudRegionV *SCloudregion
|
||||
cloudRegionV, input.CloudregionResourceInput, err = ValidateCloudregionResourceInput(userCred, input.CloudregionResourceInput)
|
||||
cloudRegionV, input.CloudregionResourceInput, err = ValidateCloudregionResourceInput(ctx, userCred, input.CloudregionResourceInput)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "ValidateCloudregionResourceInput")
|
||||
}
|
||||
var managerV *SCloudprovider
|
||||
managerV, input.CloudproviderResourceInput, err = ValidateCloudproviderResourceInput(userCred, input.CloudproviderResourceInput)
|
||||
managerV, input.CloudproviderResourceInput, err = ValidateCloudproviderResourceInput(ctx, userCred, input.CloudproviderResourceInput)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "ValidateCloudproviderResourceInput")
|
||||
}
|
||||
@@ -1545,10 +1545,10 @@ type SBucketUsages struct {
|
||||
DiskUsedRate float64
|
||||
}
|
||||
|
||||
func (manager *SBucketManager) TotalCount(scope rbacscope.TRbacScope, ownerId mcclient.IIdentityProvider, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string, policyResult rbacutils.SPolicyResult) SBucketUsages {
|
||||
func (manager *SBucketManager) TotalCount(ctx context.Context, scope rbacscope.TRbacScope, ownerId mcclient.IIdentityProvider, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string, policyResult rbacutils.SPolicyResult) SBucketUsages {
|
||||
usage := SBucketUsages{}
|
||||
bq := manager.Query()
|
||||
bq = db.ObjectIdQueryWithPolicyResult(bq, manager, policyResult)
|
||||
bq = db.ObjectIdQueryWithPolicyResult(ctx, bq, manager, policyResult)
|
||||
bq = scopeOwnerIdFilter(bq, scope, ownerId)
|
||||
buckets := bq.SubQuery()
|
||||
bucketsQ := buckets.Query(
|
||||
|
||||
@@ -383,7 +383,7 @@ func (manager *SCachedimageManager) GetImageById(ctx context.Context, userCred m
|
||||
}
|
||||
|
||||
func (manager *SCachedimageManager) getImageByName(ctx context.Context, userCred mcclient.TokenCredential, imageId string, refresh bool) (*cloudprovider.SImage, error) {
|
||||
imgObj, _ := manager.FetchByName(userCred, imageId)
|
||||
imgObj, _ := manager.FetchByName(ctx, userCred, imageId)
|
||||
if imgObj != nil {
|
||||
cachedImage := imgObj.(*SCachedimage)
|
||||
if !refresh && cachedImage.GetStatus() == cloudprovider.IMAGE_STATUS_ACTIVE && len(cachedImage.GetOSType()) > 0 && !cachedImage.isRefreshSessionExpire() {
|
||||
@@ -871,7 +871,7 @@ func (manager *SCachedimageManager) ListItemFilter(
|
||||
|
||||
if len(query.HostSchedtagId) > 0 {
|
||||
idFilter = true
|
||||
schedTagObj, err := SchedtagManager.FetchByIdOrName(userCred, query.HostSchedtagId)
|
||||
schedTagObj, err := SchedtagManager.FetchByIdOrName(ctx, userCred, query.HostSchedtagId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", SchedtagManager.Keyword(), query.HostSchedtagId)
|
||||
@@ -888,17 +888,17 @@ func (manager *SCachedimageManager) ListItemFilter(
|
||||
|
||||
subq = subq.Snapshot()
|
||||
|
||||
subq, err = managedResourceFilterByAccount(subq, query.ManagedResourceListInput, "", nil)
|
||||
subq, err = managedResourceFilterByAccount(ctx, subq, query.ManagedResourceListInput, "", nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "managedResourceFilterByAccount")
|
||||
}
|
||||
|
||||
subq, err = managedResourceFilterByRegion(subq, query.RegionalFilterListInput, "", nil)
|
||||
subq, err = managedResourceFilterByRegion(ctx, subq, query.RegionalFilterListInput, "", nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "_managedResourceFilterByRegion")
|
||||
}
|
||||
|
||||
subq, err = managedResourceFilterByZone(subq, query.ZonalFilterListInput, "", nil)
|
||||
subq, err = managedResourceFilterByZone(ctx, subq, query.ZonalFilterListInput, "", nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "_managedResourceFilterByZone")
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ type SCapabilities struct {
|
||||
|
||||
func GetDiskCapabilities(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, region *SCloudregion, zone *SZone) (SCapabilities, error) {
|
||||
capa := SCapabilities{}
|
||||
s1, d1, s2, s3, d2, d3 := getStorageTypes(userCred, region, zone, "")
|
||||
s1, d1, s2, s3, d2, d3 := getStorageTypes(ctx, userCred, region, zone, "")
|
||||
capa.StorageTypes, capa.DataStorageTypes = s1, d1
|
||||
capa.StorageTypes2, capa.StorageTypes3 = s2, s3
|
||||
capa.DataStorageTypes2, capa.DataStorageTypes3 = d2, d3
|
||||
@@ -194,7 +194,7 @@ func GetCapabilities(ctx context.Context, userCred mcclient.TokenCredential, que
|
||||
}
|
||||
domainId = ""
|
||||
}
|
||||
capa.Hypervisors = getHypervisors(userCred, region, zone, domainId)
|
||||
capa.Hypervisors = getHypervisors(ctx, userCred, region, zone, domainId)
|
||||
capa.InstanceCapabilities = []cloudprovider.SInstanceCapability{}
|
||||
for _, hypervisor := range capa.Hypervisors {
|
||||
driver := GetDriver(hypervisor)
|
||||
@@ -204,20 +204,20 @@ func GetCapabilities(ctx context.Context, userCred mcclient.TokenCredential, que
|
||||
}
|
||||
getBrands(region, zone, domainId, &capa)
|
||||
// capa.Brands, capa.ComputeEngineBrands, capa.NetworkManageBrands, capa.ObjectStorageBrands = a, c, n, o
|
||||
capa.ResourceTypes = getResourceTypes(userCred, region, zone, domainId)
|
||||
s1, d1, s2, s3, d2, d3 := getStorageTypes(userCred, region, zone, domainId)
|
||||
capa.ResourceTypes = getResourceTypes(ctx, userCred, region, zone, domainId)
|
||||
s1, d1, s2, s3, d2, d3 := getStorageTypes(ctx, userCred, region, zone, domainId)
|
||||
capa.StorageTypes, capa.DataStorageTypes = s1, d1
|
||||
capa.StorageTypes2, capa.StorageTypes3 = s2, s3
|
||||
capa.DataStorageTypes2, capa.DataStorageTypes3 = d2, d3
|
||||
capa.GPUModels, capa.PCIModelTypes = getIsolatedDeviceInfo(userCred, region, zone, domainId)
|
||||
capa.GPUModels, capa.PCIModelTypes = getIsolatedDeviceInfo(ctx, userCred, region, zone, domainId)
|
||||
capa.SchedPolicySupport = isSchedPolicySupported(region, zone)
|
||||
capa.MinNicCount = getMinNicCount(region, zone)
|
||||
capa.MaxNicCount = getMaxNicCount(region, zone)
|
||||
capa.MinDataDiskCount = getMinDataDiskCount(region, zone)
|
||||
capa.MaxDataDiskCount = getMaxDataDiskCount(region, zone)
|
||||
capa.DBInstance = getDBInstanceInfo(region, zone)
|
||||
capa.Usable = isUsable(userCred, ownerId, scope, region, zone)
|
||||
capa.HostCpuArchs = getHostCpuArchs(userCred, region, zone, domainId)
|
||||
capa.Usable = isUsable(ctx, userCred, ownerId, scope, region, zone)
|
||||
capa.HostCpuArchs = getHostCpuArchs(ctx, userCred, region, zone, domainId)
|
||||
if query == nil {
|
||||
query = jsonutils.NewDict()
|
||||
}
|
||||
@@ -232,7 +232,7 @@ func GetCapabilities(ctx context.Context, userCred mcclient.TokenCredential, que
|
||||
}
|
||||
var err error
|
||||
serverType := jsonutils.GetAnyString(query, []string{"host_type", "server_type"})
|
||||
autoAllocNetworkCount, _ := getAutoAllocNetworkCount(userCred, ownerId, scope, region, zone, serverType)
|
||||
autoAllocNetworkCount, _ := getAutoAllocNetworkCount(ctx, userCred, ownerId, scope, region, zone, serverType)
|
||||
capa.PublicNetworkCount = autoAllocNetworkCount
|
||||
capa.AutoAllocNetworkCount = autoAllocNetworkCount
|
||||
mans := []ISpecModelManager{HostManager, IsolatedDeviceManager}
|
||||
@@ -240,20 +240,20 @@ func GetCapabilities(ctx context.Context, userCred mcclient.TokenCredential, que
|
||||
if err != nil {
|
||||
return capa, err
|
||||
}
|
||||
capa.AvailableHostCount, err = GetAvailableHostCount(userCred, query.(*jsonutils.JSONDict))
|
||||
capa.AvailableHostCount, err = GetAvailableHostCount(ctx, userCred, query.(*jsonutils.JSONDict))
|
||||
return capa, err
|
||||
}
|
||||
|
||||
func GetAvailableHostCount(userCred mcclient.TokenCredential, query *jsonutils.JSONDict) (int, error) {
|
||||
func GetAvailableHostCount(ctx context.Context, userCred mcclient.TokenCredential, query *jsonutils.JSONDict) (int, error) {
|
||||
zoneStr, _ := query.GetString("zone")
|
||||
izone, _ := ZoneManager.FetchByIdOrName(userCred, zoneStr)
|
||||
izone, _ := ZoneManager.FetchByIdOrName(ctx, userCred, zoneStr)
|
||||
var zoneId string
|
||||
if izone != nil {
|
||||
zoneId = izone.GetId()
|
||||
}
|
||||
|
||||
regionStr, _ := query.GetString("region")
|
||||
iregion, _ := CloudregionManager.FetchByIdOrName(userCred, regionStr)
|
||||
iregion, _ := CloudregionManager.FetchByIdOrName(ctx, userCred, regionStr)
|
||||
var regionId string
|
||||
if iregion != nil {
|
||||
regionId = iregion.GetId()
|
||||
@@ -264,7 +264,7 @@ func GetAvailableHostCount(userCred mcclient.TokenCredential, query *jsonutils.J
|
||||
Equals("host_status", "online").Equals("host_type", api.HOST_TYPE_HYPERVISOR)
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
q = HostManager.FilterByOwner(q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
q = HostManager.FilterByOwner(ctx, q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
}
|
||||
if len(zoneId) > 0 {
|
||||
q = q.Equals("zone_id", zoneId)
|
||||
@@ -480,7 +480,7 @@ func getBrands(region *SCloudregion, zone *SZone, domainId string, capa *SCapabi
|
||||
return
|
||||
}
|
||||
|
||||
func getHypervisors(userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) []string {
|
||||
func getHypervisors(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) []string {
|
||||
q := HostManager.Query("host_type", "manager_id")
|
||||
if region != nil {
|
||||
subq := getRegionZoneSubq(region)
|
||||
@@ -491,7 +491,7 @@ func getHypervisors(userCred mcclient.TokenCredential, region *SCloudregion, zon
|
||||
}
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
q = HostManager.FilterByOwner(q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
q = HostManager.FilterByOwner(ctx, q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
/*subq := getDomainManagerSubq(domainId)
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.In(q.Field("manager_id"), subq),
|
||||
@@ -522,7 +522,7 @@ func getHypervisors(userCred mcclient.TokenCredential, region *SCloudregion, zon
|
||||
return hypervisors
|
||||
}
|
||||
|
||||
func getResourceTypes(userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) []string {
|
||||
func getResourceTypes(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) []string {
|
||||
q := HostManager.Query("resource_type", "manager_id")
|
||||
if region != nil {
|
||||
subq := getRegionZoneSubq(region)
|
||||
@@ -533,7 +533,7 @@ func getResourceTypes(userCred mcclient.TokenCredential, region *SCloudregion, z
|
||||
}
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
q = HostManager.FilterByOwner(q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
q = HostManager.FilterByOwner(ctx, q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
/*subq := getDomainManagerSubq(domainId)
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.In(q.Field("manager_id"), subq),
|
||||
@@ -596,6 +596,7 @@ type SimpleStorageInfo struct {
|
||||
}
|
||||
|
||||
func getStorageTypes(
|
||||
ctx context.Context,
|
||||
userCred mcclient.TokenCredential,
|
||||
region *SCloudregion, zone *SZone, domainId string,
|
||||
) (
|
||||
@@ -619,7 +620,7 @@ func getStorageTypes(
|
||||
hostQuery := HostManager.Query()
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
hostQuery = HostManager.FilterByOwner(hostQuery, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
hostQuery = HostManager.FilterByOwner(ctx, hostQuery, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
}
|
||||
hosts := hostQuery.SubQuery()
|
||||
|
||||
@@ -656,7 +657,7 @@ func getStorageTypes(
|
||||
}
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
q = StorageManager.FilterByOwner(q, StorageManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
q = StorageManager.FilterByOwner(ctx, q, StorageManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
}
|
||||
q = q.Filter(sqlchemy.Equals(hosts.Field("resource_type"), api.HostResourceTypeShared))
|
||||
q = q.Filter(sqlchemy.IsNotEmpty(storages.Field("storage_type")))
|
||||
@@ -780,12 +781,12 @@ type PCIDevModelTypes struct {
|
||||
SizeMB int
|
||||
}
|
||||
|
||||
func getIsolatedDeviceInfo(userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) ([]string, []PCIDevModelTypes) {
|
||||
func getIsolatedDeviceInfo(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) ([]string, []PCIDevModelTypes) {
|
||||
devices := IsolatedDeviceManager.Query().SubQuery()
|
||||
hostQuery := HostManager.Query()
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
hostQuery = StorageManager.FilterByOwner(hostQuery, StorageManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
hostQuery = StorageManager.FilterByOwner(ctx, hostQuery, StorageManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
}
|
||||
hosts := hostQuery.SubQuery()
|
||||
|
||||
@@ -834,12 +835,12 @@ func getIsolatedDeviceInfo(userCred mcclient.TokenCredential, region *SCloudregi
|
||||
return gpuModels, gpus
|
||||
}
|
||||
|
||||
func getHostCpuArchs(userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) []string {
|
||||
func getHostCpuArchs(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, zone *SZone, domainId string) []string {
|
||||
q := HostManager.Query("cpu_architecture").Equals("enabled", true).
|
||||
Equals("host_status", "online").Equals("host_type", api.HOST_TYPE_HYPERVISOR)
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{DomainId: domainId}
|
||||
q = HostManager.FilterByOwner(q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
q = HostManager.FilterByOwner(ctx, q, HostManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
}
|
||||
if zone != nil {
|
||||
q = q.Equals("zone_id", zone.Id)
|
||||
@@ -867,15 +868,15 @@ func getHostCpuArchs(userCred mcclient.TokenCredential, region *SCloudregion, zo
|
||||
return res
|
||||
}
|
||||
|
||||
func getNetworkCount(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone) (int, error) {
|
||||
return getNetworkCountByFilter(userCred, ownerId, scope, region, zone, tristate.None, "")
|
||||
func getNetworkCount(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone) (int, error) {
|
||||
return getNetworkCountByFilter(ctx, userCred, ownerId, scope, region, zone, tristate.None, "")
|
||||
}
|
||||
|
||||
func getAutoAllocNetworkCount(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone, serverType string) (int, error) {
|
||||
return getNetworkCountByFilter(userCred, ownerId, scope, region, zone, tristate.True, serverType)
|
||||
func getAutoAllocNetworkCount(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone, serverType string) (int, error) {
|
||||
return getNetworkCountByFilter(ctx, userCred, ownerId, scope, region, zone, tristate.True, serverType)
|
||||
}
|
||||
|
||||
func getNetworkCountByFilter(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone, isAutoAlloc tristate.TriState, serverType string) (int, error) {
|
||||
func getNetworkCountByFilter(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone, isAutoAlloc tristate.TriState, serverType string) (int, error) {
|
||||
if zone != nil && region == nil {
|
||||
region, _ = zone.GetRegion()
|
||||
}
|
||||
@@ -902,7 +903,7 @@ func getNetworkCountByFilter(userCred mcclient.TokenCredential, ownerId mcclient
|
||||
}
|
||||
}
|
||||
|
||||
q = NetworkManager.FilterByOwner(q, NetworkManager, userCred, ownerId, scope)
|
||||
q = NetworkManager.FilterByOwner(ctx, q, NetworkManager, userCred, ownerId, scope)
|
||||
if !isAutoAlloc.IsNone() {
|
||||
if isAutoAlloc.IsTrue() {
|
||||
q = q.IsTrue("is_auto_alloc")
|
||||
@@ -962,8 +963,8 @@ func getMaxDataDiskCount(region *SCloudregion, zone *SZone) int {
|
||||
return 0
|
||||
}
|
||||
|
||||
func isUsable(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone) bool {
|
||||
cnt, err := getNetworkCount(userCred, ownerId, scope, region, zone)
|
||||
func isUsable(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope, region *SCloudregion, zone *SZone) bool {
|
||||
cnt, err := getNetworkCount(ctx, userCred, ownerId, scope, region, zone)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -344,7 +344,7 @@ func (manager *SCDNDomainManager) ValidateCreateData(
|
||||
if len(input.CloudproviderId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("cloudprovider_id")
|
||||
}
|
||||
_provider, err := validators.ValidateModel(userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
_provider, err := validators.ValidateModel(ctx, userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
|
||||
@@ -346,7 +346,7 @@ func (acnt *SCloudaccount) ValidateUpdateData(
|
||||
defaultRegion, _ := jsonutils.Marshal(acnt.Options).GetString("default_region")
|
||||
if len(input.ProxySettingId) > 0 {
|
||||
var proxySetting *proxy.SProxySetting
|
||||
proxySetting, input.ProxySettingResourceInput, err = proxy.ValidateProxySettingResourceInput(userCred, input.ProxySettingResourceInput)
|
||||
proxySetting, input.ProxySettingResourceInput, err = proxy.ValidateProxySettingResourceInput(ctx, userCred, input.ProxySettingResourceInput)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "ValidateProxySettingResourceInput")
|
||||
}
|
||||
@@ -475,7 +475,7 @@ func (manager *SCloudaccountManager) validateCreateData(
|
||||
}
|
||||
|
||||
if len(input.Zone) > 0 {
|
||||
obj, err := ZoneManager.FetchByIdOrName(userCred, input.Zone)
|
||||
obj, err := ZoneManager.FetchByIdOrName(ctx, userCred, input.Zone)
|
||||
if err != nil {
|
||||
return input, errors.Wrapf(err, "unable to fetch Zone %s", input.Zone)
|
||||
}
|
||||
@@ -543,7 +543,7 @@ func (manager *SCloudaccountManager) validateCreateData(
|
||||
input.ProxySettingId = proxyapi.ProxySettingId_DIRECT
|
||||
}
|
||||
var proxySetting *proxy.SProxySetting
|
||||
proxySetting, input.ProxySettingResourceInput, err = proxy.ValidateProxySettingResourceInput(userCred, input.ProxySettingResourceInput)
|
||||
proxySetting, input.ProxySettingResourceInput, err = proxy.ValidateProxySettingResourceInput(ctx, userCred, input.ProxySettingResourceInput)
|
||||
if err != nil {
|
||||
return input, errors.Wrap(err, "ValidateProxySettingResourceInput")
|
||||
}
|
||||
@@ -1295,8 +1295,8 @@ func (manager *SCloudaccountManager) FetchCloudaccountById(accountId string) *SC
|
||||
return providerObj.(*SCloudaccount)
|
||||
}
|
||||
|
||||
func (manager *SCloudaccountManager) FetchCloudaccountByIdOrName(accountId string) *SCloudaccount {
|
||||
providerObj, err := manager.FetchByIdOrName(nil, accountId)
|
||||
func (manager *SCloudaccountManager) FetchCloudaccountByIdOrName(ctx context.Context, accountId string) *SCloudaccount {
|
||||
providerObj, err := manager.FetchByIdOrName(ctx, nil, accountId)
|
||||
if err != nil {
|
||||
if err != sql.ErrNoRows {
|
||||
log.Errorf("%s", err)
|
||||
@@ -2022,7 +2022,7 @@ func (manager *SCloudaccountManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.ProxySetting) > 0 {
|
||||
proxy, err := proxy.ProxySettingManager.FetchByIdOrName(nil, query.ProxySetting)
|
||||
proxy, err := proxy.ProxySettingManager.FetchByIdOrName(ctx, nil, query.ProxySetting)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("proxy_setting", query.ProxySetting)
|
||||
@@ -2038,7 +2038,7 @@ func (manager *SCloudaccountManager) ListItemFilter(
|
||||
if len(managerStr) == 0 {
|
||||
continue
|
||||
}
|
||||
providerObj, err := CloudproviderManager.FetchByIdOrName(userCred, managerStr)
|
||||
providerObj, err := CloudproviderManager.FetchByIdOrName(ctx, userCred, managerStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudproviderManager.Keyword(), managerStr)
|
||||
@@ -2723,7 +2723,7 @@ func (manager *SCloudaccountManager) filterByDomainId(q *sqlchemy.SQuery, domain
|
||||
return q
|
||||
}
|
||||
|
||||
func (manager *SCloudaccountManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SCloudaccountManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeProject, rbacscope.ScopeDomain:
|
||||
@@ -2817,14 +2817,14 @@ func (account *SCloudaccount) PerformSyncSkus(ctx context.Context, userCred mccl
|
||||
params.Add(jsonutils.NewString(input.Resource), "resource")
|
||||
|
||||
if len(input.CloudregionId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, CloudregionManager, &input.CloudregionId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, CloudregionManager, &input.CloudregionId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
params.Add(jsonutils.NewString(input.CloudregionId), "cloudregion_id")
|
||||
}
|
||||
if len(input.CloudproviderId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -3132,7 +3132,7 @@ func (cd *SCloudaccount) GetHost2Wire(ctx context.Context, userCred mcclient.Tok
|
||||
// 绑定同步策略
|
||||
func (account *SCloudaccount) PerformProjectMapping(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.CloudaccountProjectMappingInput) (jsonutils.JSONObject, error) {
|
||||
if len(input.ProjectMappingId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, ProjectMappingManager, &input.ProjectMappingId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, ProjectMappingManager, &input.ProjectMappingId)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "ValidateModel")
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ func (scm *SCloudaccountManager) PerformPrepareNets(ctx context.Context, userCre
|
||||
return output, errors.Wrap(err, "unable to FetchEsxiZoneIds")
|
||||
}
|
||||
if len(zoneids) == 0 {
|
||||
id, err := scm.defaultZoneId(userCred)
|
||||
id, err := scm.defaultZoneId(ctx, userCred)
|
||||
if err != nil {
|
||||
return output, errors.Wrap(err, "unable to fetch defaultZoneId")
|
||||
}
|
||||
@@ -156,7 +156,7 @@ func (scm *SCloudaccountManager) PerformPrepareNets(ctx context.Context, userCre
|
||||
input.ProxySettingId = proxyapi.ProxySettingId_DIRECT
|
||||
}
|
||||
var proxySetting *proxy.SProxySetting
|
||||
proxySetting, input.ProxySettingResourceInput, err = proxy.ValidateProxySettingResourceInput(userCred, input.ProxySettingResourceInput)
|
||||
proxySetting, input.ProxySettingResourceInput, err = proxy.ValidateProxySettingResourceInput(ctx, userCred, input.ProxySettingResourceInput)
|
||||
if err != nil {
|
||||
return output, errors.Wrap(err, "ValidateProxySettingResourceInput")
|
||||
}
|
||||
@@ -211,14 +211,14 @@ func (cam *SCloudaccountManager) prepareNets(ctx context.Context, userCred mccli
|
||||
|
||||
if !input.Dvs {
|
||||
// fetch all wire candidate
|
||||
wires, err := cam.fetchWires(userCred, input.ProjectDomainId, zoneids)
|
||||
wires, err := cam.fetchWires(ctx, userCred, input.ProjectDomainId, zoneids)
|
||||
if err != nil {
|
||||
return output, errors.Wrap(err, "unable to fetch wires")
|
||||
}
|
||||
// fetch networks
|
||||
networks := make([][]SNetwork, len(wires))
|
||||
for i := range networks {
|
||||
nets, err := wires[i].getNetworks(userCred, userCred, rbacscope.ScopeSystem)
|
||||
nets, err := wires[i].getNetworks(ctx, userCred, userCred, rbacscope.ScopeSystem)
|
||||
if err != nil {
|
||||
return output, errors.Wrap(err, "wire.getNetwork")
|
||||
}
|
||||
@@ -580,22 +580,22 @@ func (scm *SCloudaccountManager) parseAndSuggestSingleWire(params sParseAndSugge
|
||||
return output
|
||||
}
|
||||
|
||||
func (manager *SCloudaccountManager) fetchWires(userCred mcclient.TokenCredential, domainId string, zoneIds []string) ([]SWire, error) {
|
||||
func (manager *SCloudaccountManager) fetchWires(ctx context.Context, userCred mcclient.TokenCredential, domainId string, zoneIds []string) ([]SWire, error) {
|
||||
q := WireManager.Query().In("zone_id", zoneIds)
|
||||
if len(domainId) > 0 {
|
||||
ownerId := &db.SOwnerId{}
|
||||
ownerId.DomainId = domainId
|
||||
q = WireManager.FilterByOwner(q, WireManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
q = WireManager.FilterByOwner(ctx, q, WireManager, userCred, ownerId, rbacscope.ScopeDomain)
|
||||
} else {
|
||||
q = WireManager.FilterByOwner(q, WireManager, userCred, userCred, rbacscope.ScopeDomain)
|
||||
q = WireManager.FilterByOwner(ctx, q, WireManager, userCred, userCred, rbacscope.ScopeDomain)
|
||||
}
|
||||
wires := make([]SWire, 0, 1)
|
||||
err := db.FetchModelObjects(WireManager, q, &wires)
|
||||
return wires, err
|
||||
}
|
||||
|
||||
func (manager *SCloudaccountManager) defaultZoneId(userCred mcclient.TokenCredential) (string, error) {
|
||||
zone, err := ZoneManager.FetchByName(userCred, "zone0")
|
||||
func (manager *SCloudaccountManager) defaultZoneId(ctx context.Context, userCred mcclient.TokenCredential) (string, error) {
|
||||
zone, err := ZoneManager.FetchByName(ctx, userCred, "zone0")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
@@ -557,9 +557,9 @@ func (sr *SSyncRange) NeedSyncInfo() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (sr *SSyncRange) normalizeRegionIds() error {
|
||||
func (sr *SSyncRange) normalizeRegionIds(ctx context.Context) error {
|
||||
for i := 0; i < len(sr.Region); i += 1 {
|
||||
obj, err := CloudregionManager.FetchByIdOrName(nil, sr.Region[i])
|
||||
obj, err := CloudregionManager.FetchByIdOrName(ctx, nil, sr.Region[i])
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return httperrors.NewResourceNotFoundError("Region %s not found", sr.Region[i])
|
||||
@@ -572,9 +572,9 @@ func (sr *SSyncRange) normalizeRegionIds() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sr *SSyncRange) normalizeZoneIds() error {
|
||||
func (sr *SSyncRange) normalizeZoneIds(ctx context.Context) error {
|
||||
for i := 0; i < len(sr.Zone); i += 1 {
|
||||
obj, err := ZoneManager.FetchByIdOrName(nil, sr.Zone[i])
|
||||
obj, err := ZoneManager.FetchByIdOrName(ctx, nil, sr.Zone[i])
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return httperrors.NewResourceNotFoundError("Zone %s not found", sr.Zone[i])
|
||||
@@ -595,9 +595,9 @@ func (sr *SSyncRange) normalizeZoneIds() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sr *SSyncRange) normalizeHostIds() error {
|
||||
func (sr *SSyncRange) normalizeHostIds(ctx context.Context) error {
|
||||
for i := 0; i < len(sr.Host); i += 1 {
|
||||
obj, err := HostManager.FetchByIdOrName(nil, sr.Host[i])
|
||||
obj, err := HostManager.FetchByIdOrName(ctx, nil, sr.Host[i])
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return httperrors.NewResourceNotFoundError("Host %s not found", sr.Host[i])
|
||||
@@ -625,9 +625,9 @@ func (sr *SSyncRange) normalizeHostIds() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sr *SSyncRange) Normalize() error {
|
||||
func (sr *SSyncRange) Normalize(ctx context.Context) error {
|
||||
if sr.Region != nil && len(sr.Region) > 0 {
|
||||
err := sr.normalizeRegionIds()
|
||||
err := sr.normalizeRegionIds(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -635,7 +635,7 @@ func (sr *SSyncRange) Normalize() error {
|
||||
sr.Region = make([]string, 0)
|
||||
}
|
||||
if sr.Zone != nil && len(sr.Zone) > 0 {
|
||||
err := sr.normalizeZoneIds()
|
||||
err := sr.normalizeZoneIds(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -643,7 +643,7 @@ func (sr *SSyncRange) Normalize() error {
|
||||
sr.Zone = make([]string, 0)
|
||||
}
|
||||
if sr.Host != nil && len(sr.Host) > 0 {
|
||||
err := sr.normalizeHostIds()
|
||||
err := sr.normalizeHostIds(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -971,8 +971,8 @@ func (manager *SCloudproviderManager) IsProviderAccountEnabled(providerId string
|
||||
return account.GetEnabled()
|
||||
}
|
||||
|
||||
func (manager *SCloudproviderManager) FetchCloudproviderByIdOrName(providerId string) *SCloudprovider {
|
||||
providerObj, err := manager.FetchByIdOrName(nil, providerId)
|
||||
func (manager *SCloudproviderManager) FetchCloudproviderByIdOrName(ctx context.Context, providerId string) *SCloudprovider {
|
||||
providerObj, err := manager.FetchByIdOrName(ctx, nil, providerId)
|
||||
if err != nil {
|
||||
if err != sql.ErrNoRows {
|
||||
log.Errorf("%s", err)
|
||||
@@ -1275,7 +1275,7 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
var region *SCloudregion
|
||||
|
||||
if len(query.ZoneId) > 0 {
|
||||
zoneObj, err := ZoneManager.FetchByIdOrName(userCred, query.ZoneId)
|
||||
zoneObj, err := ZoneManager.FetchByIdOrName(ctx, userCred, query.ZoneId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", ZoneManager.Keyword(), query.ZoneId)
|
||||
@@ -1288,7 +1288,7 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
sq := pr.Query(pr.Field("cloudprovider_id")).Equals("cloudregion_id", zone.CloudregionId).Distinct()
|
||||
q = q.In("id", sq)
|
||||
} else if len(query.CloudregionId) > 0 {
|
||||
regionObj, err := CloudregionManager.FetchByIdOrName(userCred, query.CloudregionId)
|
||||
regionObj, err := CloudregionManager.FetchByIdOrName(ctx, userCred, query.CloudregionId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudregion", query.CloudregionId)
|
||||
@@ -1352,7 +1352,7 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
if len(managerStr) == 0 {
|
||||
continue
|
||||
}
|
||||
providerObj, err := manager.FetchByIdOrName(userCred, managerStr)
|
||||
providerObj, err := manager.FetchByIdOrName(ctx, userCred, managerStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudproviderManager.Keyword(), managerStr)
|
||||
@@ -1407,7 +1407,7 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.HostSchedtagId) > 0 {
|
||||
schedTagObj, err := SchedtagManager.FetchByIdOrName(userCred, query.HostSchedtagId)
|
||||
schedTagObj, err := SchedtagManager.FetchByIdOrName(ctx, userCred, query.HostSchedtagId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", SchedtagManager.Keyword(), query.HostSchedtagId)
|
||||
@@ -1769,7 +1769,7 @@ func (manager *SCloudproviderManager) filterByDomainId(q *sqlchemy.SQuery, domai
|
||||
return q
|
||||
}
|
||||
|
||||
func (manager *SCloudproviderManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SCloudproviderManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
switch scope {
|
||||
case rbacscope.ScopeProject, rbacscope.ScopeDomain:
|
||||
@@ -1863,7 +1863,7 @@ func (provider *SCloudprovider) GetDetailsStorageClasses(
|
||||
return output, httperrors.NewInternalServerError("fail to get provider driver %s", err)
|
||||
}
|
||||
if len(input.CloudregionId) > 0 {
|
||||
_, input.CloudregionResourceInput, err = ValidateCloudregionResourceInput(userCred, input.CloudregionResourceInput)
|
||||
_, input.CloudregionResourceInput, err = ValidateCloudregionResourceInput(ctx, userCred, input.CloudregionResourceInput)
|
||||
if err != nil {
|
||||
return output, errors.Wrap(err, "ValidateCloudregionResourceInput")
|
||||
}
|
||||
@@ -1888,7 +1888,7 @@ func (provider *SCloudprovider) GetDetailsCannedAcls(
|
||||
return output, httperrors.NewInternalServerError("fail to get provider driver %s", err)
|
||||
}
|
||||
if len(input.CloudregionId) > 0 {
|
||||
_, input.CloudregionResourceInput, err = ValidateCloudregionResourceInput(userCred, input.CloudregionResourceInput)
|
||||
_, input.CloudregionResourceInput, err = ValidateCloudregionResourceInput(ctx, userCred, input.CloudregionResourceInput)
|
||||
if err != nil {
|
||||
return output, errors.Wrap(err, "ValidateCloudregionResourceInput")
|
||||
}
|
||||
@@ -2147,7 +2147,7 @@ func (manager *SCloudproviderManager) ListItemExportKeys(ctx context.Context, q
|
||||
// 绑定同步策略
|
||||
func (cprvd *SCloudprovider) PerformProjectMapping(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.CloudaccountProjectMappingInput) (jsonutils.JSONObject, error) {
|
||||
if len(input.ProjectMappingId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, ProjectMappingManager, &input.ProjectMappingId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, ProjectMappingManager, &input.ProjectMappingId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -2174,7 +2174,7 @@ func (cprvd *SCloudprovider) PerformProjectMapping(ctx context.Context, userCred
|
||||
func (cprvd *SCloudprovider) PerformSetSyncing(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.CloudproviderSync) (jsonutils.JSONObject, error) {
|
||||
regionIds := []string{}
|
||||
for i := range input.CloudregionIds {
|
||||
_, err := validators.ValidateModel(userCred, CloudregionManager, &input.CloudregionIds[i])
|
||||
_, err := validators.ValidateModel(ctx, userCred, CloudregionManager, &input.CloudregionIds[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@ type SCloudregionResourceBase struct {
|
||||
|
||||
type SCloudregionResourceBaseManager struct{}
|
||||
|
||||
func ValidateCloudregionResourceInput(userCred mcclient.TokenCredential, input api.CloudregionResourceInput) (*SCloudregion, api.CloudregionResourceInput, error) {
|
||||
regionObj, err := CloudregionManager.FetchByIdOrName(userCred, input.CloudregionId)
|
||||
func ValidateCloudregionResourceInput(ctx context.Context, userCred mcclient.TokenCredential, input api.CloudregionResourceInput) (*SCloudregion, api.CloudregionResourceInput, error) {
|
||||
regionObj, err := CloudregionManager.FetchByIdOrName(ctx, userCred, input.CloudregionId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, input, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", CloudregionManager.Keyword(), input.CloudregionId)
|
||||
@@ -52,8 +52,8 @@ func ValidateCloudregionResourceInput(userCred mcclient.TokenCredential, input a
|
||||
return regionObj.(*SCloudregion), input, nil
|
||||
}
|
||||
|
||||
func ValidateCloudregionId(userCred mcclient.TokenCredential, regionId string) (*SCloudregion, error) {
|
||||
regionObj, err := CloudregionManager.FetchByIdOrName(userCred, regionId)
|
||||
func ValidateCloudregionId(ctx context.Context, userCred mcclient.TokenCredential, regionId string) (*SCloudregion, error) {
|
||||
regionObj, err := CloudregionManager.FetchByIdOrName(ctx, userCred, regionId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", CloudregionManager.Keyword(), regionId)
|
||||
@@ -136,7 +136,7 @@ func (manager *SCloudregionResourceBaseManager) ListItemFilter(
|
||||
userCred mcclient.TokenCredential,
|
||||
query api.RegionalFilterListInput,
|
||||
) (*sqlchemy.SQuery, error) {
|
||||
return managedResourceFilterByRegion(q, query, "", nil)
|
||||
return managedResourceFilterByRegion(ctx, q, query, "", nil)
|
||||
}
|
||||
|
||||
func (manager *SCloudregionResourceBaseManager) OrderByExtraFields(
|
||||
|
||||
@@ -335,12 +335,12 @@ func (self *SCloudregion) GetDriver() IRegionDriver {
|
||||
return GetRegionDriver(provider)
|
||||
}
|
||||
|
||||
func (self *SCloudregion) getUsage() api.SCloudregionUsage {
|
||||
func (self *SCloudregion) getUsage(ctx context.Context) api.SCloudregionUsage {
|
||||
out := api.SCloudregionUsage{}
|
||||
out.VpcCount, _ = self.GetVpcCount()
|
||||
out.ZoneCount, _ = self.GetZoneCount()
|
||||
out.GuestCount, _ = self.GetGuestCount()
|
||||
out.NetworkCount, _ = self.GetNetworkCount()
|
||||
out.NetworkCount, _ = self.GetNetworkCount(ctx)
|
||||
out.GuestIncrementCount, _ = self.GetGuestIncrementCount()
|
||||
return out
|
||||
}
|
||||
@@ -1094,8 +1094,8 @@ func (self *SCloudregion) GetDetailsDiskCapability(ctx context.Context, userCred
|
||||
return jsonutils.Marshal(&capa), nil
|
||||
}
|
||||
|
||||
func (self *SCloudregion) GetNetworkCount() (int, error) {
|
||||
return getNetworkCount(nil, nil, rbacscope.ScopeSystem, self, nil)
|
||||
func (self *SCloudregion) GetNetworkCount(ctx context.Context) (int, error) {
|
||||
return getNetworkCount(ctx, nil, nil, rbacscope.ScopeSystem, self, nil)
|
||||
}
|
||||
|
||||
func (self *SCloudregion) getMinNicCount() int {
|
||||
|
||||
@@ -99,7 +99,7 @@ func (manager *SDBInstanceAccountManager) FetchOwnerId(ctx context.Context, data
|
||||
return db.FetchProjectInfo(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SDBInstanceAccountManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SDBInstanceAccountManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
sq := DBInstanceManager.Query("id")
|
||||
switch scope {
|
||||
@@ -293,7 +293,7 @@ func (manager *SDBInstanceAccountManager) ValidateCreateData(ctx context.Context
|
||||
if len(input.DBInstance) == 0 {
|
||||
return nil, httperrors.NewMissingParameterError("dbinstance")
|
||||
}
|
||||
_instance, err := DBInstanceManager.FetchByIdOrName(userCred, input.DBInstance)
|
||||
_instance, err := DBInstanceManager.FetchByIdOrName(ctx, userCred, input.DBInstance)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError("failed to found dbinstance %s", input.DBInstance)
|
||||
|
||||
@@ -208,7 +208,7 @@ func (manager *SDBInstanceBackupManager) ValidateCreateData(ctx context.Context,
|
||||
if len(input.DBInstance) == 0 {
|
||||
return nil, httperrors.NewMissingParameterError("dbinstance")
|
||||
}
|
||||
_instance, err := DBInstanceManager.FetchByIdOrName(userCred, input.DBInstance)
|
||||
_instance, err := DBInstanceManager.FetchByIdOrName(ctx, userCred, input.DBInstance)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError("failed to found dbinstance %s", input.DBInstance)
|
||||
|
||||
@@ -101,7 +101,7 @@ func (manager *SDBInstanceDatabaseManager) FetchOwnerId(ctx context.Context, dat
|
||||
return db.FetchProjectInfo(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SDBInstanceDatabaseManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SDBInstanceDatabaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if owner != nil {
|
||||
sq := DBInstanceManager.Query("id")
|
||||
switch scope {
|
||||
@@ -213,7 +213,7 @@ func (manager *SDBInstanceDatabaseManager) ValidateCreateData(ctx context.Contex
|
||||
if len(input.DBInstance) == 0 {
|
||||
return nil, httperrors.NewMissingParameterError("dbinstance")
|
||||
}
|
||||
_instance, err := DBInstanceManager.FetchByIdOrName(userCred, input.DBInstance)
|
||||
_instance, err := DBInstanceManager.FetchByIdOrName(ctx, userCred, input.DBInstance)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError("failed to found dbinstance %s", input.DBInstance)
|
||||
|
||||
@@ -129,7 +129,7 @@ func (manager *SDBInstancePrivilegeManager) ListItemFilter(
|
||||
}
|
||||
|
||||
data := jsonutils.Marshal(query).(*jsonutils.JSONDict)
|
||||
return validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
|
||||
return validators.ApplyModelFilters(ctx, q, data, []*validators.ModelFilterOptions{
|
||||
{Key: "dbinstanceaccount", ModelKeyword: "dbinstanceaccount", OwnerId: userCred},
|
||||
{Key: "dbinstancedatabase", ModelKeyword: "dbinstancedatabase", OwnerId: userCred},
|
||||
})
|
||||
|
||||
@@ -119,7 +119,7 @@ func (manager *SDBInstanceSkuManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if domainStr := query.ProjectDomainId; len(domainStr) > 0 {
|
||||
domain, err := db.TenantCacheManager.FetchDomainByIdOrName(context.Background(), domainStr)
|
||||
domain, err := db.TenantCacheManager.FetchDomainByIdOrName(ctx, domainStr)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("domains", domainStr)
|
||||
@@ -131,7 +131,7 @@ func (manager *SDBInstanceSkuManager) ListItemFilter(
|
||||
|
||||
q = listItemDomainFilter(q, query.Providers, query.ProjectDomainId)
|
||||
|
||||
q, err = managedResourceFilterByRegion(q, query.RegionalFilterListInput, "", nil)
|
||||
q, err = managedResourceFilterByRegion(ctx, q, query.RegionalFilterListInput, "", nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "managedResourceFilterByRegion")
|
||||
}
|
||||
@@ -162,7 +162,7 @@ func (manager *SDBInstanceSkuManager) ListItemFilter(
|
||||
for k, zoneIds := range map[string][]string{"zone1": query.Zone1, "zone2": query.Zone2, "zone3": query.Zone3} {
|
||||
ids := []string{}
|
||||
for _, zoneId := range zoneIds {
|
||||
zone, err := ZoneManager.FetchByIdOrName(userCred, zoneId)
|
||||
zone, err := ZoneManager.FetchByIdOrName(ctx, userCred, zoneId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("zone", zoneId)
|
||||
|
||||
@@ -39,8 +39,8 @@ type SDBInstanceResourceBaseManager struct {
|
||||
SVpcResourceBaseManager
|
||||
}
|
||||
|
||||
func ValidateDBInstanceResourceInput(userCred mcclient.TokenCredential, input api.DBInstanceResourceInput) (*SDBInstance, api.DBInstanceResourceInput, error) {
|
||||
rdsObj, err := DBInstanceManager.FetchByIdOrName(userCred, input.DBInstanceId)
|
||||
func ValidateDBInstanceResourceInput(ctx context.Context, userCred mcclient.TokenCredential, input api.DBInstanceResourceInput) (*SDBInstance, api.DBInstanceResourceInput, error) {
|
||||
rdsObj, err := DBInstanceManager.FetchByIdOrName(ctx, userCred, input.DBInstanceId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, input, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", DBInstanceManager.Keyword(), input.DBInstanceId)
|
||||
@@ -127,7 +127,7 @@ func (manager *SDBInstanceResourceBaseManager) ListItemFilter(
|
||||
var err error
|
||||
if len(query.DBInstanceId) > 0 {
|
||||
var dbObj *SDBInstance
|
||||
dbObj, _, err = ValidateDBInstanceResourceInput(userCred, query.DBInstanceResourceInput)
|
||||
dbObj, _, err = ValidateDBInstanceResourceInput(ctx, userCred, query.DBInstanceResourceInput)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "DBInstanceManager.FetchByIdOrName")
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ func (man *SDBInstanceManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.ZoneId) > 0 {
|
||||
zoneObj, err := ZoneManager.FetchByIdOrName(userCred, query.ZoneId)
|
||||
zoneObj, err := ZoneManager.FetchByIdOrName(ctx, userCred, query.ZoneId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(ZoneManager.Keyword(), query.ZoneId)
|
||||
@@ -202,7 +202,7 @@ func (man *SDBInstanceManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.MasterInstance) > 0 {
|
||||
instObj, err := DBInstanceManager.FetchByIdOrName(userCred, query.MasterInstance)
|
||||
instObj, err := DBInstanceManager.FetchByIdOrName(ctx, userCred, query.MasterInstance)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(DBInstanceManager.Keyword(), query.MasterInstance)
|
||||
@@ -309,7 +309,7 @@ func (manager *SDBInstanceManager) BatchCreateValidateCreateData(ctx context.Con
|
||||
|
||||
func (man *SDBInstanceManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input api.DBInstanceCreateInput) (api.DBInstanceCreateInput, error) {
|
||||
if len(input.DBInstancebackupId) > 0 {
|
||||
_backup, err := validators.ValidateModel(userCred, DBInstanceBackupManager, &input.DBInstancebackupId)
|
||||
_backup, err := validators.ValidateModel(ctx, userCred, DBInstanceBackupManager, &input.DBInstancebackupId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -321,7 +321,7 @@ func (man *SDBInstanceManager) ValidateCreateData(ctx context.Context, userCred
|
||||
}
|
||||
for _, v := range map[string]*string{"zone1": &input.Zone1, "zone2": &input.Zone2, "zone3": &input.Zone3} {
|
||||
if len(*v) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, ZoneManager, v)
|
||||
_, err := validators.ValidateModel(ctx, userCred, ZoneManager, v)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -337,7 +337,7 @@ func (man *SDBInstanceManager) ValidateCreateData(ctx context.Context, userCred
|
||||
var vpc *SVpc
|
||||
var network *SNetwork
|
||||
if len(input.NetworkId) > 0 {
|
||||
_network, err := validators.ValidateModel(userCred, NetworkManager, &input.NetworkId)
|
||||
_network, err := validators.ValidateModel(ctx, userCred, NetworkManager, &input.NetworkId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -354,7 +354,7 @@ func (man *SDBInstanceManager) ValidateCreateData(ctx context.Context, userCred
|
||||
}
|
||||
vpc, _ = network.GetVpc()
|
||||
} else if len(input.VpcId) > 0 {
|
||||
_vpc, err := validators.ValidateModel(userCred, VpcManager, &input.VpcId)
|
||||
_vpc, err := validators.ValidateModel(ctx, userCred, VpcManager, &input.VpcId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -468,7 +468,7 @@ func (man *SDBInstanceManager) ValidateCreateData(ctx context.Context, userCred
|
||||
return input, httperrors.NewNotSupportedError("%s rds Support up to %d security groups", driver.GetProvider(), secCount)
|
||||
}
|
||||
for i := range input.SecgroupIds {
|
||||
_, err := validators.ValidateModel(userCred, SecurityGroupManager, &input.SecgroupIds[i])
|
||||
_, err := validators.ValidateModel(ctx, userCred, SecurityGroupManager, &input.SecgroupIds[i])
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -583,7 +583,7 @@ func (manager *SDBInstanceManager) FetchCustomizeColumns(
|
||||
log.Errorf("FetchCheckQueryOwnerScope error: %v", err)
|
||||
return rows
|
||||
}
|
||||
secgroups := SecurityGroupManager.FilterByOwner(q, SecurityGroupManager, userCred, ownerId, queryScope).SubQuery()
|
||||
secgroups := SecurityGroupManager.FilterByOwner(ctx, q, SecurityGroupManager, userCred, ownerId, queryScope).SubQuery()
|
||||
rdssecgroups := DBInstanceSecgroupManager.Query().SubQuery()
|
||||
|
||||
secQ := rdssecgroups.Query(rdssecgroups.Field("dbinstance_id"), rdssecgroups.Field("secgroup_id"), secgroups.Field("name").Label("secgroup_name")).Join(secgroups, sqlchemy.Equals(rdssecgroups.Field("secgroup_id"), secgroups.Field("id"))).Filter(sqlchemy.In(rdssecgroups.Field("dbinstance_id"), rdsIds))
|
||||
@@ -864,7 +864,7 @@ func (self *SDBInstance) PerformRecovery(ctx context.Context, userCred mcclient.
|
||||
return nil, httperrors.NewInvalidStatusError("Cannot do recovery dbinstance in status %s required status %s", self.Status, api.DBINSTANCE_RUNNING)
|
||||
}
|
||||
|
||||
_backup, err := DBInstanceBackupManager.FetchByIdOrName(userCred, input.DBInstancebackupId)
|
||||
_backup, err := DBInstanceBackupManager.FetchByIdOrName(ctx, userCred, input.DBInstancebackupId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("dbinstancebackup", input.DBInstancebackupId)
|
||||
@@ -1880,6 +1880,7 @@ type SRdsCountStat struct {
|
||||
}
|
||||
|
||||
func (man *SDBInstanceManager) TotalCount(
|
||||
ctx context.Context,
|
||||
scope rbacscope.TRbacScope,
|
||||
ownerId mcclient.IIdentityProvider,
|
||||
rangeObjs []db.IStandaloneModel,
|
||||
@@ -1890,7 +1891,7 @@ func (man *SDBInstanceManager) TotalCount(
|
||||
dbq = scopeOwnerIdFilter(dbq, scope, ownerId)
|
||||
dbq = CloudProviderFilter(dbq, dbq.Field("manager_id"), providers, brands, cloudEnv)
|
||||
dbq = RangeObjectsFilter(dbq, rangeObjs, dbq.Field("cloudregion_id"), nil, dbq.Field("manager_id"), nil, nil)
|
||||
dbq = db.ObjectIdQueryWithPolicyResult(dbq, man, policyResult)
|
||||
dbq = db.ObjectIdQueryWithPolicyResult(ctx, dbq, man, policyResult)
|
||||
|
||||
sq := dbq.SubQuery()
|
||||
|
||||
@@ -2130,7 +2131,7 @@ func (self *SDBInstance) PerformSetSecgroup(ctx context.Context, userCred mcclie
|
||||
return nil, httperrors.NewMissingParameterError("secgroup_ids")
|
||||
}
|
||||
for i := range input.SecgroupIds {
|
||||
_, err := validators.ValidateModel(userCred, SecurityGroupManager, &input.SecgroupIds[i])
|
||||
_, err := validators.ValidateModel(ctx, userCred, SecurityGroupManager, &input.SecgroupIds[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -235,7 +235,7 @@ func (dm *SDiskBackupManager) ValidateCreateData(
|
||||
return input, httperrors.NewMissingParameterError("backup_storage_id")
|
||||
}
|
||||
// check disk
|
||||
_disk, err := validators.ValidateModel(userCred, DiskManager, &input.DiskId)
|
||||
_disk, err := validators.ValidateModel(ctx, userCred, DiskManager, &input.DiskId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -251,7 +251,7 @@ func (dm *SDiskBackupManager) ValidateCreateData(
|
||||
}
|
||||
}
|
||||
|
||||
ibs, err := BackupStorageManager.FetchByIdOrName(userCred, input.BackupStorageId)
|
||||
ibs, err := BackupStorageManager.FetchByIdOrName(ctx, userCred, input.BackupStorageId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return input, httperrors.NewResourceNotFoundError2(BackupStorageManager.Keyword(), input.BackupStorageId)
|
||||
|
||||
@@ -39,8 +39,8 @@ type SDiskResourceBaseManager struct {
|
||||
SStorageResourceBaseManager
|
||||
}
|
||||
|
||||
func ValidateDiskResourceInput(userCred mcclient.TokenCredential, input api.DiskResourceInput) (*SDisk, api.DiskResourceInput, error) {
|
||||
diskObj, err := DiskManager.FetchByIdOrName(userCred, input.DiskId)
|
||||
func ValidateDiskResourceInput(ctx context.Context, userCred mcclient.TokenCredential, input api.DiskResourceInput) (*SDisk, api.DiskResourceInput, error) {
|
||||
diskObj, err := DiskManager.FetchByIdOrName(ctx, userCred, input.DiskId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, input, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", DiskManager.Keyword(), input.DiskId)
|
||||
@@ -135,7 +135,7 @@ func (manager *SDiskResourceBaseManager) ListItemFilter(
|
||||
) (*sqlchemy.SQuery, error) {
|
||||
var err error
|
||||
if len(query.DiskId) > 0 {
|
||||
diskObj, _, err := ValidateDiskResourceInput(userCred, query.DiskResourceInput)
|
||||
diskObj, _, err := ValidateDiskResourceInput(ctx, userCred, query.DiskResourceInput)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "ValidateDiskResourceInput")
|
||||
}
|
||||
|
||||
+18
-18
@@ -206,7 +206,7 @@ func (manager *SDiskManager) ListItemFilter(
|
||||
|
||||
guestId := query.ServerId
|
||||
if len(guestId) > 0 {
|
||||
server, err := validators.ValidateModel(userCred, GuestManager, &guestId)
|
||||
server, err := validators.ValidateModel(ctx, userCred, GuestManager, &guestId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -223,7 +223,7 @@ func (manager *SDiskManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.SnapshotpolicyId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, SnapshotPolicyManager, &query.SnapshotpolicyId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, SnapshotPolicyManager, &query.SnapshotpolicyId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -252,7 +252,7 @@ func (manager *SDiskManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.SnapshotId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, SnapshotManager, &query.SnapshotId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, SnapshotManager, &query.SnapshotId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -504,7 +504,7 @@ func (manager *SDiskManager) ValidateCreateData(ctx context.Context, userCred mc
|
||||
storageID := input.Storage
|
||||
|
||||
if storageID != "" {
|
||||
storageObj, err := StorageManager.FetchByIdOrName(nil, storageID)
|
||||
storageObj, err := StorageManager.FetchByIdOrName(ctx, nil, storageID)
|
||||
if err != nil {
|
||||
return input, httperrors.NewResourceNotFoundError("Storage %s not found", storageID)
|
||||
}
|
||||
@@ -543,7 +543,7 @@ func (manager *SDiskManager) ValidateCreateData(ctx context.Context, userCred mc
|
||||
diskConfig.Backend = api.STORAGE_LOCAL
|
||||
}
|
||||
if len(input.PreferManager) > 0 {
|
||||
_manager, err := CloudproviderManager.FetchByIdOrName(userCred, input.PreferManager)
|
||||
_manager, err := CloudproviderManager.FetchByIdOrName(ctx, userCred, input.PreferManager)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return input, httperrors.NewResourceNotFoundError2("cloudprovider", input.PreferManager)
|
||||
@@ -924,7 +924,7 @@ func (self *SDisk) PerformDiskReset(ctx context.Context, userCred mcclient.Token
|
||||
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "GetMasterHost"))
|
||||
}
|
||||
|
||||
snapshotObj, err := validators.ValidateModel(userCred, SnapshotManager, &input.SnapshotId)
|
||||
snapshotObj, err := validators.ValidateModel(ctx, userCred, SnapshotManager, &input.SnapshotId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1877,17 +1877,17 @@ func totalDiskSize(
|
||||
|
||||
func parseDiskInfo(ctx context.Context, userCred mcclient.TokenCredential, info *api.DiskConfig) (*api.DiskConfig, error) {
|
||||
if info.Storage != "" {
|
||||
if err := fillDiskConfigByStorage(userCred, info, info.Storage); err != nil {
|
||||
if err := fillDiskConfigByStorage(ctx, userCred, info, info.Storage); err != nil {
|
||||
return nil, errors.Wrap(err, "fillDiskConfigByStorage")
|
||||
}
|
||||
}
|
||||
if info.DiskId != "" {
|
||||
if err := fillDiskConfigByDisk(userCred, info, info.DiskId); err != nil {
|
||||
if err := fillDiskConfigByDisk(ctx, userCred, info, info.DiskId); err != nil {
|
||||
return nil, errors.Wrap(err, "fillDiskConfigByDisk")
|
||||
}
|
||||
}
|
||||
if info.SnapshotId != "" {
|
||||
if err := fillDiskConfigBySnapshot(userCred, info, info.SnapshotId); err != nil {
|
||||
if err := fillDiskConfigBySnapshot(ctx, userCred, info, info.SnapshotId); err != nil {
|
||||
return nil, errors.Wrap(err, "fillDiskConfigBySnapshot")
|
||||
}
|
||||
}
|
||||
@@ -1923,8 +1923,8 @@ func parseDiskInfo(ctx context.Context, userCred mcclient.TokenCredential, info
|
||||
return info, nil
|
||||
}
|
||||
|
||||
func fillDiskConfigBySnapshot(userCred mcclient.TokenCredential, diskConfig *api.DiskConfig, snapshotId string) error {
|
||||
iSnapshot, err := SnapshotManager.FetchByIdOrName(userCred, snapshotId)
|
||||
func fillDiskConfigBySnapshot(ctx context.Context, userCred mcclient.TokenCredential, diskConfig *api.DiskConfig, snapshotId string) error {
|
||||
iSnapshot, err := SnapshotManager.FetchByIdOrName(ctx, userCred, snapshotId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return httperrors.NewNotFoundError("Snapshot %s not found", snapshotId)
|
||||
@@ -1954,7 +1954,7 @@ func fillDiskConfigBySnapshot(userCred mcclient.TokenCredential, diskConfig *api
|
||||
}
|
||||
|
||||
func fillDiskConfigByBackup(ctx context.Context, userCred mcclient.TokenCredential, diskConfig *api.DiskConfig, backupId string) error {
|
||||
iBakcup, err := DiskBackupManager.FetchByIdOrName(userCred, backupId)
|
||||
iBakcup, err := DiskBackupManager.FetchByIdOrName(ctx, userCred, backupId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return httperrors.NewNotFoundError("Backup %s not found", backupId)
|
||||
@@ -2003,9 +2003,9 @@ func fillDiskConfigByImage(ctx context.Context, userCred mcclient.TokenCredentia
|
||||
return nil
|
||||
}
|
||||
|
||||
func fillDiskConfigByDisk(userCred mcclient.TokenCredential,
|
||||
func fillDiskConfigByDisk(ctx context.Context, userCred mcclient.TokenCredential,
|
||||
diskConfig *api.DiskConfig, diskId string) error {
|
||||
diskObj, err := DiskManager.FetchByIdOrName(userCred, diskId)
|
||||
diskObj, err := DiskManager.FetchByIdOrName(ctx, userCred, diskId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return httperrors.NewResourceNotFoundError2("disk", diskId)
|
||||
@@ -2047,9 +2047,9 @@ func fillDiskConfigByDisk(userCred mcclient.TokenCredential,
|
||||
return nil
|
||||
}
|
||||
|
||||
func fillDiskConfigByStorage(userCred mcclient.TokenCredential,
|
||||
func fillDiskConfigByStorage(ctx context.Context, userCred mcclient.TokenCredential,
|
||||
diskConfig *api.DiskConfig, storageId string) error {
|
||||
storageObj, err := StorageManager.FetchByIdOrName(userCred, storageId)
|
||||
storageObj, err := StorageManager.FetchByIdOrName(ctx, userCred, storageId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return httperrors.NewResourceNotFoundError2("storage", storageId)
|
||||
@@ -3017,7 +3017,7 @@ func (disk *SDisk) PerformBindSnapshotpolicy(
|
||||
query jsonutils.JSONObject,
|
||||
input *api.DiskSnapshotpolicyInput,
|
||||
) (jsonutils.JSONObject, error) {
|
||||
spObj, err := validators.ValidateModel(userCred, SnapshotPolicyManager, &input.SnapshotpolicyId)
|
||||
spObj, err := validators.ValidateModel(ctx, userCred, SnapshotPolicyManager, &input.SnapshotpolicyId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -3047,7 +3047,7 @@ func (disk *SDisk) PerformUnbindSnapshotpolicy(
|
||||
query jsonutils.JSONObject,
|
||||
input *api.DiskSnapshotpolicyInput,
|
||||
) (jsonutils.JSONObject, error) {
|
||||
spObj, err := validators.ValidateModel(userCred, SnapshotPolicyManager, &input.SnapshotpolicyId)
|
||||
spObj, err := validators.ValidateModel(ctx, userCred, SnapshotPolicyManager, &input.SnapshotpolicyId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ func (manager *SDnsRecordManager) ValidateCreateData(
|
||||
return nil, httperrors.NewInputParameterError("invalid record name %s", input.Name)
|
||||
}
|
||||
|
||||
_, err = validators.ValidateModel(userCred, DnsZoneManager, &input.DnsZoneId)
|
||||
_, err = validators.ValidateModel(ctx, userCred, DnsZoneManager, &input.DnsZoneId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -289,9 +289,9 @@ func (manager *SDnsRecordManager) FetchOwnerId(ctx context.Context, data jsonuti
|
||||
return db.FetchDomainInfo(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SDnsRecordManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func (manager *SDnsRecordManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
sq := DnsZoneManager.Query("id")
|
||||
sq = db.SharableManagerFilterByOwner(DnsZoneManager, sq, userCred, owner, scope)
|
||||
sq = db.SharableManagerFilterByOwner(ctx, DnsZoneManager, sq, userCred, owner, scope)
|
||||
return q.In("dns_zone_id", sq.SubQuery())
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ func (manager *SDnsZoneResourceBaseManager) ListItemFilter(
|
||||
query api.DnsZoneFilterListBase,
|
||||
) (*sqlchemy.SQuery, error) {
|
||||
if len(query.DnsZoneId) > 0 {
|
||||
_, err := validators.ValidateModel(userCred, DnsZoneManager, &query.DnsZoneId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, DnsZoneManager, &query.DnsZoneId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ func (manager *SDnsZoneManager) ValidateCreateData(
|
||||
}
|
||||
var provider *SCloudprovider = nil
|
||||
if len(input.CloudproviderId) > 0 {
|
||||
providerObj, err := validators.ValidateModel(userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
providerObj, err := validators.ValidateModel(ctx, userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -108,7 +108,7 @@ func (manager *SDnsZoneManager) ValidateCreateData(
|
||||
case cloudprovider.PrivateZone:
|
||||
vpcIds := []string{}
|
||||
for i := range input.VpcIds {
|
||||
vpcObj, err := validators.ValidateModel(userCred, VpcManager, &input.VpcIds[i])
|
||||
vpcObj, err := validators.ValidateModel(ctx, userCred, VpcManager, &input.VpcIds[i])
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -231,7 +231,7 @@ func (manager *SDnsZoneManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if len(query.VpcId) > 0 {
|
||||
vpc, err := VpcManager.FetchByIdOrName(userCred, query.VpcId)
|
||||
vpc, err := VpcManager.FetchByIdOrName(ctx, userCred, query.VpcId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("vpc", query.VpcId)
|
||||
@@ -572,7 +572,7 @@ func (self *SDnsZone) PerformAddVpcs(ctx context.Context, userCred mcclient.Toke
|
||||
}
|
||||
|
||||
for i := range input.VpcIds {
|
||||
vpcObj, err := validators.ValidateModel(userCred, VpcManager, &input.VpcIds[i])
|
||||
vpcObj, err := validators.ValidateModel(ctx, userCred, VpcManager, &input.VpcIds[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ type SDynamicschedtag struct {
|
||||
Enabled tristate.TriState `default:"true" create:"optional" list:"user" update:"user"`
|
||||
}
|
||||
|
||||
func validateDynamicSchedtagInputData(data *jsonutils.JSONDict, create bool) error {
|
||||
func validateDynamicSchedtagInputData(ctx context.Context, data *jsonutils.JSONDict, create bool) error {
|
||||
condStr := jsonutils.GetAnyString(data, []string{"condition"})
|
||||
if len(condStr) == 0 && create {
|
||||
return httperrors.NewMissingParameterError("condition")
|
||||
@@ -127,7 +127,7 @@ func validateDynamicSchedtagInputData(data *jsonutils.JSONDict, create bool) err
|
||||
return httperrors.NewMissingParameterError("schedtag_id")
|
||||
}
|
||||
if len(schedStr) > 0 {
|
||||
schedObj, err := SchedtagManager.FetchByIdOrName(nil, schedStr)
|
||||
schedObj, err := SchedtagManager.FetchByIdOrName(ctx, nil, schedStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return httperrors.NewResourceNotFoundError("schedtag %s not found", schedStr)
|
||||
@@ -144,7 +144,7 @@ func validateDynamicSchedtagInputData(data *jsonutils.JSONDict, create bool) err
|
||||
}
|
||||
|
||||
func (manager *SDynamicschedtagManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
|
||||
err := validateDynamicSchedtagInputData(data, true)
|
||||
err := validateDynamicSchedtagInputData(ctx, data, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -162,7 +162,7 @@ func (manager *SDynamicschedtagManager) ValidateCreateData(ctx context.Context,
|
||||
}
|
||||
|
||||
func (self *SDynamicschedtag) ValidateUpdateData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
|
||||
err := validateDynamicSchedtagInputData(data, false)
|
||||
err := validateDynamicSchedtagInputData(ctx, data, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -236,11 +236,11 @@ func (self *SDynamicschedtag) PerformEvaluate(ctx context.Context, userCred mccl
|
||||
return nil, httperrors.NewResourceNotFoundError("Virtual resource type %s not support", virtType)
|
||||
}
|
||||
|
||||
object, err := FetchDynamicResourceObject(objectMan, userCred, objectId)
|
||||
object, err := FetchDynamicResourceObject(ctx, objectMan, userCred, objectId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
virtObject, err := FetchDynamicResourceObject(virtObjectMan, userCred, virtObjId)
|
||||
virtObject, err := FetchDynamicResourceObject(ctx, virtObjectMan, userCred, virtObjId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -271,8 +271,8 @@ func (self *SDynamicschedtag) PerformEvaluate(ctx context.Context, userCred mccl
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func FetchDynamicResourceObject(man IDynamicResourceManager, userCred mcclient.TokenCredential, idOrName string) (IDynamicResource, error) {
|
||||
obj, err := man.FetchByIdOrName(userCred, idOrName)
|
||||
func FetchDynamicResourceObject(ctx context.Context, man IDynamicResourceManager, userCred mcclient.TokenCredential, idOrName string) (IDynamicResource, error) {
|
||||
obj, err := man.FetchByIdOrName(ctx, userCred, idOrName)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError("%s %s not found", man.Keyword(), idOrName)
|
||||
|
||||
@@ -330,6 +330,7 @@ type SEsCountStat struct {
|
||||
}
|
||||
|
||||
func (man *SElasticSearchManager) TotalCount(
|
||||
ctx context.Context,
|
||||
scope rbacscope.TRbacScope,
|
||||
ownerId mcclient.IIdentityProvider,
|
||||
rangeObjs []db.IStandaloneModel,
|
||||
@@ -340,7 +341,7 @@ func (man *SElasticSearchManager) TotalCount(
|
||||
esq = scopeOwnerIdFilter(esq, scope, ownerId)
|
||||
esq = CloudProviderFilter(esq, esq.Field("manager_id"), providers, brands, cloudEnv)
|
||||
esq = RangeObjectsFilter(esq, rangeObjs, esq.Field("cloudregion_id"), nil, esq.Field("manager_id"), nil, nil)
|
||||
esq = db.ObjectIdQueryWithPolicyResult(esq, man, policyResult)
|
||||
esq = db.ObjectIdQueryWithPolicyResult(ctx, esq, man, policyResult)
|
||||
|
||||
sq := esq.SubQuery()
|
||||
q := sq.Query(sqlchemy.COUNT("total_es_count"),
|
||||
|
||||
@@ -205,8 +205,8 @@ func (manager *SElasticcacheAccountManager) FetchOwnerId(ctx context.Context, da
|
||||
return elasticcacheSubResourceFetchOwnerId(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheAccountManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(q, ownerId, scope)
|
||||
func (manager *SElasticcacheAccountManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(ctx, q, ownerId, scope)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheAccountManager) FilterByUniqValues(q *sqlchemy.SQuery, values jsonutils.JSONObject) *sqlchemy.SQuery {
|
||||
@@ -220,7 +220,7 @@ func (manager *SElasticcacheAccountManager) FilterByUniqValues(q *sqlchemy.SQuer
|
||||
func (manager *SElasticcacheAccountManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
|
||||
var region *SCloudregion
|
||||
if id, _ := data.GetString("elasticcache"); len(id) > 0 {
|
||||
ec, err := db.FetchByIdOrName(ElasticcacheManager, userCred, id)
|
||||
ec, err := db.FetchByIdOrName(ctx, ElasticcacheManager, userCred, id)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting elastic cache instance failed")
|
||||
}
|
||||
@@ -475,7 +475,7 @@ func (self *SElasticcacheAccount) ValidatorResetPasswordData(ctx context.Context
|
||||
}
|
||||
|
||||
privilegeV := validators.NewStringChoicesValidator("account_privilege", choices.NewChoices(api.ELASTIC_CACHE_ACCOUNT_PRIVILEGE_READ, api.ELASTIC_CACHE_ACCOUNT_PRIVILEGE_WRITE, api.ELASTIC_CACHE_ACCOUNT_PRIVILEGE_REPL)).Optional(true)
|
||||
if err := privilegeV.Validate(data.(*jsonutils.JSONDict)); err != nil {
|
||||
if err := privilegeV.Validate(ctx, data.(*jsonutils.JSONDict)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return data, nil
|
||||
|
||||
@@ -184,8 +184,8 @@ func (manager *SElasticcacheAclManager) FetchOwnerId(ctx context.Context, data j
|
||||
return elasticcacheSubResourceFetchOwnerId(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheAclManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(q, ownerId, scope)
|
||||
func (manager *SElasticcacheAclManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(ctx, q, ownerId, scope)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheAclManager) FilterByUniqValues(q *sqlchemy.SQuery, values jsonutils.JSONObject) *sqlchemy.SQuery {
|
||||
@@ -199,7 +199,7 @@ func (manager *SElasticcacheAclManager) FilterByUniqValues(q *sqlchemy.SQuery, v
|
||||
func (manager *SElasticcacheAclManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
|
||||
var region *SCloudregion
|
||||
if id, _ := data.GetString("elasticcache"); len(id) > 0 {
|
||||
ec, err := db.FetchByIdOrName(ElasticcacheManager, userCred, id)
|
||||
ec, err := db.FetchByIdOrName(ctx, ElasticcacheManager, userCred, id)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting elastic cache instance failed")
|
||||
}
|
||||
@@ -271,11 +271,11 @@ func (self *SElasticcacheAcl) ValidateUpdateData(ctx context.Context, userCred m
|
||||
params := jsonutils.NewDict()
|
||||
params.Set("ip", jsonutils.NewString(ip))
|
||||
if strings.Contains(ip, "/") {
|
||||
if err := cidrV.Validate(params); err != nil {
|
||||
if err := cidrV.Validate(ctx, params); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
if err := ipV.Validate(params); err != nil {
|
||||
if err := ipV.Validate(ctx, params); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,8 +212,8 @@ func (manager *SElasticcacheBackupManager) FetchOwnerId(ctx context.Context, dat
|
||||
return elasticcacheSubResourceFetchOwnerId(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheBackupManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(q, ownerId, scope)
|
||||
func (manager *SElasticcacheBackupManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(ctx, q, ownerId, scope)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheBackupManager) FilterByUniqValues(q *sqlchemy.SQuery, values jsonutils.JSONObject) *sqlchemy.SQuery {
|
||||
@@ -228,7 +228,7 @@ func (manager *SElasticcacheBackupManager) ValidateCreateData(ctx context.Contex
|
||||
var region *SCloudregion
|
||||
var ec *SElasticcache
|
||||
if id, _ := data.GetString("elasticcache"); len(id) > 0 {
|
||||
_ec, err := db.FetchByIdOrName(ElasticcacheManager, userCred, id)
|
||||
_ec, err := db.FetchByIdOrName(ctx, ElasticcacheManager, userCred, id)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting elastic cache instance failed")
|
||||
}
|
||||
@@ -281,7 +281,7 @@ func (self *SElasticcacheBackup) StartElasticcacheBackupCreateTask(ctx context.C
|
||||
}
|
||||
|
||||
func (self *SElasticcacheBackup) ValidatorRestoreInstanceData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
ec, err := db.FetchByIdOrName(ElasticcacheManager, userCred, self.ElasticcacheId)
|
||||
ec, err := db.FetchByIdOrName(ctx, ElasticcacheManager, userCred, self.ElasticcacheId)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting elastic cache instance failed")
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ func elasticcacheSubResourceFetchOwnerId(ctx context.Context, data jsonutils.JSO
|
||||
parentId := jsonutils.GetAnyString(data, []string{"elasticcache_id", "elasticcache"})
|
||||
if len(parentId) > 0 {
|
||||
userCred := policy.FetchUserCredential(ctx)
|
||||
ec, err := db.FetchByIdOrName(ElasticcacheManager, userCred, parentId)
|
||||
ec, err := db.FetchByIdOrName(ctx, ElasticcacheManager, userCred, parentId)
|
||||
if err != nil {
|
||||
log.Errorf("elasticcache sub resource FetchOwnerId %s", err)
|
||||
return nil, nil
|
||||
@@ -179,7 +179,7 @@ func elasticcacheSubResourceFetchOwnerId(ctx context.Context, data jsonutils.JSO
|
||||
}
|
||||
|
||||
// elastic cache 子资源获取owner query
|
||||
func elasticcacheSubResourceFetchOwner(q *sqlchemy.SQuery, userCred mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
func elasticcacheSubResourceFetchOwner(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
if userCred != nil {
|
||||
var subq *sqlchemy.SSubQuery
|
||||
|
||||
@@ -817,7 +817,7 @@ func (manager *SElasticcacheManager) validateCreateData(ctx context.Context, use
|
||||
if len(input.NetworkId) == 0 {
|
||||
return nil, httperrors.NewMissingParameterError("network_id")
|
||||
}
|
||||
networkObj, err := validators.ValidateModel(userCred, NetworkManager, &input.NetworkId)
|
||||
networkObj, err := validators.ValidateModel(ctx, userCred, NetworkManager, &input.NetworkId)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting network failed")
|
||||
}
|
||||
@@ -829,7 +829,7 @@ func (manager *SElasticcacheManager) validateCreateData(ctx context.Context, use
|
||||
if len(wire.ZoneId) > 0 {
|
||||
input.ZoneId = wire.ZoneId
|
||||
}
|
||||
_, err = validators.ValidateModel(userCred, ZoneManager, &input.ZoneId)
|
||||
_, err = validators.ValidateModel(ctx, userCred, ZoneManager, &input.ZoneId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -845,7 +845,7 @@ func (manager *SElasticcacheManager) validateCreateData(ctx context.Context, use
|
||||
input.CloudregionId = region.Id
|
||||
provider := vpc.GetCloudprovider()
|
||||
input.ManagerId = provider.Id
|
||||
skuObj, err := validators.ValidateModel(userCred, ElasticcacheSkuManager, &input.InstanceType)
|
||||
skuObj, err := validators.ValidateModel(ctx, userCred, ElasticcacheSkuManager, &input.InstanceType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -868,7 +868,7 @@ func (manager *SElasticcacheManager) validateCreateData(ctx context.Context, use
|
||||
}
|
||||
|
||||
for i := range input.SecgroupIds {
|
||||
_, err = validators.ValidateModel(userCred, SecurityGroupManager, &input.SecgroupIds[i])
|
||||
_, err = validators.ValidateModel(ctx, userCred, SecurityGroupManager, &input.SecgroupIds[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1021,7 +1021,7 @@ func (self *SElasticcache) StartDeleteElasticcacheTask(ctx context.Context, user
|
||||
|
||||
func (self *SElasticcache) ValidatorChangeSpecData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
skuV := validators.NewModelIdOrNameValidator("sku", "elasticcachesku", self.GetOwnerId())
|
||||
if err := skuV.Optional(false).Validate(data.(*jsonutils.JSONDict)); err != nil {
|
||||
if err := skuV.Optional(false).Validate(ctx, data.(*jsonutils.JSONDict)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1088,7 +1088,7 @@ func (self *SElasticcache) ValidatorUpdateAuthModeData(ctx context.Context, user
|
||||
}
|
||||
|
||||
authModeV := validators.NewStringChoicesValidator("auth_mode", choices.NewChoices("on", "off"))
|
||||
if err := authModeV.Optional(false).Validate(data.(*jsonutils.JSONDict)); err != nil {
|
||||
if err := authModeV.Optional(false).Validate(ctx, data.(*jsonutils.JSONDict)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1192,7 +1192,7 @@ func (self *SElasticcache) ValidatorSetMaintainTimeData(ctx context.Context, use
|
||||
}
|
||||
|
||||
for _, v := range keyV {
|
||||
if err := v.Validate(data.(*jsonutils.JSONDict)); err != nil {
|
||||
if err := v.Validate(ctx, data.(*jsonutils.JSONDict)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -1236,7 +1236,7 @@ func (self *SElasticcache) ValidatorAllocatePublicConnectionData(ctx context.Con
|
||||
|
||||
portV := validators.NewRangeValidator("port", 1024, 65535)
|
||||
portV.Default(6379).Optional(true)
|
||||
if err := portV.Validate(data.(*jsonutils.JSONDict)); err != nil {
|
||||
if err := portV.Validate(ctx, data.(*jsonutils.JSONDict)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1361,7 +1361,7 @@ func (self *SElasticcache) ValidatorUpdateBackupPolicyData(ctx context.Context,
|
||||
}
|
||||
|
||||
for _, v := range keyV {
|
||||
if err := v.Validate(data.(*jsonutils.JSONDict)); err != nil {
|
||||
if err := v.Validate(ctx, data.(*jsonutils.JSONDict)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@@ -1479,6 +1479,7 @@ func (self *SElasticcache) DeleteSubResources(ctx context.Context, userCred mccl
|
||||
}
|
||||
|
||||
func (man *SElasticcacheManager) TotalCount(
|
||||
ctx context.Context,
|
||||
scope rbacscope.TRbacScope,
|
||||
ownerId mcclient.IIdentityProvider,
|
||||
rangeObjs []db.IStandaloneModel,
|
||||
@@ -1486,7 +1487,7 @@ func (man *SElasticcacheManager) TotalCount(
|
||||
policyResult rbacutils.SPolicyResult,
|
||||
) (int, error) {
|
||||
q := man.Query()
|
||||
q = db.ObjectIdQueryWithPolicyResult(q, man, policyResult)
|
||||
q = db.ObjectIdQueryWithPolicyResult(ctx, q, man, policyResult)
|
||||
vpcs := VpcManager.Query().SubQuery()
|
||||
q = q.Join(vpcs, sqlchemy.Equals(q.Field("vpc_id"), vpcs.Field("id")))
|
||||
q = scopeOwnerIdFilter(q, scope, ownerId)
|
||||
@@ -1827,7 +1828,7 @@ func (self *SElasticcache) validateSecgroupInput(secgroups []string) error {
|
||||
|
||||
func (self *SElasticcache) checkingSecgroupIds(ctx context.Context, userCred mcclient.TokenCredential, secgroupIds []string) ([]string, error) {
|
||||
for i := range secgroupIds {
|
||||
_, err := validators.ValidateModel(userCred, SecurityGroupManager, &secgroupIds[i])
|
||||
_, err := validators.ValidateModel(ctx, userCred, SecurityGroupManager, &secgroupIds[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -191,8 +191,8 @@ func (manager *SElasticcacheParameterManager) FetchOwnerId(ctx context.Context,
|
||||
return elasticcacheSubResourceFetchOwnerId(ctx, data)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheParameterManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(q, ownerId, scope)
|
||||
func (manager *SElasticcacheParameterManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery {
|
||||
return elasticcacheSubResourceFetchOwner(ctx, q, ownerId, scope)
|
||||
}
|
||||
|
||||
func (self *SElasticcacheParameter) GetOwnerId() mcclient.IIdentityProvider {
|
||||
|
||||
@@ -641,7 +641,7 @@ func (manager *SElasticcacheSkuManager) PerformActionSync(ctx context.Context, u
|
||||
}
|
||||
|
||||
for _, v := range keyV {
|
||||
if err := v.Validate(data); err != nil {
|
||||
if err := v.Validate(ctx, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ type SElasticcacheResourceBaseManager struct {
|
||||
SZoneResourceBaseManager
|
||||
}
|
||||
|
||||
func ValidateElasticcacheResourceInput(userCred mcclient.TokenCredential, input api.ELasticcacheResourceInput) (*SElasticcache, api.ELasticcacheResourceInput, error) {
|
||||
cacheObj, err := ElasticcacheManager.FetchByIdOrName(userCred, input.ElasticcacheId)
|
||||
func ValidateElasticcacheResourceInput(ctx context.Context, userCred mcclient.TokenCredential, input api.ELasticcacheResourceInput) (*SElasticcache, api.ELasticcacheResourceInput, error) {
|
||||
cacheObj, err := ElasticcacheManager.FetchByIdOrName(ctx, userCred, input.ElasticcacheId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, input, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", ElasticcacheManager.Keyword(), input.ElasticcacheId)
|
||||
@@ -137,7 +137,7 @@ func (manager *SElasticcacheResourceBaseManager) ListItemFilter(
|
||||
query api.ElasticcacheFilterListInput,
|
||||
) (*sqlchemy.SQuery, error) {
|
||||
if len(query.ElasticcacheId) > 0 {
|
||||
dbObj, _, err := ValidateElasticcacheResourceInput(userCred, query.ELasticcacheResourceInput)
|
||||
dbObj, _, err := ValidateElasticcacheResourceInput(ctx, userCred, query.ELasticcacheResourceInput)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "ValidateElasticcacheResourceInput")
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ func (manager *SElasticipManager) ListItemFilter(
|
||||
q = q.Equals("status", api.EIP_STATUS_READY)
|
||||
switch associateType {
|
||||
case api.EIP_ASSOCIATE_TYPE_SERVER:
|
||||
serverObj, err := GuestManager.FetchByIdOrName(userCred, associateId)
|
||||
serverObj, err := GuestManager.FetchByIdOrName(ctx, userCred, associateId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError("server %s not found", associateId)
|
||||
@@ -181,7 +181,7 @@ func (manager *SElasticipManager) ListItemFilter(
|
||||
q = q.IsNullOrEmpty("manager_id")
|
||||
}
|
||||
case api.EIP_ASSOCIATE_TYPE_INSTANCE_GROUP:
|
||||
groupObj, err := GroupManager.FetchByIdOrName(userCred, associateId)
|
||||
groupObj, err := GroupManager.FetchByIdOrName(ctx, userCred, associateId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(GroupManager.Keyword(), associateId)
|
||||
@@ -207,7 +207,7 @@ func (manager *SElasticipManager) ListItemFilter(
|
||||
q = q.Filter(sqlchemy.NotEquals(q.Field("network_id"), net.Id))
|
||||
q = q.IsNullOrEmpty("manager_id")
|
||||
case api.EIP_ASSOCIATE_TYPE_NAT_GATEWAY:
|
||||
_nat, err := validators.ValidateModel(userCred, NatGatewayManager, &query.UsableEipForAssociateId)
|
||||
_nat, err := validators.ValidateModel(ctx, userCred, NatGatewayManager, &query.UsableEipForAssociateId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -227,7 +227,7 @@ func (manager *SElasticipManager) ListItemFilter(
|
||||
),
|
||||
)
|
||||
case api.EIP_ASSOCIATE_TYPE_LOADBALANCER:
|
||||
_lb, err := validators.ValidateModel(userCred, LoadbalancerManager, &query.UsableEipForAssociateId)
|
||||
_lb, err := validators.ValidateModel(ctx, userCred, LoadbalancerManager, &query.UsableEipForAssociateId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -969,7 +969,7 @@ func (manager *SElasticipManager) ValidateCreateData(ctx context.Context, userCr
|
||||
if input.CloudregionId == "" {
|
||||
input.CloudregionId = api.DEFAULT_REGION_ID
|
||||
}
|
||||
obj, err := CloudregionManager.FetchByIdOrName(nil, input.CloudregionId)
|
||||
obj, err := CloudregionManager.FetchByIdOrName(ctx, nil, input.CloudregionId)
|
||||
if err != nil {
|
||||
if err != sql.ErrNoRows {
|
||||
return input, httperrors.NewGeneralError(err)
|
||||
@@ -1005,7 +1005,7 @@ func (manager *SElasticipManager) ValidateCreateData(ctx context.Context, userCr
|
||||
|
||||
var provider *SCloudprovider = nil
|
||||
if input.ManagerId != "" {
|
||||
providerObj, err := CloudproviderManager.FetchByIdOrName(nil, input.ManagerId)
|
||||
providerObj, err := CloudproviderManager.FetchByIdOrName(ctx, nil, input.ManagerId)
|
||||
if err != nil {
|
||||
if err != sql.ErrNoRows {
|
||||
return input, httperrors.NewGeneralError(err)
|
||||
@@ -1128,7 +1128,7 @@ func (self *SElasticip) PerformAssociate(ctx context.Context, userCred mcclient.
|
||||
|
||||
switch input.InstanceType {
|
||||
case api.EIP_ASSOCIATE_TYPE_SERVER:
|
||||
vmObj, err := GuestManager.FetchByIdOrName(userCred, input.InstanceId)
|
||||
vmObj, err := GuestManager.FetchByIdOrName(ctx, userCred, input.InstanceId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return input, httperrors.NewResourceNotFoundError("server %s not found", input.InstanceId)
|
||||
@@ -1201,7 +1201,7 @@ func (self *SElasticip) PerformAssociate(ctx context.Context, userCred mcclient.
|
||||
}
|
||||
input.InstanceExternalId = server.ExternalId
|
||||
case api.EIP_ASSOCIATE_TYPE_INSTANCE_GROUP:
|
||||
grpObj, err := GroupManager.FetchByIdOrName(userCred, input.InstanceId)
|
||||
grpObj, err := GroupManager.FetchByIdOrName(ctx, userCred, input.InstanceId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return input, httperrors.NewResourceNotFoundError("instance group %s not found", input.InstanceId)
|
||||
@@ -1230,7 +1230,7 @@ func (self *SElasticip) PerformAssociate(ctx context.Context, userCred mcclient.
|
||||
}
|
||||
|
||||
case api.EIP_ASSOCIATE_TYPE_NAT_GATEWAY:
|
||||
natgwObj, err := NatGatewayManager.FetchByIdOrName(userCred, input.InstanceId)
|
||||
natgwObj, err := NatGatewayManager.FetchByIdOrName(ctx, userCred, input.InstanceId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return input, httperrors.NewResourceNotFoundError("nat gateway %s not found", input.InstanceId)
|
||||
@@ -1242,7 +1242,7 @@ func (self *SElasticip) PerformAssociate(ctx context.Context, userCred mcclient.
|
||||
lockman.LockObject(ctx, natgw)
|
||||
defer lockman.ReleaseObject(ctx, natgw)
|
||||
case api.EIP_ASSOCIATE_TYPE_LOADBALANCER:
|
||||
obj, err := LoadbalancerManager.FetchByIdOrName(userCred, input.InstanceId)
|
||||
obj, err := LoadbalancerManager.FetchByIdOrName(ctx, userCred, input.InstanceId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return input, httperrors.NewResourceNotFoundError("loadbalancer %s not found", input.InstanceId)
|
||||
@@ -1660,7 +1660,7 @@ func (manager *SElasticipManager) NewEipForVMOnHost(ctx context.Context, userCre
|
||||
|
||||
wireq := WireManager.Query().SubQuery()
|
||||
scope, _ := policy.PolicyManager.AllowScope(userCred, consts.GetServiceType(), NetworkManager.KeywordPlural(), policy.PolicyActionList)
|
||||
q = NetworkManager.FilterByOwner(q, NetworkManager, userCred, userCred, scope)
|
||||
q = NetworkManager.FilterByOwner(ctx, q, NetworkManager, userCred, userCred, scope)
|
||||
q = q.Join(wireq, sqlchemy.Equals(wireq.Field("id"), q.Field("wire_id"))).
|
||||
Filter(sqlchemy.Equals(wireq.Field("zone_id"), zoneId))
|
||||
|
||||
@@ -1842,7 +1842,9 @@ func (manager *SElasticipManager) usageQByRanges(q *sqlchemy.SQuery, rangeObjs [
|
||||
return RangeObjectsFilter(q, rangeObjs, q.Field("cloudregion_id"), nil, q.Field("manager_id"), nil, nil)
|
||||
}
|
||||
|
||||
func (manager *SElasticipManager) usageQ(scope rbacscope.TRbacScope, ownerId mcclient.IIdentityProvider, q *sqlchemy.SQuery, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string, policyResult rbacutils.SPolicyResult) *sqlchemy.SQuery {
|
||||
func (manager *SElasticipManager) usageQ(
|
||||
ctx context.Context,
|
||||
scope rbacscope.TRbacScope, ownerId mcclient.IIdentityProvider, q *sqlchemy.SQuery, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string, policyResult rbacutils.SPolicyResult) *sqlchemy.SQuery {
|
||||
q = manager.usageQByRanges(q, rangeObjs)
|
||||
q = manager.usageQByCloudEnv(q, providers, brands, cloudEnv)
|
||||
switch scope {
|
||||
@@ -1853,29 +1855,31 @@ func (manager *SElasticipManager) usageQ(scope rbacscope.TRbacScope, ownerId mcc
|
||||
case rbacscope.ScopeProject:
|
||||
q = q.Equals("tenant_id", ownerId.GetProjectId())
|
||||
}
|
||||
q = db.ObjectIdQueryWithPolicyResult(q, manager, policyResult)
|
||||
q = db.ObjectIdQueryWithPolicyResult(ctx, q, manager, policyResult)
|
||||
return q
|
||||
}
|
||||
|
||||
func (manager *SElasticipManager) TotalCount(scope rbacscope.TRbacScope, ownerId mcclient.IIdentityProvider, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string, policyResult rbacutils.SPolicyResult) EipUsage {
|
||||
func (manager *SElasticipManager) TotalCount(
|
||||
ctx context.Context,
|
||||
scope rbacscope.TRbacScope, ownerId mcclient.IIdentityProvider, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string, policyResult rbacutils.SPolicyResult) EipUsage {
|
||||
usage := EipUsage{}
|
||||
q1sq := manager.Query().SubQuery()
|
||||
q1 := q1sq.Query(
|
||||
sqlchemy.COUNT("public_ip_count", q1sq.Field("id")),
|
||||
sqlchemy.SUM("public_ip_bandwidth", q1sq.Field("bandwidth")),
|
||||
).Equals("mode", api.EIP_MODE_INSTANCE_PUBLICIP)
|
||||
q1 = manager.usageQ(scope, ownerId, q1, rangeObjs, providers, brands, cloudEnv, policyResult)
|
||||
q1 = manager.usageQ(ctx, scope, ownerId, q1, rangeObjs, providers, brands, cloudEnv, policyResult)
|
||||
q2sq := manager.Query().SubQuery()
|
||||
q2 := q2sq.Query(
|
||||
sqlchemy.COUNT("eip_count", q2sq.Field("id")),
|
||||
sqlchemy.SUM("eip_bandwidth", q2sq.Field("bandwidth")),
|
||||
).Equals("mode", api.EIP_MODE_STANDALONE_EIP)
|
||||
q2 = manager.usageQ(scope, ownerId, q2, rangeObjs, providers, brands, cloudEnv, policyResult)
|
||||
q2 = manager.usageQ(ctx, scope, ownerId, q2, rangeObjs, providers, brands, cloudEnv, policyResult)
|
||||
q3sq := manager.Query().SubQuery()
|
||||
q3 := q3sq.Query(
|
||||
sqlchemy.COUNT("eip_used_count", q3sq.Field("id")),
|
||||
).Equals("mode", api.EIP_MODE_STANDALONE_EIP).IsNotEmpty("associate_type")
|
||||
q3 = manager.usageQ(scope, ownerId, q3, rangeObjs, providers, brands, cloudEnv, policyResult)
|
||||
q3 = manager.usageQ(ctx, scope, ownerId, q3, rangeObjs, providers, brands, cloudEnv, policyResult)
|
||||
|
||||
err := q1.First(&usage)
|
||||
if err != nil {
|
||||
|
||||
@@ -87,7 +87,7 @@ func (manager *SExternalProjectManager) ValidateCreateData(
|
||||
if len(input.CloudaccountId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("cloudaccount_id")
|
||||
}
|
||||
_account, err := validators.ValidateModel(userCred, CloudaccountManager, &input.CloudaccountId)
|
||||
_account, err := validators.ValidateModel(ctx, userCred, CloudaccountManager, &input.CloudaccountId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -97,7 +97,7 @@ func (manager *SExternalProjectManager) ValidateCreateData(
|
||||
if len(input.ManagerId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("manager_id")
|
||||
}
|
||||
_, err := validators.ValidateModel(userCred, CloudproviderManager, &input.ManagerId)
|
||||
_, err := validators.ValidateModel(ctx, userCred, CloudproviderManager, &input.ManagerId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -718,7 +718,7 @@ func (manager *SExternalProjectManager) ListItemFilter(
|
||||
if len(managerStr) == 0 {
|
||||
continue
|
||||
}
|
||||
providerObj, err := manager.FetchByIdOrName(userCred, managerStr)
|
||||
providerObj, err := manager.FetchByIdOrName(ctx, userCred, managerStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudproviderManager.Keyword(), managerStr)
|
||||
@@ -736,7 +736,7 @@ func (manager *SExternalProjectManager) ListItemFilter(
|
||||
if len(query.CloudaccountId) > 0 {
|
||||
accountIds := []string{}
|
||||
for _, _account := range query.CloudaccountId {
|
||||
account, err := CloudaccountManager.FetchByIdOrName(userCred, _account)
|
||||
account, err := CloudaccountManager.FetchByIdOrName(ctx, userCred, _account)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudaccount", _account)
|
||||
|
||||
@@ -133,7 +133,7 @@ func (manager *SFileSystemManager) ListItemFilter(
|
||||
func (man *SFileSystemManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input api.FileSystemCreateInput) (api.FileSystemCreateInput, error) {
|
||||
var err error
|
||||
if len(input.NetworkId) > 0 {
|
||||
net, err := validators.ValidateModel(userCred, NetworkManager, &input.NetworkId)
|
||||
net, err := validators.ValidateModel(ctx, userCred, NetworkManager, &input.NetworkId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
@@ -148,7 +148,7 @@ func (man *SFileSystemManager) ValidateCreateData(ctx context.Context, userCred
|
||||
if len(input.ZoneId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("zone_id")
|
||||
}
|
||||
_zone, err := validators.ValidateModel(userCred, ZoneManager, &input.ZoneId)
|
||||
_zone, err := validators.ValidateModel(ctx, userCred, ZoneManager, &input.ZoneId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ type SGlobalVpcResourceBase struct {
|
||||
|
||||
type SGlobalVpcResourceBaseManager struct{}
|
||||
|
||||
func ValidateGlobalvpcResourceInput(userCred mcclient.TokenCredential, input api.GlobalVpcResourceInput) (*SGlobalVpc, api.GlobalVpcResourceInput, error) {
|
||||
gvpcObj, err := GlobalVpcManager.FetchByIdOrName(userCred, input.GlobalvpcId)
|
||||
func ValidateGlobalvpcResourceInput(ctx context.Context, userCred mcclient.TokenCredential, input api.GlobalVpcResourceInput) (*SGlobalVpc, api.GlobalVpcResourceInput, error) {
|
||||
gvpcObj, err := GlobalVpcManager.FetchByIdOrName(ctx, userCred, input.GlobalvpcId)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == sql.ErrNoRows {
|
||||
return nil, input, errors.Wrapf(httperrors.ErrResourceNotFound, "%s %s", GlobalVpcManager.Keyword(), input.GlobalvpcId)
|
||||
@@ -100,7 +100,7 @@ func (manager *SGlobalVpcResourceBaseManager) ListItemFilter(
|
||||
query api.GlobalVpcResourceListInput,
|
||||
) (*sqlchemy.SQuery, error) {
|
||||
if len(query.GlobalvpcId) > 0 {
|
||||
globalVpcObj, _, err := ValidateGlobalvpcResourceInput(userCred, query.GlobalVpcResourceInput)
|
||||
globalVpcObj, _, err := ValidateGlobalvpcResourceInput(ctx, userCred, query.GlobalVpcResourceInput)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "ValidateGlobalvpcResourceInput")
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ func (manager *SGlobalVpcManager) ValidateCreateData(
|
||||
if len(input.CloudproviderId) == 0 {
|
||||
return input, httperrors.NewMissingParameterError("cloudprovider_id")
|
||||
}
|
||||
_, err = validators.ValidateModel(userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
_, err = validators.ValidateModel(ctx, userCred, CloudproviderManager, &input.CloudproviderId)
|
||||
if err != nil {
|
||||
return input, err
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user