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

Reply via email to