From c75c228c2ded91eebc60ac78ae0931e2e826c2c3 Mon Sep 17 00:00:00 2001 From: Spaceman1984 <49917670+Spaceman1984@users.noreply.github.com> Date: Fri, 20 Dec 2019 14:54:55 +0200 Subject: [PATCH] Honour promiscuous mode from networkOffering (#3765) --- .../com/cloud/vm/VirtualMachineManagerImpl.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java index 1cc925b3ccf..3a3c760c71f 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -41,6 +41,8 @@ import javax.naming.ConfigurationException; import com.cloud.agent.api.PrepareForMigrationAnswer; import com.cloud.agent.api.to.DpdkTO; +import com.cloud.offering.NetworkOffering; +import com.cloud.offerings.dao.NetworkOfferingDetailsDao; import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd; import org.apache.cloudstack.api.command.admin.volume.MigrateVolumeCmdByAdmin; @@ -320,6 +322,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac private AsyncJobManager _jobMgr; @Inject private StorageManager storageMgr; + @Inject + private NetworkOfferingDetailsDao networkOfferingDetailsDao; VmWorkJobHandlerProxy _jobHandlerProxy = new VmWorkJobHandlerProxy(this); @@ -3475,6 +3479,16 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac //3) Convert nicProfile to NicTO final NicTO nicTO = toNicTO(nic, vmProfile.getVirtualMachine().getHypervisorType()); + if (network != null) { + final Map details = networkOfferingDetailsDao.getNtwkOffDetails(network.getNetworkOfferingId()); + if (details != null) { + details.putIfAbsent(NetworkOffering.Detail.PromiscuousMode, NetworkOrchestrationService.PromiscuousMode.value().toString()); + details.putIfAbsent(NetworkOffering.Detail.MacAddressChanges, NetworkOrchestrationService.MacAddressChanges.value().toString()); + details.putIfAbsent(NetworkOffering.Detail.ForgedTransmits, NetworkOrchestrationService.ForgedTransmits.value().toString()); + } + nicTO.setDetails(details); + } + //4) plug the nic to the vm s_logger.debug("Plugging nic for vm " + vm + " in network " + network);