Moti Asayag has uploaded a new change for review. Change subject: core,engine: Add NetworkView entity ......................................................................
core,engine: Add NetworkView entity The NetworkView entity represents a view over the network with partial information of its data-center. It will serve the search engine to fetch the required information when searching for network entities. Change-Id: I60d5473347642ed7d96c89accd675977dd86e017 Bug-Url: https://bugzilla.redhat.com/858742 Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/dbscripts/create_views.sql A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/NetworkView.java 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/NetworkViewDao.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDaoDbFacadeImpl.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/NetworkViewDaoTest.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml 9 files changed, 221 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/8652/1 diff --git a/backend/manager/dbscripts/create_views.sql b/backend/manager/dbscripts/create_views.sql index 8fd50b5..180f9fc 100644 --- a/backend/manager/dbscripts/create_views.sql +++ b/backend/manager/dbscripts/create_views.sql @@ -1036,6 +1036,28 @@ AND q_limit.storage_id IS NULL AND vds_groups.vds_group_id = q_limit.vds_group_id; +---------------------------------------------- +-- Network +---------------------------------------------- + +CREATE OR REPLACE VIEW network_view +AS +SELECT network.id AS network_id, + network.name AS network_name, + network.description AS network_description, + network.type AS network_type, + network.addr AS addr, + network.subnet AS subnet, + network.gateway AS gateway, + network.vlan_id AS vlan_id, + network.stp AS stp, + network.mtu AS mtu, + network.vm_network AS vm_network, + network.storage_pool_id AS storage_pool_id, + storage_pool.name AS storage_pool_name, + storage_pool.compatibility_version AS compatibility_version +FROM network +INNER JOIN storage_pool ON network.storage_pool_id = storage_pool.id; ---------------------------------------------- -- Query Permissions diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/NetworkView.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/NetworkView.java new file mode 100644 index 0000000..cebdb5d --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/NetworkView.java @@ -0,0 +1,89 @@ +package org.ovirt.engine.core.common.businessentities; + +import java.io.Serializable; + +import org.ovirt.engine.core.compat.Version; + +public class NetworkView extends IVdcQueryable implements Serializable { + + private static final long serialVersionUID = 7541192304006710467L; + + private Network network; + private String storagePoolName; + private Version compatibilityVersion; + + @Override + public Object getQueryableId() { + return network.getQueryableId(); + } + + public Network getNetwork() { + return network; + } + + public void setNetwork(Network network) { + this.network = network; + } + + public String getStoragePoolName() { + return storagePoolName; + } + + public void setStoragePoolName(String storagePoolName) { + this.storagePoolName = storagePoolName; + } + + public Version getCompatibilityVersion() { + return compatibilityVersion; + } + + public void setCompatabilityVersion(Version compatibilityVersion) { + this.compatibilityVersion = compatibilityVersion; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((compatibilityVersion == null) ? 0 : compatibilityVersion.hashCode()); + result = prime * result + ((network == null) ? 0 : network.hashCode()); + result = prime * result + ((storagePoolName == null) ? 0 : storagePoolName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + NetworkView other = (NetworkView) obj; + if (compatibilityVersion == null) { + if (other.compatibilityVersion != null) { + return false; + } + } else if (!compatibilityVersion.equals(other.compatibilityVersion)) { + return false; + } + if (network == null) { + if (other.network != null) { + return false; + } + } else if (!network.equals(other.network)) { + return false; + } + if (storagePoolName == null) { + if (other.storagePoolName != null) { + return false; + } + } else if (!storagePoolName.equals(other.storagePoolName)) { + return false; + } + return true; + } +} 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 edb3d12..787b238 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 @@ -16,6 +16,8 @@ import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.DiskImageDynamic; import org.ovirt.engine.core.common.businessentities.Image; +import org.ovirt.engine.core.common.businessentities.Network; +import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.Snapshot; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageDomainType; @@ -30,9 +32,7 @@ import org.ovirt.engine.core.common.businessentities.VmStatistics; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.image_storage_domain_map; -import org.ovirt.engine.core.common.businessentities.Network; import org.ovirt.engine.core.common.businessentities.permissions; -import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.storage_domain_dynamic; import org.ovirt.engine.core.common.businessentities.storage_domain_static; import org.ovirt.engine.core.common.businessentities.storage_domains; @@ -66,6 +66,7 @@ import org.ovirt.engine.core.dao.LunDAO; import org.ovirt.engine.core.dao.NetworkClusterDAO; import org.ovirt.engine.core.dao.NetworkDAO; +import org.ovirt.engine.core.dao.NetworkViewDao; import org.ovirt.engine.core.dao.PermissionDAO; import org.ovirt.engine.core.dao.QuotaDAO; import org.ovirt.engine.core.dao.RepoFileMetaDataDAO; @@ -633,6 +634,15 @@ } /** + * Returns the singleton instance of {@link NetworkViewDao}. + * + * @return the dao + */ + public NetworkViewDao getNetworkViewDao() { + return getDao(NetworkViewDao.class); + } + + /** * Returns the singleton instance of {@link NetworkClusterDAO}. * * @return the dao diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDao.java new file mode 100644 index 0000000..44e2a3a --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDao.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.dao; + +import org.ovirt.engine.core.common.businessentities.NetworkView; + +/** + * <code>NetworkViewDao</code> defines a type for performing Search queries on instances of {@link NetworkView}. + * + * + */ +public interface NetworkViewDao extends DAO, SearchDAO<NetworkView> { +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDaoDbFacadeImpl.java new file mode 100644 index 0000000..ed30984 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkViewDaoDbFacadeImpl.java @@ -0,0 +1,50 @@ +package org.ovirt.engine.core.dao; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.Network; +import org.ovirt.engine.core.common.businessentities.NetworkView; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.NGuid; +import org.ovirt.engine.core.compat.Version; +import org.springframework.jdbc.core.simple.ParameterizedRowMapper; +import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; + +/** + * <code>NetworkViewDaoDbFacadeImpl</code> provides a concrete implementation of {@link #NetworViewkDao}. + */ +public class NetworkViewDaoDbFacadeImpl extends BaseDAODbFacade implements NetworkViewDao { + + @Override + public List<NetworkView> getAllWithQuery(String query) { + return new SimpleJdbcTemplate(jdbcTemplate).query(query, NetworkViewRowMapper.instance); + } + + private static class NetworkViewRowMapper implements ParameterizedRowMapper<NetworkView> { + public final static NetworkViewRowMapper instance = new NetworkViewRowMapper(); + + @Override + public NetworkView mapRow(ResultSet rs, int rowNum) throws SQLException { + NetworkView entity = new NetworkView(); + Network network = new Network(); + network.setId(Guid.createGuidFromString(rs.getString("network_id"))); + network.setname(rs.getString("network_name")); + network.setdescription(rs.getString("network_description")); + network.settype((Integer) rs.getObject("network_type")); + network.setaddr(rs.getString("addr")); + network.setsubnet(rs.getString("subnet")); + network.setgateway(rs.getString("gateway")); + network.setvlan_id((Integer) rs.getObject("vlan_id")); + network.setstp(rs.getBoolean("stp")); + network.setstorage_pool_id(NGuid.createGuidFromString(rs.getString("storage_pool_id"))); + network.setMtu(rs.getInt("mtu")); + network.setVmNetwork(rs.getBoolean("vm_network")); + entity.setNetwork(network); + entity.setStoragePoolName(rs.getString("storage_pool_name")); + entity.setCompatabilityVersion(new Version(rs.getString("compatibility_version"))); + 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 48871ee..bf00603 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 @@ -55,3 +55,4 @@ GlusterBrickDao=org.ovirt.engine.core.dao.gluster.GlusterBrickDaoDbFacadeImpl GlusterOptionDao=org.ovirt.engine.core.dao.gluster.GlusterOptionDaoDbFacadeImpl ImageStorageDomainMapDao=org.ovirt.engine.core.dao.ImageStorageDomainMapDaoDbFacadeImpl +NetworkViewDao=org.ovirt.engine.core.dao.NetworkViewDaoDbFacadeImpl 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 a52138b..792f19e 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 @@ -199,4 +199,9 @@ * EXISTING_STORAGE_CONNECTION_ID */ protected static final Guid EXISTING_DOMAIN_ID_FOR_CONNECTION_ID = new Guid("c2211b56-8869-41cd-84e1-78d7cb96f31d"); + + /** + * ID of an existing network + */ + protected static final Guid EXISTING_NETWORK_ID = new Guid("58d5c1c6-cb15-4832-b2a4-023770607188"); } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkViewDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkViewDaoTest.java new file mode 100644 index 0000000..4bf5f2c --- /dev/null +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkViewDaoTest.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.core.dao; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.junit.Test; +import org.ovirt.engine.core.common.businessentities.NetworkView; + +public class NetworkViewDaoTest extends BaseDAOTestCase { + private NetworkViewDao dao; + + @Override + public void setUp() throws Exception { + super.setUp(); + dao = prepareDAO(dbFacade.getNetworkViewDao()); + } + + /** + * Test query + */ + @Test + public void testGetAllWithQuery() { + List<NetworkView> result = + dao.getAllWithQuery(String.format("SELECT * FROM network_view where network_id = '%s'", + FixturesTool.EXISTING_NETWORK_ID)); + + assertEquals(FixturesTool.EXISTING_NETWORK_ID, result.get(0).getNetwork().getId()); + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index c7f16d3..1dfbc15 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -56,6 +56,7 @@ <include name="common/businessentities/network_cluster.java" /> <include name="common/businessentities/NetworkClusterId.java" /> <include name="common/businessentities/Network.java" /> + <include name="common/businessentities/NetworkView.java" /> <include name="common/businessentities/NetworkBootProtocol.java" /> <include name="common/businessentities/NetworkInterface.java" /> <include name="common/businessentities/NetworkStatistics.java" /> -- To view, visit http://gerrit.ovirt.org/8652 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I60d5473347642ed7d96c89accd675977dd86e017 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <masa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches