diff --git a/pkg/apis/compute/vpcs_const.go b/pkg/apis/compute/vpcs_const.go index b99d0e5a17..78928f1b01 100644 --- a/pkg/apis/compute/vpcs_const.go +++ b/pkg/apis/compute/vpcs_const.go @@ -80,6 +80,9 @@ type VpcListInput struct { // example: 192.168.222.0/24 CidrBlock []string `json:"cidr_block"` + // IPv6地址段 + CidrBlock6 []string `json:"cidr_block6"` + // enmu: eip, none ExternalAccessMode string `json:"external_access_mode"` diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 46eb1447b5..b54d9f4f49 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -425,6 +425,7 @@ func (manager *SGuestManager) ListItemFilter( conditions := []sqlchemy.ICondition{} for _, ipAddr := range query.IpAddrs { conditions = append(conditions, sqlchemy.Regexp(grpnets.Field("ip_addr"), ipAddr)) + conditions = append(conditions, sqlchemy.Regexp(grpnets.Field("ip6_addr"), ipAddr)) } vipq = vipq.Join(grpnets, sqlchemy.Equals(grpnets.Field("group_id"), vipq.Field("group_id"))).Filter( sqlchemy.OR(conditions...), @@ -444,6 +445,7 @@ func (manager *SGuestManager) ListItemFilter( conditions = []sqlchemy.ICondition{} for _, ipAddr := range query.IpAddrs { conditions = append(conditions, sqlchemy.Regexp(gnQ.Field("ip_addr"), ipAddr)) + conditions = append(conditions, sqlchemy.Regexp(gnQ.Field("ip6_addr"), ipAddr)) } gn := gnQ.Filter(sqlchemy.OR(conditions...)) diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index 94bbdf4314..91ad4b5d2e 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -1315,6 +1315,10 @@ func (manager *SVpcManager) ListItemFilter( q = q.In("cidr_block", query.CidrBlock) } + if len(query.CidrBlock6) > 0 { + q = q.In("cidr_block6", query.CidrBlock6) + } + return q, nil } diff --git a/pkg/mcclient/options/vpc.go b/pkg/mcclient/options/vpc.go index a7e17b2fb8..55187e3e4b 100644 --- a/pkg/mcclient/options/vpc.go +++ b/pkg/mcclient/options/vpc.go @@ -32,6 +32,8 @@ type VpcListOptions struct { ZoneId string `help:"Filter by zone which has networks"` UsableForInterVpcNetworkId string `help:"Filter usable vpcs for inter vpc network"` OrderByWireCount string + CidrBlock string `help:"IPv4 cidr block"` + CidrBlock6 string `help:"IPv6 cidr block"` } func (opts *VpcListOptions) GetContextId() string {