private void checkVipPortConfliction(String vipUuid, String protocol, RangeSet.Range range){ RangeSet portRangeList = getVipPortRangeList(vipUuid, protocol); portRangeList.sort(); Iterator<RangeSet.Range> it = portRangeList.getRanges().iterator(); while (it.hasNext()){ RangeSet.Range cur = it.next(); if (cur.isOverlap(range) || range.isOverlap(cur)){ throw new ApiMessageInterceptionException(operr("Current port range[%s, %s] is conflicted with used port range [%s, %s] with vip[uuid: %s] protocol: %s ", Long.toString(range.getStart()), Long.toString(range.getEnd()), Long.toString(cur.getStart()), Long.toString(cur.getEnd()), vipUuid, protocol)); } } } }
private List<String> getVipUsedPortList(String vipUuid, String protocol){ String useFor = Q.New(VipVO.class).select(VipVO_.useFor).eq(VipVO_.uuid, vipUuid).findValue(); VipUseForList vipUseForList; if (useFor != null){ vipUseForList = new VipUseForList(useFor); } else { vipUseForList = new VipUseForList(); } List<RangeSet.Range> portRangeList = new ArrayList<RangeSet.Range>(); for (VipGetUsedPortRangeExtensionPoint ext : vipGetUsedPortRangeExtensionPoints) { RangeSet range = ext.getVipUsePortRange(vipUuid, protocol, vipUseForList); portRangeList.addAll(range.getRanges()); } RangeSet portRange = new RangeSet(); portRange.setRanges(portRangeList); return portRange.sortAndToString(); }
private RangeSet getVipPortRangeList(String vipUuid, String protocol){ String useFor = Q.New(VipVO.class).select(VipVO_.useFor).eq(VipVO_.uuid, vipUuid).findValue(); VipUseForList vipUseForList; if (useFor != null){ vipUseForList = new VipUseForList(useFor); } else { vipUseForList = new VipUseForList(); } List<RangeSet.Range> portRangeList = new ArrayList<RangeSet.Range>(); for (VipGetUsedPortRangeExtensionPoint ext : pluginRgty.getExtensionList(VipGetUsedPortRangeExtensionPoint.class)){ RangeSet range = ext.getVipUsePortRange(vipUuid, protocol, vipUseForList); portRangeList.addAll(range.getRanges()); } RangeSet portRange = new RangeSet(); portRange.setRanges(portRangeList); portRange.sort(); return portRange; }