protected static void reportUnsupportedVnicProfileFeatures( VM vm, VmNic nic, VnicProfile vnicProfile, List<VNIC_PROFILE_PROPERTIES> unsupportedFeatures) { if (unsupportedFeatures.isEmpty()) { return; } AuditLogableBase event = new AuditLogableBase(); event.setVmId(vm.getId()); event.setVdsGroupId(vm.getVdsGroupId()); event.setCustomId(nic.getId().toString()); event.setCompatibilityVersion(vm.getVdsGroupCompatibilityVersion().toString()); event.addCustomValue("NicName", nic.getName()); event.addCustomValue("VnicProfile", vnicProfile == null ? null : vnicProfile.getName()); String[] unsupportedFeatureNames = new String[unsupportedFeatures.size()]; for (int i = 0; i < unsupportedFeatures.size(); i++) { unsupportedFeatureNames[i] = unsupportedFeatures.get(i).getFeatureName(); } event.addCustomValue("UnsupportedFeatures", StringUtils.join(unsupportedFeatureNames, ", ")); AuditLogDirector.log(event, AuditLogType.VNIC_PROFILE_UNSUPPORTED_FEATURES); }
/** * Checks that the destination cluster has all the networks that the given NICs require.<br> * No network on a NIC is allowed (it's checked when running VM). * * @param interfaces The NICs to check networks on. * @return Whether the destination cluster has all networks configured or not. */ private boolean validateDestinationClusterContainsNetworks(List<VmNic> interfaces) { List<Network> networks = DbFacade.getInstance().getNetworkDao().getAllForCluster(targetClusterId); StringBuilder missingNets = new StringBuilder(); for (VmNic iface : interfaces) { Network network = NetworkHelper.getNetworkByVnicProfileId(iface.getVnicProfileId()); if (network != null) { boolean exists = false; for (Network net : networks) { if (net.getName().equals(network.getName())) { exists = true; break; } } if (!exists) { if (missingNets.length() > 0) { missingNets.append(", "); } missingNets.append(network.getName()); } } } if (missingNets.length() > 0) { parentCommand.addCanDoActionMessage(EngineMessage.MOVE_VM_CLUSTER_MISSING_NETWORK); parentCommand.addCanDoActionMessageVariable("networks", missingNets.toString()); return false; } return true; }
/** @return A new interface that can be used in tests. */ private static VmNic createNewInterface() { VmNic iface = new VmNic(); iface.setId(Guid.newGuid()); iface.setMacAddress(RandomUtils.instance().nextString(10)); return iface; }
protected void removeNetwork() { List<VmNic> list = getVmNicDao().getAllForTemplate(getVmTemplateId()); for (VmNic iface : list) { DbFacade.getInstance() .getVmDeviceDao() .remove(new VmDeviceId(iface.getId(), getVmTemplateId())); getVmNicDao().remove(iface.getId()); } }
protected void runAddAndVerify( VmNic iface, boolean reserveExistingMac, VerificationMode addMacVerification, int osId, Version version) { OsRepository osRepository = mock(OsRepository.class); when(vmInterfaceManager.getOsRepository()).thenReturn(osRepository); when(osRepository.hasNicHotplugSupport(any(Integer.class), any(Version.class))) .thenReturn(true); vmInterfaceManager.add( iface, NoOpCompensationContext.getInstance(), reserveExistingMac, osId, version); if (reserveExistingMac) { verify(macPoolManagerStrategy, times(1)).forceAddMac((iface.getMacAddress())); } else { verifyZeroInteractions(macPoolManagerStrategy); } verifyAddDelegatedCorrectly(iface, addMacVerification); }
/** * Verify that {@link VmInterfaceManager#removeAll} delegated correctly to {@link * MacPoolManagerStrategy} & Daos. * * @param iface The interface to check for. */ protected void verifyRemoveAllDelegatedCorrectly(VmNic iface) { verify(macPoolManagerStrategy, times(1)).freeMac(iface.getMacAddress()); verify(vmNicDao).remove(iface.getId()); verify(vmNetworkStatisticsDao).remove(iface.getId()); }
/** * Verify that {@link VmInterfaceManager#add} delegated correctly to {@link * MacPoolManagerStrategy} & Daos. * * @param iface The interface to check for. * @param addMacVerification Mode to check (times(1), never(), etc) for {@link * MacPoolManagerStrategy#addMac(String)}. */ protected void verifyAddDelegatedCorrectly(VmNic iface, VerificationMode addMacVerification) { verify(macPoolManagerStrategy, addMacVerification).forceAddMac(iface.getMacAddress()); verify(vmNicDao).save(iface); verify(vmNetworkStatisticsDao).save(iface.getStatistics()); }