private Boolean isNetworkAddressEqual(String networkUuid1, String networkUuid2) { if (networkUuid1.equals(networkUuid2)) { return true; } L3NetworkVO l3vo1 = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, networkUuid1).find(); L3NetworkVO l3vo2 = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, networkUuid2).find(); if (!l3vo1.getIpVersion().equals(l3vo2.getIpVersion())) { return false; } List<IpRangeInventory> ipInvs1 = IpRangeInventory.valueOf(l3vo1.getIpRanges()); List<IpRangeInventory> ipInvs2 = IpRangeInventory.valueOf(l3vo2.getIpRanges()); if (l3vo1.getIpVersion() == IPv6Constants.IPv4) { String netAddr1 = new SubnetUtils(ipInvs1.get(0).getGateway(), ipInvs1.get(0).getNetmask()).getInfo().getNetworkAddress(); String netAddr2 = new SubnetUtils(ipInvs2.get(0).getGateway(), ipInvs2.get(0).getNetmask()).getInfo().getNetworkAddress(); return netAddr1.equals(netAddr2); } else if (l3vo1.getIpVersion() == IPv6Constants.IPv6) { return IPv6NetworkUtils.isIpv6CidrEqual(ipInvs1.get(0).getNetworkCidr(), ipInvs2.get(0).getNetworkCidr()); } return false; } private void validate(APICreateVirtualRouterOfferingMsg msg) {
private List<String> getL3NetworkDns(String l3NetworkUuid){ List<String> dns = Q.New(L3NetworkDnsVO.class).eq(L3NetworkDnsVO_.l3NetworkUuid, l3NetworkUuid) .select(L3NetworkDnsVO_.dns).orderBy(L3NetworkDnsVO_.id, SimpleQuery.Od.ASC).listValues(); if (dns == null) { dns = new ArrayList<String>(); } L3NetworkVO l3VO = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, l3NetworkUuid).find(); if (FlatNetwordProviderGlobalConfig.ALLOW_DEFAULT_DNS.value(Boolean.class) && l3VO.getIpVersion() == IPv6Constants.IPv4) { String dhcpIp = getDHCPServerIP(l3NetworkUuid); if (dhcpIp != null) { dns.add(dhcpIp); } } return dns; }
private IpAllocatorType getIpAllocatorType(AllocateIpMsg msg) { if (msg.getAllocatorStrategy() != null) { return IpAllocatorType.valueOf(msg.getAllocatorStrategy()); } L3NetworkVO l3Vo = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, msg.getL3NetworkUuid()).find(); if (l3Vo.getIpVersion() == IPv6Constants.IPv4) { return RandomIpAllocatorStrategy.type; } return RandomIpv6AllocatorStrategy.type; }
private void validateIpAddress(String l3NetworkUuid, String ip, String manner) { L3NetworkVO l3VO = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, l3NetworkUuid).find(); if (l3VO == null) { return; } if (l3VO.getIpVersion() == IPv6Constants.IPv4) { if (!NetworkUtils.isIpv4Address(ip)) { throw new ApiMessageInterceptionException(argerr("%s[%s] is not a IPv4 address", manner, ip)); } } else { if (!IPv6NetworkUtils.isIpv6Address(ip)) { throw new ApiMessageInterceptionException(argerr("%s[%s] is not a IPv6 address", manner, ip)); } } }
public static L3NetworkInventory valueOf(L3NetworkVO vo) { L3NetworkInventory inv = new L3NetworkInventory(); inv.setUuid(vo.getUuid()); inv.setCreateDate(vo.getCreateDate()); inv.setDescription(vo.getDescription()); inv.setL2NetworkUuid(vo.getL2NetworkUuid()); inv.setName(vo.getName()); inv.setType(vo.getType()); inv.setDnsDomain(vo.getDnsDomain()); inv.setZoneUuid(vo.getZoneUuid()); inv.setState(vo.getState().toString()); vo.getDns().stream().sorted(Comparator.comparingLong(L3NetworkDnsVO::getId)).collect(Collectors.toList()) .forEach(dnsVo -> inv.getDns().add(dnsVo.getDns())); inv.setSystem(vo.isSystem()); inv.setIpRanges(IpRangeInventory.valueOf(vo.getIpRanges())); inv.setLastOpDate(vo.getLastOpDate()); inv.setNetworkServices(NetworkServiceL3NetworkRefInventory.valueOf(vo.getNetworkServices())); inv.setCategory(vo.getCategory().toString()); inv.setHostRoute(L3NetworkHostRouteInventory.valueOf(vo.getHostRoutes())); inv.setIpVersion(vo.getIpVersion()); return inv; }
if (l3Vo.getIpVersion() == IPv6Constants.IPv4) { ipv4Count++; } else {
.param("vipL3NetworkUuid", vip.getL3NetworkUuid()) .param("clusterUuids", clusterUuids) .param("ipVersion", l3Vo.getIpVersion()) .list(); } else { .param("vipL3NetworkUuid", vip.getL3NetworkUuid()) .param("clusterUuids", clusterUuids) .param("ipVersion", l3Vo.getIpVersion()) .list(); .param("vmType", VmInstanceConstant.USER_VM_TYPE) .param("vmStates", EipConstant.attachableVmStates) .param("ipVersion", l3Vo.getIpVersion()) .param("vmInPublicL3s", vmInPublicL3s) .list(); .param("vmType", VmInstanceConstant.USER_VM_TYPE) .param("vmStates", EipConstant.attachableVmStates) .param("ipVersion", l3Vo.getIpVersion()) .list();
private void validate(APIAttachSecurityGroupToL3NetworkMsg msg) { SimpleQuery<SecurityGroupL3NetworkRefVO> q = dbf.createQuery(SecurityGroupL3NetworkRefVO.class); q.add(SecurityGroupL3NetworkRefVO_.l3NetworkUuid, Op.EQ, msg.getL3NetworkUuid()); q.add(SecurityGroupL3NetworkRefVO_.securityGroupUuid, Op.EQ, msg.getSecurityGroupUuid()); if (q.isExists()) { throw new ApiMessageInterceptionException(operr("security group[uuid:%s] has attached to l3Network[uuid:%s], can't attach again", msg.getSecurityGroupUuid(), msg.getL3NetworkUuid())); } SimpleQuery<NetworkServiceL3NetworkRefVO> nq = dbf.createQuery(NetworkServiceL3NetworkRefVO.class); nq.add(NetworkServiceL3NetworkRefVO_.l3NetworkUuid, Op.EQ, msg.getL3NetworkUuid()); nq.add(NetworkServiceL3NetworkRefVO_.networkServiceType, Op.EQ, SecurityGroupConstant.SECURITY_GROUP_NETWORK_SERVICE_TYPE); if (!nq.isExists()) { throw new ApiMessageInterceptionException(argerr("the L3 network[uuid:%s] doesn't have the network service type[%s] enabled", msg.getL3NetworkUuid(), SecurityGroupConstant.SECURITY_GROUP_NETWORK_SERVICE_TYPE)); } L3NetworkVO l3Vo = dbf.findByUuid(msg.getL3NetworkUuid(), L3NetworkVO.class); SecurityGroupVO sgVo = dbf.findByUuid(msg.getSecurityGroupUuid(), SecurityGroupVO.class); if (l3Vo != null && sgVo != null && sgVo.getIpVersion() != l3Vo.getIpVersion()) { throw new ApiMessageInterceptionException(argerr("the L3 network[uuid:%s] ipVersion [%d] is different from securityGroup [uuid:%s] ipVersion [%d]", msg.getL3NetworkUuid(), l3Vo.getIpVersion(), msg.getSecurityGroupUuid(), sgVo.getIpVersion())); } }
private void validate(APISetVmStaticIpMsg msg) { L3NetworkVO l3NetworkVO = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, msg.getL3NetworkUuid()).find(); List<VmNicVO> vmNics = Q.New(VmNicVO.class).eq(VmNicVO_.vmInstanceUuid, msg.getVmInstanceUuid()).list(); boolean l3Found = false; for (VmNicVO nic : vmNics) { for (UsedIpVO ipvo: nic.getUsedIps()) { if (ipvo.getL3NetworkUuid().equals(msg.getL3NetworkUuid())) { l3Found = true; if (l3NetworkVO.getIpVersion() == IPv6Constants.IPv4) { validateStaticIPv4(nic, l3NetworkVO, msg.getIp()); } else { validateStaticIPv6(nic, l3NetworkVO, msg.getIp()); } } } } if (!l3Found) { throw new ApiMessageInterceptionException(argerr("the VM[uuid:%s] has no nic on the L3 network[uuid:%s]", msg.getVmInstanceUuid(), msg.getL3NetworkUuid())); } }
if (l3Vo.getIpVersion() == IPv6Constants.IPv4) { for (UsedIpVO ipVO : vmNicVO.getUsedIps()) { if (ipVO.getIpVersion() == IPv6Constants.IPv4) { if (l3Vo.getIpVersion() == IPv6Constants.IPv4) { validateStaticIPv4(vmNicVO, l3Vo, msg.getStaticIp()); } else if (l3Vo.getIpVersion() == IPv6Constants.IPv6) { validateStaticIPv6(vmNicVO, l3Vo, msg.getStaticIp());
if (l3Vo.getIpVersion() != IPv6Constants.IPv6) { throw new ApiMessageInterceptionException(argerr("l3 network [uuid %s: name %s] is not a ipv6 network", l3Vo.getUuid(), l3Vo.getName()));
private void validate(APIGetFreeIpMsg msg) { if (msg.getIpRangeUuid() == null && msg.getL3NetworkUuid() == null) { throw new ApiMessageInterceptionException(argerr( "ipRangeUuid and l3NetworkUuid cannot both be null; you must set either one." )); } if (msg.getIpRangeUuid() != null && msg.getL3NetworkUuid() == null) { SimpleQuery<IpRangeVO> q = dbf.createQuery(IpRangeVO.class); q.select(IpRangeVO_.l3NetworkUuid); q.add(IpRangeVO_.uuid, Op.EQ, msg.getIpRangeUuid()); String l3Uuid = q.findValue(); msg.setL3NetworkUuid(l3Uuid); } if (msg.getLimit() < 0) { msg.setLimit(Integer.MAX_VALUE); } L3NetworkVO l3Vo = dbf.findByUuid(msg.getL3NetworkUuid(), L3NetworkVO.class); if (msg.getStart() == null) { if (l3Vo.getIpVersion() == IPv6Constants.IPv6) { msg.setStartIp("::"); } else { msg.setStartIp("0.0.0.0"); } } }
private void validate(APICreateVipMsg msg) { if (msg.getAllocatorStrategy() != null && !IpAllocatorType.hasType(msg.getAllocatorStrategy())) { throw new ApiMessageInterceptionException(argerr("unsupported ip allocation strategy[%s]", msg.getAllocatorStrategy())); } if (msg.getRequiredIp() != null) { L3NetworkVO l3NetworkVO = dbf.findByUuid(msg.getL3NetworkUuid(), L3NetworkVO.class); if (l3NetworkVO.getIpVersion() == IPv6Constants.IPv4) { if (!NetworkUtils.isIpv4Address(msg.getRequiredIp())) { throw new ApiMessageInterceptionException(argerr("requiredIp[%s] is not in valid IPv4 mediaType", msg.getRequiredIp())); } } else { if (!IPv6NetworkUtils.isIpv6UnicastAddress(msg.getRequiredIp())) { if (!NetworkUtils.isIpv4Address(msg.getRequiredIp())) { throw new ApiMessageInterceptionException(argerr("requiredIp[%s] is not in valid IPv6 mediaType", msg.getRequiredIp())); } } } SimpleQuery<VipVO> q = dbf.createQuery(VipVO.class); q.add(VipVO_.ip, Op.EQ, msg.getRequiredIp()); q.add(VipVO_.l3NetworkUuid, Op.EQ, msg.getL3NetworkUuid()); if (q.isExists()) { throw new ApiMessageInterceptionException(operr("there is already a vip[%s] on l3Network[uuid:%s]", msg.getRequiredIp(), msg.getL3NetworkUuid())); } } } }
private void validate(IpRangeInventory ipr) { L3NetworkVO l3Vo = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, ipr.getL3NetworkUuid()).find(); if (l3Vo.getIpVersion() != IPv6Constants.IPv4) { throw new ApiMessageInterceptionException(argerr("l3 network [uuid %s: name %s] is not a ipv4 network", l3Vo.getUuid(), l3Vo.getName()));