loadbalancers: 使用ApplyModelFilters()

This commit is contained in:
Yousong Zhou
2018-12-12 08:50:57 +00:00
parent 35384160ce
commit 1a7283b847
5 changed files with 30 additions and 76 deletions
@@ -52,13 +52,11 @@ func (man *SLoadbalancerBackendGroupManager) ListItemFilter(ctx context.Context,
}
userProjId := userCred.GetProjectId()
data := query.(*jsonutils.JSONDict)
{
lbV := validators.NewModelIdOrNameValidator("loadbalancer", "loadbalancer", userProjId)
lbV.Optional(true)
q, err = lbV.QueryFilter(q, data)
if err != nil {
return nil, err
}
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
{Key: "loadbalancer", ModelKeyword: "loadbalancer", ProjectId: userProjId},
})
if err != nil {
return nil, err
}
return q, nil
}
+6 -16
View File
@@ -55,22 +55,12 @@ func (man *SLoadbalancerBackendManager) ListItemFilter(ctx context.Context, q *s
}
userProjId := userCred.GetProjectId()
data := query.(*jsonutils.JSONDict)
{
backendGroupV := validators.NewModelIdOrNameValidator("backend_group", "loadbalancerbackendgroup", userProjId)
backendGroupV.Optional(true)
q, err = backendGroupV.QueryFilter(q, data)
if err != nil {
return nil, err
}
}
{
// NOTE extend this when new backend_type was added
backendV := validators.NewModelIdOrNameValidator("backend", "server", userProjId)
backendV.Optional(true)
q, err = backendV.QueryFilter(q, data)
if err != nil {
return nil, err
}
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
{Key: "backend_group", ModelKeyword: "loadbalancerbackendgroup", ProjectId: userProjId},
{Key: "backend", ModelKeyword: "server", ProjectId: userProjId}, // NOTE extend this when new backend_type was added
})
if err != nil {
return nil, err
}
return q, nil
}
@@ -72,21 +72,12 @@ func (man *SLoadbalancerListenerRuleManager) ListItemFilter(ctx context.Context,
}
userProjId := userCred.GetProjectId()
data := query.(*jsonutils.JSONDict)
{
listenerV := validators.NewModelIdOrNameValidator("listener", "loadbalancerlistener", userProjId)
listenerV.Optional(true)
q, err = listenerV.QueryFilter(q, data)
if err != nil {
return nil, err
}
}
{
backendGroupV := validators.NewModelIdOrNameValidator("backend_group", "loadbalancerbackendgroup", userProjId)
backendGroupV.Optional(true)
q, err = backendGroupV.QueryFilter(q, data)
if err != nil {
return nil, err
}
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
{Key: "listener", ModelKeyword: "loadbalancerlistener", ProjectId: userProjId},
{Key: "backend_group", ModelKeyword: "loadbalancerbackendgroup", ProjectId: userProjId},
})
if err != nil {
return nil, err
}
return q, nil
}
+7 -23
View File
@@ -143,29 +143,13 @@ func (man *SLoadbalancerListenerManager) ListItemFilter(ctx context.Context, q *
}
userProjId := userCred.GetProjectId()
data := query.(*jsonutils.JSONDict)
{
lbV := validators.NewModelIdOrNameValidator("loadbalancer", "loadbalancer", userProjId)
lbV.Optional(true)
q, err = lbV.QueryFilter(q, data)
if err != nil {
return nil, err
}
}
{
backendGroupV := validators.NewModelIdOrNameValidator("backend_group", "loadbalancerbackendgroup", userProjId)
backendGroupV.Optional(true)
q, err = backendGroupV.QueryFilter(q, data)
if err != nil {
return nil, err
}
}
{
aclV := validators.NewModelIdOrNameValidator("acl", "loadbalanceracl", userProjId)
aclV.Optional(true)
q, err = aclV.QueryFilter(q, data)
if err != nil {
return nil, err
}
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
{Key: "loadbalancer", ModelKeyword: "loadbalancer", ProjectId: userProjId},
{Key: "backend_group", ModelKeyword: "loadbalancerbackendgroup", ProjectId: userProjId},
{Key: "acl", ModelKeyword: "loadbalanceracl", ProjectId: userProjId},
})
if err != nil {
return nil, err
}
return q, nil
}
+6 -15
View File
@@ -62,21 +62,12 @@ func (man *SLoadbalancerManager) ListItemFilter(ctx context.Context, q *sqlchemy
}
userProjId := userCred.GetProjectId()
data := query.(*jsonutils.JSONDict)
{
networkV := validators.NewModelIdOrNameValidator("network", "network", userProjId)
networkV.Optional(true)
q, err = networkV.QueryFilter(q, data)
if err != nil {
return nil, err
}
}
{
zoneV := validators.NewModelIdOrNameValidator("zone", "zone", userProjId)
zoneV.Optional(true)
q, err = zoneV.QueryFilter(q, data)
if err != nil {
return nil, err
}
q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{
{Key: "network", ModelKeyword: "network", ProjectId: userProjId},
{Key: "zone", ModelKeyword: "zone", ProjectId: userProjId},
})
if err != nil {
return nil, err
}
return q, nil
}