Yevgeny Zaspitsky has uploaded a new change for review. Change subject: engine: Add DefaultManagementNetworkFinder ......................................................................
engine: Add DefaultManagementNetworkFinder Add DefaultManagementNetworkFinder + impl + test. Add the provider method for NetworkDao in BllCDIAdapter. Change-Id: I7f8f0d53096523414ceb339d1b43224b540e0f78 Signed-off-by: Yevgeny Zaspitsky <yzasp...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinder.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImpl.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/BllCDIAdapter.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImplTest.java 4 files changed, 156 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/75/33275/10 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinder.java new file mode 100644 index 0000000..6afb7eb --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinder.java @@ -0,0 +1,17 @@ +package org.ovirt.engine.core.bll.network.cluster; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.compat.Guid; + +public interface DefaultManagementNetworkFinder { + + /** + * Finds the default management network for the given DC. + * + * @param dataCenterId + * data center id + * @returnthe default management {@link Network} + */ + Network findDefaultManagementNetwork(Guid dataCenterId); + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImpl.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImpl.java new file mode 100644 index 0000000..f3836ef --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImpl.java @@ -0,0 +1,54 @@ +package org.ovirt.engine.core.bll.network.cluster; + +import java.util.List; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import org.apache.commons.lang.Validate; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.network.NetworkDao; +import org.ovirt.engine.core.utils.NetworkUtils; + +@Singleton +final class DefaultManagementNetworkFinderImpl implements DefaultManagementNetworkFinder { + + private final NetworkDao networkDao; + + @Inject + DefaultManagementNetworkFinderImpl(NetworkDao networkDao) { + Validate.notNull(networkDao, "networkDao cannot be null"); + + this.networkDao = networkDao; + } + + /** + * The algorithm for finding the default management network is: + * <ol> + * <li>Use the default management network (ovirtmgmt) if exists in the data center (for backward compatibility)</li> + * <li>If the data center has a single management network use that.</li> + * <li>Otherwise return <code>null</code></li> + * </ol> + * + * @see DefaultManagementNetworkFinder#findDefaultManagementNetwork(Guid) + */ + @Override + public Network findDefaultManagementNetwork(Guid dataCenterId) { + final Network defaultEngineManagementNetwork = findConfigDefaultEngineManagementNetwork(dataCenterId); + if (defaultEngineManagementNetwork != null) { + return defaultEngineManagementNetwork; + } + final List<Network> managementNetworks = + networkDao.getManagementNetworks(dataCenterId); + if (managementNetworks.size() == 1) { + return managementNetworks.get(0); + } + return null; + } + + private Network findConfigDefaultEngineManagementNetwork(Guid dataCenterId) { + return networkDao.getByNameAndDataCenter(NetworkUtils.getDefaultManagementNetworkName(), + dataCenterId); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/BllCDIAdapter.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/BllCDIAdapter.java index c397219..c7117e6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/BllCDIAdapter.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/BllCDIAdapter.java @@ -4,6 +4,7 @@ import javax.enterprise.inject.spi.InjectionPoint; import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; @@ -42,6 +43,10 @@ return LogFactory.getLog(injectionPoint.getMember().getDeclaringClass()); } + @Produces + private NetworkDao produceNetworkDao(DbFacade dbFacade) { + return dbFacade.getNetworkDao(); + } private BllCDIAdapter() { // hide me diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImplTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImplTest.java new file mode 100644 index 0000000..94aaa9c --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/DefaultManagementNetworkFinderImplTest.java @@ -0,0 +1,80 @@ +package org.ovirt.engine.core.bll.network.cluster; + +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.when; + +import java.util.Arrays; +import java.util.Collections; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.network.NetworkDao; +import org.ovirt.engine.core.utils.MockConfigRule; + +@RunWith(MockitoJUnitRunner.class) +public class DefaultManagementNetworkFinderImplTest { + + private static final String DEFAULT_ENGINE_NETWORK_NAME = "test"; + + private static final Guid TEST_DC_ID = Guid.Empty; + + @Rule + public MockConfigRule mcr = new MockConfigRule( + MockConfigRule.mockConfig(ConfigValues.DefaultManagementNetwork, DEFAULT_ENGINE_NETWORK_NAME)); + + @Mock + private NetworkDao mockNetworkDao; + @Mock + private Network mockNetwork; + @Mock + private Network mockDefaultEngineNetwork; + + @InjectMocks + private DefaultManagementNetworkFinderImpl underTest; + + @Test + public void testFindDefaultManagementNetworkDefault() throws Exception { + when(mockNetworkDao.getByNameAndDataCenter(DEFAULT_ENGINE_NETWORK_NAME, TEST_DC_ID)).thenReturn(mockDefaultEngineNetwork); + + final Network actual = underTest.findDefaultManagementNetwork(TEST_DC_ID); + + assertSame(actual, mockDefaultEngineNetwork); + } + + @Test + public void testFindDefaultManagementNetworkNonDefault() throws Exception { + when(mockNetworkDao.getManagementNetworks(TEST_DC_ID)) + .thenReturn(Collections.singletonList(mockNetwork)); + + final Network actual = underTest.findDefaultManagementNetwork(TEST_DC_ID); + + assertSame(actual, mockNetwork); + } + + @Test + public void testFindDefaultManagementNetworkMultipleNonDefault() throws Exception { + when(mockNetworkDao.getManagementNetworks(TEST_DC_ID)) + .thenReturn(Arrays.asList(mockNetwork, mockDefaultEngineNetwork)); + + final Network actual = underTest.findDefaultManagementNetwork(TEST_DC_ID); + + assertNull(actual); + } + + @Test + public void testFindDefaultManagementNetworkNotFound() throws Exception { + + final Network actual = underTest.findDefaultManagementNetwork(TEST_DC_ID); + + assertNull(actual); + } + +} -- To view, visit http://gerrit.ovirt.org/33275 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7f8f0d53096523414ceb339d1b43224b540e0f78 Gerrit-PatchSet: 10 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yevgeny Zaspitsky <yzasp...@redhat.com> Gerrit-Reviewer: Alona Kaplan <alkap...@redhat.com> Gerrit-Reviewer: Yevgeny Zaspitsky <yzasp...@redhat.com> Gerrit-Reviewer: automat...@ovirt.org Gerrit-Reviewer: oVirt Jenkins CI Server _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches