mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
Automatic merge from release/2.3.0 -> release/2.4.0
* commit '516c39a6144b5558505fa6669d70a8cf4ad3b496': loadbalancers: 使用ApplyModelFilters() validators: 添加ApplyModelFilters() loadbalancerlisteners: 改正update enable_http2 lbagent: 仅处理manager_id为空的API对象 gofmt
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/sqlchemy"
|
||||
)
|
||||
|
||||
type ModelFilterOptions struct {
|
||||
Key string
|
||||
ModelKeyword string
|
||||
ProjectId string
|
||||
}
|
||||
|
||||
func ApplyModelFilters(q *sqlchemy.SQuery, data *jsonutils.JSONDict, opts []*ModelFilterOptions) (*sqlchemy.SQuery, error) {
|
||||
var err error
|
||||
for _, opt := range opts {
|
||||
v := NewModelIdOrNameValidator(
|
||||
opt.Key,
|
||||
opt.ModelKeyword,
|
||||
opt.ProjectId,
|
||||
)
|
||||
v.Optional(true)
|
||||
q, err = v.QueryFilter(q, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return q, nil
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -357,7 +341,7 @@ func (lblis *SLoadbalancerListener) ValidateUpdateData(ctx context.Context, user
|
||||
|
||||
"certificate": certV,
|
||||
"tls_cipher_policy": tlsCipherPolicyV,
|
||||
"enable_http2": validators.NewBoolValidator("enable_http2").Default(true),
|
||||
"enable_http2": validators.NewBoolValidator("enable_http2"),
|
||||
}
|
||||
for _, v := range keyV {
|
||||
v.Optional(true)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -88,7 +88,10 @@ func GetModels(opts *GetModelsOptions) error {
|
||||
listOptions := options.BaseListOptions{
|
||||
Admin: options.Bool(true),
|
||||
Details: options.Bool(true),
|
||||
Filter: []string{minUpdatedAtFilter(minUpdatedAt)},
|
||||
Filter: []string{
|
||||
minUpdatedAtFilter(minUpdatedAt), // order matters, filter.0
|
||||
"isempty(manager_id)", // len(manager_id) > 0 is for pubcloud objects
|
||||
},
|
||||
OrderBy: []string{"updated_at", "id"},
|
||||
Order: "asc",
|
||||
Limit: options.Int(opts.BatchListSize),
|
||||
|
||||
Reference in New Issue
Block a user