This is an automated email from the ASF dual-hosted git repository. rohit pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/master by this push: new 2699586 network: Send userdata to Virtual Router if IPv6 is enabled (#3100) 2699586 is described below commit 2699586d92c79017b8de09b0ad888f103b7d72f0 Author: Wido den Hollander <w...@widodh.nl> AuthorDate: Mon Dec 24 19:12:57 2018 +0100 network: Send userdata to Virtual Router if IPv6 is enabled (#3100) There is no reason to not send userdata+password to the VR as all Instances in CloudStack are Dual-Stacked. They have IPv4 and IPv6 so they can query their metadata over IPv4 at the VR. Signed-off-by: Wido den Hollander <w...@widodh.nl> --- .../network/element/VirtualRouterElement.java | 5 -- .../network/element/VirtualRouterElementTest.java | 56 ++++++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java index 1a72877..862ccfe 100644 --- a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java @@ -1022,11 +1022,6 @@ NetworkMigrationResponder, AggregatedCommandExecutor, RedundantResource, DnsServ return false; } - if (network.getIp6Gateway() != null) { - s_logger.info("Skip password and userdata service setup for IPv6 VM"); - return true; - } - final VirtualMachineProfile uservm = vm; final List<DomainRouterVO> routers = getRouters(network, dest); diff --git a/server/src/test/java/com/cloud/network/element/VirtualRouterElementTest.java b/server/src/test/java/com/cloud/network/element/VirtualRouterElementTest.java index 4fbc28e..2d66ea7 100644 --- a/server/src/test/java/com/cloud/network/element/VirtualRouterElementTest.java +++ b/server/src/test/java/com/cloud/network/element/VirtualRouterElementTest.java @@ -449,4 +449,60 @@ public class VirtualRouterElementTest { when(_routerDao.persist(any(DomainRouterVO.class))).thenReturn(router); } + @Test + public void testCanHandle() { + Network network = Mockito.mock(Network.class); + + final long networkId = 1; + final long physicalNetworkId = 42; + final long networkOfferingId = 10; + final long dataCenterId = 33; + + when(network.getId()).thenReturn(networkId); + when(network.getPhysicalNetworkId()).thenReturn(physicalNetworkId); + when(network.getTrafficType()).thenReturn(TrafficType.Guest); + when(network.getNetworkOfferingId()).thenReturn(networkOfferingId); + when(network.getDataCenterId()).thenReturn(dataCenterId); + when(network.getVpcId()).thenReturn(null); + + when(virtualRouterElement._networkMdl.getPhysicalNetworkId(network)).thenReturn(physicalNetworkId); + when(virtualRouterElement._networkMdl.isProviderEnabledInPhysicalNetwork(physicalNetworkId, Network.Provider.VirtualRouter.getName())).thenReturn(true); + when(virtualRouterElement._networkMdl.isProviderForNetwork(Network.Provider.VirtualRouter, networkId)).thenReturn(true); + + assertTrue(virtualRouterElement.canHandle(network, null)); + } + + @Test + public void testAddPasswordAndUserdata() throws Exception { + Network network = Mockito.mock(Network.class); + VirtualMachineProfile vm = Mockito.mock(VirtualMachineProfile.class); + NicProfile nic = Mockito.mock(NicProfile.class); + DeployDestination dest = Mockito.mock(DeployDestination.class); + ReservationContext context = Mockito.mock(ReservationContext.class); + Service service = Service.UserData; + + final long networkId = 1; + final long physicalNetworkId = 42; + final long networkOfferingId = 10; + final long dataCenterId = 33; + + when(network.getId()).thenReturn(networkId); + when(network.getPhysicalNetworkId()).thenReturn(physicalNetworkId); + when(network.getTrafficType()).thenReturn(TrafficType.Guest); + when(network.getNetworkOfferingId()).thenReturn(networkOfferingId); + when(network.getDataCenterId()).thenReturn(dataCenterId); + when(network.getVpcId()).thenReturn(null); + + when(vm.getType()).thenReturn(VirtualMachine.Type.User); + + when(virtualRouterElement._networkMdl.getPhysicalNetworkId(network)).thenReturn(physicalNetworkId); + when(virtualRouterElement._networkMdl.isProviderEnabledInPhysicalNetwork(physicalNetworkId, Network.Provider.VirtualRouter.getName())).thenReturn(true); + when(virtualRouterElement._networkMdl.isProviderSupportServiceInNetwork(networkId, service, Network.Provider.VirtualRouter)).thenReturn(true); + + when(virtualRouterElement._dcDao.findById(dataCenterId)).thenReturn(Mockito.mock(DataCenterVO.class)); + + when(virtualRouterElement.canHandle(network, service)).thenReturn(false); + + assertTrue(virtualRouterElement.addPasswordAndUserdata(network, nic, vm, dest, context)); + } }