Alona Kaplan has uploaded a new change for review. Change subject: engine: CRUD actions for HostNicVfsConfig ......................................................................
engine: CRUD actions for HostNicVfsConfig Introducing new table- HostNicVfsConfig Change-Id: I022a1d19d935832a8baae41c123322dff0ab779b Signed-off-by: Alona Kaplan <alkap...@redhat.com> --- M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDao.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java A backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoTest.java M backend/manager/modules/dal/src/test/resources/fixtures.xml A backend/manager/modules/extensions-manager/abrt_checker_31350.log M packaging/dbscripts/network_sp.sql A packaging/dbscripts/upgrade/03_06_0590_add_host_nic_vfs_config_table.sql 10 files changed, 341 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/35948/1 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java index b2e410c..a2cacfb 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java @@ -131,6 +131,7 @@ import org.ovirt.engine.core.dao.gluster.GlusterServerServiceDao; import org.ovirt.engine.core.dao.gluster.GlusterServiceDao; import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao; +import org.ovirt.engine.core.dao.network.HostNicVfsConfigDao; import org.ovirt.engine.core.dao.network.InterfaceDao; import org.ovirt.engine.core.dao.network.NetworkClusterDao; import org.ovirt.engine.core.dao.network.NetworkDao; @@ -1151,4 +1152,13 @@ public CpuProfileDao getCpuProfileDao() { return getDao(CpuProfileDao.class); } + + /** + * Returns the singleton instance of {@link org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig}. + * + * @return the dao + */ + public HostNicVfsConfigDao getHostNicVfsConfigDao() { + return getDao(HostNicVfsConfigDao.class); + } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDao.java new file mode 100644 index 0000000..038c906 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDao.java @@ -0,0 +1,9 @@ +package org.ovirt.engine.core.dao.network; + +import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.GenericDao; + +public interface HostNicVfsConfigDao extends GenericDao<HostNicVfsConfig, Guid> { + +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoDbFacadeImpl.java new file mode 100644 index 0000000..da27802 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoDbFacadeImpl.java @@ -0,0 +1,59 @@ +package org.ovirt.engine.core.dao.network; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.DefaultGenericDaoDbFacade; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; + +public class HostNicVfsConfigDaoDbFacadeImpl extends DefaultGenericDaoDbFacade<HostNicVfsConfig, Guid> implements HostNicVfsConfigDao { + + public HostNicVfsConfigDaoDbFacadeImpl() { + super("hostNicVfsConfig"); + } + + @Override + protected MapSqlParameterSource createFullParametersMapper(HostNicVfsConfig hostNicVfsConfig) { + return getCustomMapSqlParameterSource() + .addValue("id", hostNicVfsConfig.getId()) + .addValue("nic_id", hostNicVfsConfig.getNicId()) + .addValue("max_num_of_vfs", hostNicVfsConfig.getMaxNumOfVfs()) + .addValue("num_of_vfs", hostNicVfsConfig.getNumOfVfs()) + .addValue("num_of_free_vfs", hostNicVfsConfig.getNumOfFreeVfs()) + .addValue("all_networks_allowed", hostNicVfsConfig.isAllNetworksAllowed()); + } + + @Override + protected MapSqlParameterSource createIdParameterMapper(Guid id) { + return getCustomMapSqlParameterSource().addValue("id", id); + } + + @Override + protected RowMapper<HostNicVfsConfig> createEntityRowMapper() { + return HostNicVfsConfigRowMapper.INSTANCE; + } + + private static class HostNicVfsConfigRowMapper implements RowMapper<HostNicVfsConfig> { + + public final static HostNicVfsConfigRowMapper INSTANCE = new HostNicVfsConfigRowMapper(); + + private HostNicVfsConfigRowMapper() { + } + + @Override + public HostNicVfsConfig mapRow(ResultSet rs, int index) throws SQLException { + HostNicVfsConfig entity = new HostNicVfsConfig(); + entity.setId(getGuidDefaultEmpty(rs, "id")); + entity.setNicId(getGuidDefaultEmpty(rs, "nic_id")); + entity.setMaxNumOfVfs(rs.getInt("max_num_of_vfs")); + entity.setNumOfVfs(rs.getInt("num_of_vfs")); + entity.setNumOfFreeVfs(rs.getInt("num_of_free_vfs")); + entity.setAllNetworksAllowed(rs.getBoolean("all_networks_allowed")); + + return entity; + } + } +} diff --git a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties index 8d96e8a..f931565 100644 --- a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties +++ b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties @@ -89,3 +89,4 @@ VdsKdumpStatusDao=org.ovirt.engine.core.dao.VdsKdumpStatusDaoDbFacadeImpl DiskProfileDao=org.ovirt.engine.core.dao.profiles.DiskProfileDaoDbFacadeImpl CpuProfileDao=org.ovirt.engine.core.dao.profiles.CpuProfileDaoDbFacadeImpl +HostNicVfsConfigDao=org.ovirt.engine.core.dao.network.HostNicVfsConfigDaoDbFacadeImpl diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java index cef269d..a6ff175 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java @@ -494,6 +494,17 @@ /** * Predefined VdsNetworkInterface with the following properties : * <ul> + * <li>name: eth0</li> + * <li>network_name: engine2</li> + * <li>vds_id: afce7a39-8e8c-4819-ba9c-796d316592e7</li> + * <li>mac_addr: 78:E7:D1:E4:8C:71</li> + * </ul> + */ + public static final Guid VDS_NETWORK_INTERFACE2 = new Guid("ba31682e-6ae7-4f9d-8c6f-04c93acca9dd"); + + /** + * Predefined VdsNetworkInterface with the following properties : + * <ul> * <li>name: eth1</li> * <li>network_name: engine2</li> * <li>vds_id: afce7a39-8e8c-4819-ba9c-796d316592e6</li> @@ -669,4 +680,7 @@ public static final Guid CPU_PROFILE_1 = new Guid("fd81f1e1-785b-4579-ab75-1419ebb87052"); public static final Guid CPU_PROFILE_2 = new Guid("fd81f1e1-785b-4579-ab75-1419ebb87053"); + + public static final Guid HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED = new Guid("6b31bcc8-c6c3-4884-9a10-5f1f076f20c1"); + public static final Guid HOST_NIC_VFS_CONFIG = new Guid("6b31bcc8-c6c3-4884-9a10-5f1f076f20c2"); } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoTest.java new file mode 100644 index 0000000..0f3fb1f --- /dev/null +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/HostNicVfsConfigDaoTest.java @@ -0,0 +1,127 @@ +package org.ovirt.engine.core.dao.network; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.util.List; + +import org.junit.Test; +import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.BaseDAOTestCase; +import org.ovirt.engine.core.dao.FixturesTool; + +public class HostNicVfsConfigDaoTest extends BaseDAOTestCase { + private HostNicVfsConfigDao dao; + + private static final int NUM_OF_CONFIGS = 2; + + @Override + public void setUp() throws Exception { + super.setUp(); + + dao = dbFacade.getHostNicVfsConfigDao(); + } + + /** + * Ensures that a null hostNicVfsConfig is returned. + */ + @Test + public void testGetWithInvalidId() { + HostNicVfsConfig result = dao.get(Guid.Empty); + + assertNull(result); + } + + /** + * Ensures that retrieving a hostNicVfsConfig by id works as expected. + */ + @Test + public void testGetByName() { + HostNicVfsConfig result = dao.get(FixturesTool.HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED); + + assertNotNull(result); + assertEquals(FixturesTool.HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED, result.getId()); + } + + /** + * Ensures that all hostNicVfsConfig are returned. + */ + @Test + public void testGetAll() { + List<HostNicVfsConfig> result = dao.getAll(); + + assertNotNull(result); + assertEquals(NUM_OF_CONFIGS, result.size()); + } + + /** + * Ensures that saving a hostNicVfsConfig works as expected. + */ + @Test + public void testSave() { + + HostNicVfsConfig newConfig = new HostNicVfsConfig(); + + newConfig.setId(Guid.newGuid()); + newConfig.setNicId(FixturesTool.VDS_NETWORK_INTERFACE2); + newConfig.setMaxNumOfVfs(10); + newConfig.setNumOfVfs(10); + newConfig.setNumOfFreeVfs(10); + newConfig.setAllNetworksAllowed(true); + + dao.save(newConfig); + + HostNicVfsConfig result = dao.get(newConfig.getId()); + + assertNotNull(result); + assertHostNicVfsConfigEquals(newConfig, result); + } + + /** + * Ensures updating a hostNicVfsConfig works as expected. + */ + @Test + public void testUpdate() { + HostNicVfsConfig before = dao.get(FixturesTool.HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED); + + before.setNicId(FixturesTool.VDS_NETWORK_INTERFACE2); + before.setMaxNumOfVfs(before.getMaxNumOfVfs() + 1); + before.setNumOfVfs(before.getNumOfVfs() + 1); + before.setNumOfFreeVfs(before.getNumOfFreeVfs() + 1); + before.setAllNetworksAllowed(!before.isAllNetworksAllowed()); + + dao.update(before); + + HostNicVfsConfig after = dao.get(FixturesTool.HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED); + + assertNotNull(after); + assertHostNicVfsConfigEquals(before, after); + } + + /** + * Ensures that removing a hostNicVfsConfig works as expected. + */ + @Test + public void testRemove() { + HostNicVfsConfig result = dao.get(FixturesTool.HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED); + + assertNotNull(result); + + dao.remove(result.getId()); + + result = dao.get(FixturesTool.HOST_NIC_VFS_CONFIG_ALL_NETWORKS_ALLOWED); + + assertNull(result); + } + + private void assertHostNicVfsConfigEquals(HostNicVfsConfig config1, HostNicVfsConfig config2) { + assertEquals(config1.getId(), config2.getId()); + assertEquals(config1.getNicId(), config2.getNicId()); + assertEquals(config1.getMaxNumOfVfs(), config2.getMaxNumOfVfs()); + assertEquals(config1.getNumOfVfs(), config2.getNumOfVfs()); + assertEquals(config1.getNumOfFreeVfs(), config2.getNumOfFreeVfs()); + assertEquals(config1.isAllNetworksAllowed(), config2.isAllNetworksAllowed()); + } +} diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index ce57601..daa0541 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -7403,4 +7403,29 @@ <value>NOTSTARTED</value> </row> </table> + + <table name="host_nic_vfs_config"> + <column>id</column> + <column>nic_id</column> + <column>max_num_of_vfs</column> + <column>num_of_vfs</column> + <column>num_of_free_vfs</column> + <column>all_networks_allowed</column> + <row> + <value>6b31bcc8-c6c3-4884-9a10-5f1f076f20c1</value> + <value>ba31682e-6ae7-4f9d-8c6f-04c93acca9db</value> + <value>64</value> + <value>4</value> + <value>2</value> + <value>true</value> + </row> + <row> + <value>6b31bcc8-c6c3-4884-9a10-5f1f076f20c2</value> + <value>ba31682e-6ae7-4f9d-8c6f-04c93acca9df</value> + <value>7</value> + <value>1</value> + <value>0</value> + <value>false</value> + </row> + </table> </dataset> diff --git a/backend/manager/modules/extensions-manager/abrt_checker_31350.log b/backend/manager/modules/extensions-manager/abrt_checker_31350.log new file mode 100644 index 0000000..e3feb0f --- /dev/null +++ b/backend/manager/modules/extensions-manager/abrt_checker_31350.log @@ -0,0 +1,9 @@ +Uncaught java.lang.ClassNotFoundException exception in thread "main" in a method java.lang.ClassLoader.loadClass() with signature (Ljava/lang/String;Z)Ljava/lang/Class; +Exception in thread "main" java.lang.ClassNotFoundException: .home.alkaplan.dev.git.ovirt-engine.backend.manager.modules.extensions-manager.target.surefire.surefirebooter1515781891743312829.jar + at java.net.URLClassLoader$1.run(URLClassLoader.java:366) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/java/net/URLClassLoader$1.class] + at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/java/net/URLClassLoader$1.class] + at java.security.AccessController.doPrivileged(Native Method) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/java/security/AccessController.class] + at java.net.URLClassLoader.findClass(URLClassLoader.java:354) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/java/net/URLClassLoader.class] + at java.lang.ClassLoader.loadClass(ClassLoader.java:425) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/java/lang/ClassLoader.class] + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/sun/misc/Launcher$AppClassLoader.class] + at java.lang.ClassLoader.loadClass(ClassLoader.java:358) [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar!/java/lang/ClassLoader.class] diff --git a/packaging/dbscripts/network_sp.sql b/packaging/dbscripts/network_sp.sql index e3fb1fe..ec6a692 100644 --- a/packaging/dbscripts/network_sp.sql +++ b/packaging/dbscripts/network_sp.sql @@ -1307,3 +1307,70 @@ END; $procedure$ LANGUAGE plpgsql; + +---------------------------------------------------------------------- +-- hostNicVfsConfig +---------------------------------------------------------------------- + +Create or replace FUNCTION InserthostNicVfsConfig(v_id UUID, + v_nic_id UUID, + v_max_num_of_vfs INTEGER, + v_num_of_vfs INTEGER, + v_num_of_free_vfs INTEGER, + v_all_networks_allowed BOOLEAN) +RETURNS VOID + AS $procedure$ +BEGIN +INSERT INTO host_nic_vfs_config(id, nic_id, max_num_of_vfs, num_of_vfs, num_of_free_vfs, all_networks_allowed) + VALUES(v_id, v_nic_id, v_max_num_of_vfs, v_num_of_vfs, v_num_of_free_vfs, v_all_networks_allowed); +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION UpdatehostNicVfsConfig(v_id UUID, + v_nic_id UUID, + v_max_num_of_vfs INTEGER, + v_num_of_vfs INTEGER, + v_num_of_free_vfs INTEGER, + v_all_networks_allowed BOOLEAN) +RETURNS VOID + AS $procedure$ +BEGIN + UPDATE host_nic_vfs_config + SET id = v_id, nic_id = v_nic_id, max_num_of_vfs = v_max_num_of_vfs, num_of_vfs = v_num_of_vfs, + num_of_free_vfs = v_num_of_free_vfs, all_networks_allowed = v_all_networks_allowed, _update_date = LOCALTIMESTAMP + WHERE id = v_id; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION DeletehostNicVfsConfig(v_id UUID) +RETURNS VOID + AS $procedure$ +BEGIN + + DELETE FROM host_nic_vfs_config + WHERE id = v_id; + +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GethostNicVfsConfigByhostNicVfsConfigId(v_id UUID) RETURNS SETOF host_nic_vfs_config STABLE +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM host_nic_vfs_config + WHERE id = v_id; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetAllFromhostNicVfsConfigs() RETURNS SETOF host_nic_vfs_config STABLE +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM host_nic_vfs_config; +END; $procedure$ +LANGUAGE plpgsql; + diff --git a/packaging/dbscripts/upgrade/03_06_0590_add_host_nic_vfs_config_table.sql b/packaging/dbscripts/upgrade/03_06_0590_add_host_nic_vfs_config_table.sql new file mode 100644 index 0000000..85b18dc --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_0590_add_host_nic_vfs_config_table.sql @@ -0,0 +1,20 @@ +-- ---------------------------------------------------------------------- +-- table host_nic_vfs_config +-- ---------------------------------------------------------------------- + +CREATE TABLE host_nic_vfs_config +( + id UUID NOT NULL, + nic_id UUID NOT NULL, + max_num_of_vfs INTEGER NOT NULL, + num_of_vfs INTEGER NOT NULL, + num_of_free_vfs INTEGER NOT NULL, + all_networks_allowed BOOLEAN NOT NULL, + _create_date TIMESTAMP WITH TIME ZONE default LOCALTIMESTAMP, + _update_date TIMESTAMP WITH TIME ZONE default NULL, + CONSTRAINT PK_host_nic_vfs_id PRIMARY KEY (id) +); + +select fn_db_create_constraint('host_nic_vfs_config', 'vfs_config_nic_id_fk', 'FOREIGN KEY(nic_id) REFERENCES vds_interface(id) ON DELETE CASCADE'); +select fn_db_create_constraint('host_nic_vfs_config', 'vfs_config_nic_id_unique', 'unique (nic_id)'); +select fn_db_create_index('IDX_vfs_config_nic_id', 'host_nic_vfs_config', 'nic_id', ''); -- To view, visit http://gerrit.ovirt.org/35948 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I022a1d19d935832a8baae41c123322dff0ab779b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <alkap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches