vpcs: add method containsIPV4Range()

This commit is contained in:
Yousong Zhou
2020-01-17 17:44:31 +08:00
parent 93c2192b77
commit f194ad7183
2 changed files with 13 additions and 26 deletions
+3 -26
View File
@@ -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)
}
+10
View File
@@ -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")
}