mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
vpcs: add method containsIPV4Range()
This commit is contained in:
@@ -1412,19 +1412,8 @@ func (manager *SNetworkManager) ValidateCreateData(ctx context.Context, userCred
|
||||
return input, httperrors.NewInvalidStatusError("VPC not ready")
|
||||
}
|
||||
|
||||
vpcRanges := vpc.getIPRanges()
|
||||
|
||||
netRange := netutils.NewIPV4AddrRange(startIp, endIp)
|
||||
|
||||
inRange := false
|
||||
for _, vpcRange := range vpcRanges {
|
||||
if vpcRange.ContainsRange(netRange) {
|
||||
inRange = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !inRange {
|
||||
if !vpc.containsIPV4Range(netRange) {
|
||||
return input, httperrors.NewInputParameterError("Network not in range of VPC cidrblock %s", vpc.CidrBlock)
|
||||
}
|
||||
|
||||
@@ -1485,21 +1474,9 @@ func (self *SNetwork) ValidateUpdateData(ctx context.Context, userCred mcclient.
|
||||
return nil, httperrors.NewInputParameterError("Conflict address space with existing networks")
|
||||
}
|
||||
|
||||
vpc := self.GetVpc()
|
||||
|
||||
vpcRanges := vpc.getIPRanges()
|
||||
|
||||
netRange := netutils.NewIPV4AddrRange(startIp, endIp)
|
||||
|
||||
inRange := false
|
||||
for _, vpcRange := range vpcRanges {
|
||||
if vpcRange.ContainsRange(netRange) {
|
||||
inRange = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !inRange {
|
||||
vpc := self.GetVpc()
|
||||
if !vpc.containsIPV4Range(netRange) {
|
||||
return nil, httperrors.NewInputParameterError("Network not in range of VPC cidrblock %s", vpc.CidrBlock)
|
||||
}
|
||||
|
||||
|
||||
@@ -766,6 +766,16 @@ func (self *SVpc) getIPRanges() []netutils.IPV4AddrRange {
|
||||
return ret
|
||||
}
|
||||
|
||||
func (self *SVpc) containsIPV4Range(a netutils.IPV4AddrRange) bool {
|
||||
ranges := self.getIPRanges()
|
||||
for i := range ranges {
|
||||
if ranges[i].ContainsRange(a) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (self *SVpc) AllowPerformPurge(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
|
||||
return db.IsAdminAllowPerform(userCred, self, "purge")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user