fix: zone add filter by host

This commit is contained in:
Qiu Jian
2019-03-11 20:22:47 +08:00
parent 3fd8e99260
commit ce96f91191
3 changed files with 8 additions and 70 deletions
+1
View File
@@ -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"`
+6 -70
View File
@@ -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
}
+1
View File
@@ -0,0 +1 @@
package kubehandlers // import "yunion.io/x/onecloud/pkg/hostman/kubehandlers"