public static VmNicInventory valueOf(VmNicVO vo) { VmNicInventory inv = new VmNicInventory(); inv.setUuid(vo.getUuid()); inv.setVmInstanceUuid(vo.getVmInstanceUuid()); inv.setUsedIpUuid(vo.getUsedIpUuid()); inv.setL3NetworkUuid(vo.getL3NetworkUuid()); inv.setInternalName(vo.getInternalName()); inv.setIp(vo.getIp()); inv.setMac(vo.getMac()); inv.setHypervisorType(vo.getHypervisorType()); inv.setDeviceId(vo.getDeviceId()); inv.setCreateDate(vo.getCreateDate()); inv.setLastOpDate(vo.getLastOpDate()); inv.setMetaData(vo.getMetaData()); inv.setNetmask(vo.getNetmask()); inv.setGateway(vo.getGateway()); inv.setIpVersion(vo.getIpVersion()); inv.setUsedIps(UsedIpInventory.valueOf(vo.getUsedIps())); return inv; }
public static List<String> getL3Uuids(VmNicVO nic) { List<String> ret = new ArrayList<>(); for (UsedIpVO ip : nic.getUsedIps()) { ret.add(ip.getL3NetworkUuid()); } ret.add(nic.getL3NetworkUuid()); return ret.stream().distinct().collect(Collectors.toList()); }
@Override public String call(VmNicVO arg) { if (arg.getL3NetworkUuid().equals(getSelf().getManagementNetworkUuid())) { return arg.getIp(); } return null; } });
VmNicVO nic = nicMap.get(eip.getVmNicUuid()); VipVO vip = vipMap.get(eip.getVipUuid()); if (nic.getIp() == null) { return null; to.vmUuid = nic.getVmInstanceUuid(); to.nicName = nic.getInternalName(); for (UsedIpVO ip : nic.getUsedIps()) { if (ip.getIp().equals(eip.getGuestIp())) { to.ipVersion = ip.getIpVersion(); to.nicMac = nic.getMac(); to.nicUuid = nic.getUuid(); to.vip = eip.getVipIp(); to.vipUuid = eip.getVipUuid();
@Override public String call(VmNicVO arg) { return arg.getUuid(); } });
@Override protected void scripts() { String acntUuid = Account.getAccountUuidOfResource(spec.getVmInventory().getUuid()); spec.getDestNics().forEach(nic -> { VmNicVO nvo = new VmNicVO(); nvo.setUuid(nic.getUuid()); nvo.setDeviceId(nic.getDeviceId()); nvo.setIp(nic.getIp()); nvo.setL3NetworkUuid(nic.getL3NetworkUuid()); nvo.setMac(nic.getMac()); nvo.setHypervisorType(nic.getHypervisorType()); nvo.setUsedIpUuid(nic.getUsedIpUuid()); nvo.setGateway(nic.getGateway()); nvo.setNetmask(nic.getNetmask()); nvo.setVmInstanceUuid(nic.getVmInstanceUuid()); nvo.setMetaData(nic.getMetaData()); nvo.setInternalName(nic.getInternalName()); nvo.setAccountUuid(acntUuid); nvo.setIpVersion(nic.getIpVersion()); persist(nvo); if (nic.getUsedIpUuid() != null) { SQL.New(UsedIpVO.class).eq(UsedIpVO_.uuid, nic.getUsedIpUuid()).set(UsedIpVO_.vmNicUuid, nvo.getUuid()).update(); } }); ApplianceVmVO apvm = findByUuid(spec.getVmInventory().getUuid(), ApplianceVmVO.class); apvm.setManagementNetworkUuid(mgmtNic.getL3NetworkUuid()); merge(apvm); } }.execute();
@Override public void prepareDbInitialValue() { List<VmNicVO> nics = Q.New(VmNicVO.class).notNull(VmNicVO_.vmInstanceUuid).list(); for (VmNicVO nic : nics) { if (nic.getUsedIps().size() <= 1) { continue; } /* systemTags for dualStack nic existed */ List<String> secondaryL3Uuids = new DualStackNicSecondaryNetworksOperator().getSecondaryNetworksByVmUuidNic(nic.getVmInstanceUuid(), nic.getL3NetworkUuid()); if (secondaryL3Uuids != null) { continue; } for (UsedIpVO ip : nic.getUsedIps()) { if (ip.getL3NetworkUuid().equals(nic.getL3NetworkUuid())) { continue; } new DualStackNicSecondaryNetworksOperator().createSecondaryNetworksByVmNic(VmNicInventory.valueOf(nic), ip.getL3NetworkUuid()); } } } }
for (UsedIpVO ip : nicVO.getUsedIps()) { List<String> guestips = nicGuestipMap.get(nicVO.getUuid()); if (guestips != null && guestips.contains(ip.getIp())) { l3Uuids.add(ip.getL3NetworkUuid()); nicMap.put(nic.getUuid(), nic);
for (UsedIpVO ip : nic.getUsedIps()) { l3Uuids.add(ip.getL3NetworkUuid()); for (UsedIpVO ip : nic.getUsedIps()) { info.bridgeName = KVMSystemTags.L2_BRIDGE_NAME.getTokenByTag(bridgeNames.get(nic.getL3NetworkUuid()), KVMSystemTags.L2_BRIDGE_NAME_TOKEN); info.namespaceName = makeNamespaceName( info.bridgeName, DebugUtils.Assert(info.bridgeName != null, "bridge name cannot be null"); info.mtu = new MtuGetter().getMtu(ip.getL3NetworkUuid()); info.mac = nic.getMac(); info.netmask = ip.getNetmask(); info.isDefaultL3Network = ip.getL3NetworkUuid().equals(vmDefaultL3.get(nic.getVmInstanceUuid())); info.ip = ip.getIp(); info.gateway = ip.getGateway(); info.hostname = hostnames.get(nic.getVmInstanceUuid()); if (info.hostname == null && ip.getIp() != null) { if (ip.getIpVersion() == IPv6Constants.IPv4) {
PortForwardingRuleVO vo = dbf.findByUuid(msg.getRuleUuid(), PortForwardingRuleVO.class); VmNicVO nicvo = dbf.findByUuid(msg.getVmNicUuid(), VmNicVO.class); vo.setVmNicUuid(nicvo.getUuid()); vo.setGuestIp(nicvo.getIp()); final PortForwardingRuleVO prvo = dbf.updateAndRefresh(vo); final PortForwardingRuleInventory inv = PortForwardingRuleInventory.valueOf(prvo); final NetworkServiceProviderType providerType = nwServiceMgr.getTypeOfNetworkServiceProviderForService( nicvo.getL3NetworkUuid(), NetworkServiceType.PortForwarding); struct.setServiceProvider(providerType.toString()); struct.setPeerL3NetworkUuid(nicvo.getL3NetworkUuid()); vip.setStruct(struct); vip.acquire(new Completion(msg) {
if (nic.getVmInstanceUuid() != null) { vmVo = dbf.findByUuid(nic.getVmInstanceUuid(), VmInstanceVO.class);
private PortForwardingStruct makePortForwardingStruct(PortForwardingRuleInventory rule) { VipVO vipvo = dbf.findByUuid(rule.getVipUuid(), VipVO.class); L3NetworkVO vipL3vo = dbf.findByUuid(vipvo.getL3NetworkUuid(), L3NetworkVO.class); VmNicVO nic = dbf.findByUuid(rule.getVmNicUuid(), VmNicVO.class); L3NetworkVO guestL3vo = dbf.findByUuid(nic.getL3NetworkUuid(), L3NetworkVO.class); PortForwardingStruct struct = new PortForwardingStruct(); struct.setRule(rule); struct.setVip(VipInventory.valueOf(vipvo)); struct.setGuestIp(nic.getIp()); struct.setGuestMac(nic.getMac()); struct.setGuestL3Network(L3NetworkInventory.valueOf(guestL3vo)); struct.setSnatInboundTraffic(PortForwardingGlobalConfig.SNAT_INBOUND_TRAFFIC.value(Boolean.class)); struct.setVipL3Network(L3NetworkInventory.valueOf(vipL3vo)); return struct; }
public void run(final SyncTaskChain schain) { VmNicVO vo = Q.New(VmNicVO.class).eq(VmNicVO_.uuid, nicInventory.getUuid()).find(); L3NetworkVO l3NetworkVO = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, vo.getL3NetworkUuid()).find(); vo.setMetaData(GUEST_NIC_MASK.toString()); dbf.updateAndRefresh(usedIpVO); } else { vo.setMetaData(ADDITIONAL_PUBLIC_NIC_MASK.toString()); logger.debug(String.format("updated metadata of vmnic[uuid: %s]", vo.getUuid()));
nics = nics.stream().filter(nic -> nic.getUsedIps().stream().map(UsedIpVO::getL3NetworkUuid).collect(Collectors.toList()).contains(l3Uuid)).collect(Collectors.toList()); for (UsedIpVO ip : nic.getUsedIps()) { l3Uuids.add(ip.getL3NetworkUuid()); for (UsedIpVO ip : nic.getUsedIps()) { DhcpInfo info = new DhcpInfo(); info.bridgeName = KVMSystemTags.L2_BRIDGE_NAME.getTokenByTag(bridgeNames.get(ip.getL3NetworkUuid()), KVMSystemTags.L2_BRIDGE_NAME_TOKEN); ); DebugUtils.Assert(info.bridgeName != null, "bridge name cannot be null"); info.mac = nic.getMac(); info.netmask = ip.getNetmask(); info.isDefaultL3Network = ip.getL3NetworkUuid().equals(vm.getDefaultL3NetworkUuid()); info.hostname = hostnames.get(nic.getVmInstanceUuid()); if (info.hostname == null && ip.getIp() != null) { if (ip.getIpVersion() == IPv6Constants.IPv4) {
VmNicSecurityGroupRefVO vo = new VmNicSecurityGroupRefVO(); vo.setSecurityGroupUuid(msg.getSecurityGroupUuid()); vo.setVmInstanceUuid(nic.getVmInstanceUuid()); vo.setVmNicUuid(nic.getUuid()); vo.setUuid(Platform.getUuid()); refs.add(vo); vmUuids.add(nic.getVmInstanceUuid());
private void handle(APIGetAttachablePublicL3ForVRouterMsg msg) { APIGetAttachablePublicL3ForVRouterReply reply = new APIGetAttachablePublicL3ForVRouterReply(); List<L3NetworkVO> l3NetworkVOS = Q.New(L3NetworkVO.class).notEq(L3NetworkVO_.category, L3NetworkCategory.Private).list(); List<VmNicVO> vmNicVOS = Q.New(VmNicVO.class).eq(VmNicVO_.vmInstanceUuid, msg.getVmInstanceUuid()).list(); if (l3NetworkVOS == null || l3NetworkVOS.isEmpty()) { reply.setInventories(new ArrayList<L3NetworkInventory>()); bus.reply(msg, reply); return; } Set<L3NetworkVO> attachableL3NetworkVOS = new HashSet<>(l3NetworkVOS); for (L3NetworkVO l3NetworkVO : l3NetworkVOS) { for (VmNicVO vmNicVO : vmNicVOS) { if (l3NetworkVO.getIpRanges() == null || l3NetworkVO.getIpRanges().isEmpty()) { attachableL3NetworkVOS.remove(l3NetworkVO); } String vmNicCidr = NetworkUtils.getCidrFromIpMask(vmNicVO.getIp(), vmNicVO.getNetmask()); if (NetworkUtils.isCidrOverlap(l3NetworkVO.getIpRanges().stream().findFirst().get().getNetworkCidr(), vmNicCidr)) { attachableL3NetworkVOS.remove(l3NetworkVO); } attachableL3NetworkVOS.removeAll(attachableL3NetworkVOS.stream() .filter(vo -> vo.getUuid().equals(vmNicVO.getL3NetworkUuid())) .collect(Collectors.toSet())); } } reply.setInventories(L3NetworkInventory.valueOf(attachableL3NetworkVOS)); bus.reply(msg, reply); }
info.setGateway(nic.getGateway()); info.setIp(nic.getIp()); info.setMac(nic.getMac()); info.setVrNicMac(vr.getGuestNicByL3NetworkUuid(l3NetworkUuid).getMac()); info.setNetmask(nic.getNetmask()); if (l3NetworkUuid.equals(defaultL3Uuid)) { info.setDefaultL3Network(true);
msg.setUsedIpUuid(nic.getUsedIpUuid()); } else { validateEipGuestIpUuid(msg.getVmNicUuid(), msg.getUsedIpUuid()); checkIfVmAlreadyHasVipNetwork(nic.getVmInstanceUuid(), vip); checkVmState(msg.getVmNicUuid()); for (UsedIpVO ip : nic.getUsedIps()) { if (ip.getUuid().equals(msg.getUsedIpUuid())) { found = true; msg.setUsedIpUuid(nic.getUsedIpUuid());
@Override public void prepareDbInitialValue() { List<IpRangeVO> ipRangeVOS = Q.New(IpRangeVO.class).isNull(IpRangeVO_.prefixLen).list(); for (IpRangeVO ipr : ipRangeVOS) { ipr.setPrefixLen(NetworkUtils.getPrefixLengthFromNetwork(ipr.getNetmask())); } if (!ipRangeVOS.isEmpty()) { dbf.updateCollection(ipRangeVOS); } List<VmNicVO> nics = Q.New(VmNicVO.class).notNull(VmNicVO_.usedIpUuid).list(); List<UsedIpVO> ips = new ArrayList<>(); for (VmNicVO nic : nics) { UsedIpVO ip = Q.New(UsedIpVO.class).eq(UsedIpVO_.uuid, nic.getUsedIpUuid()).isNull(UsedIpVO_.vmNicUuid).find(); if (ip != null) { ip.setVmNicUuid(nic.getUuid()); ips.add(ip); } } if (!ips.isEmpty()) { dbf.updateCollection(ips); } } }