mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
fix: zone add filter by host
This commit is contained in:
@@ -16,6 +16,7 @@ func init() {
|
||||
Ip string `help:"search networks that contain this IP"`
|
||||
Zone string `help:"search networks in a zone"`
|
||||
Wire string `help:"search networks belongs to a wire" json:"-"`
|
||||
Host string `help:"search networks attached to a host"`
|
||||
Vpc string `help:"search networks belongs to a VPC"`
|
||||
Region string `help:"search networks belongs to a CloudRegion" json:"cloudregion"`
|
||||
ServerType string `help:"search networks belongs to a ServerType" choices:"guest|baremetal|container|pxe|ipmi"`
|
||||
|
||||
@@ -1479,80 +1479,16 @@ func (manager *SNetworkManager) ListItemFilter(ctx context.Context, q *sqlchemy.
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), sq.SubQuery()))
|
||||
}
|
||||
|
||||
/*managerStr := jsonutils.GetAnyString(query, []string{"manager", "cloudprovider", "cloudprovider_id", "manager_id"})
|
||||
if len(managerStr) > 0 {
|
||||
provider, err := CloudproviderManager.FetchByIdOrName(nil, managerStr)
|
||||
hostStr, _ := query.GetString("host")
|
||||
if len(hostStr) > 0 {
|
||||
hostObj, err := HostManager.FetchByIdOrName(userCred, hostStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudproviderManager.Keyword(), managerStr)
|
||||
}
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
return nil, httperrors.NewResourceNotFoundError2(HostManager.Keyword(), hostStr)
|
||||
}
|
||||
|
||||
wires := WireManager.Query().SubQuery()
|
||||
vpcs := VpcManager.Query().SubQuery()
|
||||
|
||||
subq := wires.Query(wires.Field("id"))
|
||||
subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
subq = subq.Filter(sqlchemy.Equals(vpcs.Field("manager_id"), provider.GetId()))
|
||||
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery()))
|
||||
sq := HostwireManager.Query("wire_id").Equals("host_id", hostObj.GetId())
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), sq.SubQuery()))
|
||||
}
|
||||
|
||||
accountStr := jsonutils.GetAnyString(query, []string{"account", "account_id", "cloudaccount", "cloudaccount_id"})
|
||||
if len(accountStr) > 0 {
|
||||
account, err := CloudaccountManager.FetchByIdOrName(nil, accountStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudaccountManager.Keyword(), accountStr)
|
||||
}
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
|
||||
wires := WireManager.Query().SubQuery()
|
||||
vpcs := VpcManager.Query().SubQuery()
|
||||
cloudproviders := CloudproviderManager.Query().SubQuery()
|
||||
|
||||
subq := wires.Query(wires.Field("id"))
|
||||
subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
subq = subq.Join(cloudproviders, sqlchemy.Equals(cloudproviders.Field("id"), vpcs.Field("manager_id")))
|
||||
subq = subq.Filter(sqlchemy.Equals(cloudproviders.Field("cloudaccount_id"), account.GetId()))
|
||||
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery()))
|
||||
}
|
||||
|
||||
providerStr := jsonutils.GetAnyString(query, []string{"provider"})
|
||||
if len(providerStr) > 0 {
|
||||
wires := WireManager.Query().SubQuery()
|
||||
vpcs := VpcManager.Query().SubQuery()
|
||||
cloudproviders := CloudproviderManager.Query().SubQuery()
|
||||
|
||||
subq := wires.Query(wires.Field("id"))
|
||||
subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
subq = subq.Join(cloudproviders, sqlchemy.Equals(cloudproviders.Field("id"), vpcs.Field("manager_id")))
|
||||
subq = subq.Filter(sqlchemy.Equals(cloudproviders.Field("provider"), providerStr))
|
||||
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery()))
|
||||
}*/
|
||||
|
||||
/*if query.Contains("is_private") && jsonutils.QueryBoolean(query, "is_private", false) {
|
||||
wires := WireManager.Query().SubQuery()
|
||||
vpcs := VpcManager.Query().SubQuery()
|
||||
subq := wires.Query(wires.Field("id"))
|
||||
subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
subq = subq.Filter(sqlchemy.IsNullOrEmpty(vpcs.Field("manager_id")))
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery()))
|
||||
}
|
||||
|
||||
if query.Contains("is_public") && jsonutils.QueryBoolean(query, "is_public", false) {
|
||||
wires := WireManager.Query().SubQuery()
|
||||
vpcs := VpcManager.Query().SubQuery()
|
||||
subq := wires.Query(wires.Field("id"))
|
||||
subq = subq.Join(vpcs, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id")))
|
||||
subq = subq.Filter(sqlchemy.IsNotEmpty(vpcs.Field("manager_id")))
|
||||
q = q.Filter(sqlchemy.In(q.Field("wire_id"), subq.SubQuery()))
|
||||
}*/
|
||||
|
||||
return q, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
package kubehandlers // import "yunion.io/x/onecloud/pkg/hostman/kubehandlers"
|
||||
Reference in New Issue
Block a user