Muli Salem has uploaded a new change for review. Change subject: engine: Internal VmNic Information (WIP) ......................................................................
engine: Internal VmNic Information (WIP) This patch adds the new VmInterfaceDynamic entity, to represent the internal information of VmNics. It also adds a Dao class for CRUD operations, and a new table called vm_interface_dynamic. The VmInterfaceDynamic entity will be held by the existing VmNetworkInterface entity, and is therefore removed and returned upon remove() and get() operations respectively, in VmNetworkInterfaceDAO. Unit tests will be added in following patch. Change-Id: I89ffbbb96826c5dca8e4c9cdcddbe122c3523960 Signed-off-by: Muli Salem <msa...@redhat.com> --- M backend/manager/dbscripts/create_tables.sql M backend/manager/dbscripts/network_sp.sql A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInterfaceDynamic.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmNetworkInterface.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/VmInterfaceDynamicDao.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmNetworkInterfaceDAODbFacadeImpl.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml 9 files changed, 262 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/24/9424/1 diff --git a/backend/manager/dbscripts/create_tables.sql b/backend/manager/dbscripts/create_tables.sql index 0f5cd19..ad1ee2a 100644 --- a/backend/manager/dbscripts/create_tables.sql +++ b/backend/manager/dbscripts/create_tables.sql @@ -894,6 +894,15 @@ vmt_guid); +CREATE TABLE vm_interface_dynamic +( + id UUID NOT NULL, + interface_name VARCHAR(50), + ipv4_addresses text, + ipv6_addresses text, + CONSTRAINT PK_vm_interface_dynamic PRIMARY KEY(id) +) WITH OIDS; + -- ---------------------------------------------------------------------- -- vm_interface_statistics table diff --git a/backend/manager/dbscripts/network_sp.sql b/backend/manager/dbscripts/network_sp.sql index 38a52ad..a815463 100644 --- a/backend/manager/dbscripts/network_sp.sql +++ b/backend/manager/dbscripts/network_sp.sql @@ -561,6 +561,49 @@ LANGUAGE plpgsql; +---------------------------------------------------------------- +-- [vm_interface_dynamic] Table +-- + + +Create or replace FUNCTION GetVmInterfaceDynamicByVmInterfaceDynamicId(v_id UUID) +RETURNS SETOF vm_interface_dynamic + AS $procedure$ +BEGIN +RETURN QUERY SELECT * + FROM vm_interface_dynamic + WHERE id = v_id +END; $procedure$ +LANGUAGE plpgsql; + + + +Create or replace FUNCTION DeleteVmInterfaceDynamic(v_id UUID) +RETURNS VOID + AS $procedure$ +BEGIN + DELETE FROM vm_interface_dynamic + WHERE id = v_id; +END; $procedure$ +LANGUAGE plpgsql; + + + +Create or replace FUNCTION UpdateVmInterfaceDynamic(v_id UUID, + v_id UUID, + v_interface_name VARCHAR(50), + v_ipv4_addresses text, + v_ipv6_addresses text) +RETURNS VOID + + AS $procedure$ +BEGIN + UPDATE vm_interface_dynamic + SET interface_id = v_interface_name, ipv4_addresses = v_ipv4_addresses, ipv6_addresses = v_ipv6_addresses + WHERE id = v_id; +END; $procedure$ +LANGUAGE plpgsql; + ---------------------------------------------------------------- diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInterfaceDynamic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInterfaceDynamic.java new file mode 100644 index 0000000..d1911b7 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInterfaceDynamic.java @@ -0,0 +1,112 @@ +package org.ovirt.engine.core.common.businessentities; + +import org.ovirt.engine.core.compat.Guid; + +public class VmInterfaceDynamic extends IVdcQueryable implements BusinessEntity<Guid>{ + + /** + * The VmInterfaceDynamic's ID uniquely identifies a VmInterfaceDynamic in the system. + */ + private Guid id; + + /** + * The internal nic's name + */ + String interfaceName; + + /** + * The vNic's IPv4 addresses + */ + String ipv4Addresses; + + /** + * The vNic's IPv6 addresses + */ + String ipv6Addresses; + + public Guid getId() { + return id; + } + + public void setId(Guid id) { + this.id = id; + } + + public String getInterfaceName() { + return interfaceName; + } + + public void setInterfaceName(String interfaceName) { + this.interfaceName = interfaceName; + } + + public String getIpv4Addresses() { + return ipv4Addresses; + } + + public void setIpv4Addresses(String ipv4Addresses) { + this.ipv4Addresses = ipv4Addresses; + } + + public String getIpv6Addresses() { + return ipv6Addresses; + } + + public void setIpv6Addresses(String ipv6Addresses) { + this.ipv6Addresses = ipv6Addresses; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + result = prime * result + ((interfaceName == null) ? 0 : interfaceName.hashCode()); + result = prime * result + ((ipv4Addresses == null) ? 0 : ipv4Addresses.hashCode()); + result = prime * result + ((ipv6Addresses == null) ? 0 : ipv6Addresses.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof VmInterfaceDynamic)) { + return false; + } + VmInterfaceDynamic other = (VmInterfaceDynamic) obj; + if (id == null) { + if (other.id != null) { + return false; + } + } else if (!id.equals(other.id)) { + return false; + } + if (interfaceName == null) { + if (other.interfaceName != null) { + return false; + } + } else if (!interfaceName.equals(other.interfaceName)) { + return false; + } + if (ipv4Addresses == null) { + if (other.ipv4Addresses != null) { + return false; + } + } else if (!ipv4Addresses.equals(other.ipv4Addresses)) { + return false; + } + if (ipv6Addresses == null) { + if (other.ipv6Addresses != null) { + return false; + } + } else if (!ipv6Addresses.equals(other.ipv6Addresses)) { + return false; + } + return true; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmNetworkInterface.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmNetworkInterface.java index 156887b..13f474d 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmNetworkInterface.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmNetworkInterface.java @@ -31,6 +31,7 @@ /* status of the nic. Active nic is one that is plugged to its VM */ private boolean active = true; private boolean portMirroring; + private VmInterfaceDynamic vmInterfaceDynamic; private static final ArrayList<String> _changeablePropertiesList = new ArrayList<String>(Arrays.asList(new String[] { @@ -176,6 +177,7 @@ result = prime * result + ((vmId == null) ? 0 : vmId.hashCode()); result = prime * result + ((vmName == null) ? 0 : vmName.hashCode()); result = prime * result + ((vmTemplateId == null) ? 0 : vmTemplateId.hashCode()); + result = prime * result + ((vmInterfaceDynamic == null) ? 0 : vmInterfaceDynamic.hashCode()); return result; } @@ -215,6 +217,13 @@ } else if (!vmTemplateId.equals(other.vmTemplateId)) { return false; } + if (vmInterfaceDynamic == null) { + if (other.vmInterfaceDynamic != null) { + return false; + } + } else if (!vmInterfaceDynamic.equals(other.vmInterfaceDynamic)) { + return false; + } return true; } @@ -225,4 +234,12 @@ public void setPortMirroring(boolean portMirroring) { this.portMirroring = portMirroring; } + + public VmInterfaceDynamic getVmInterfaceDynamic() { + return vmInterfaceDynamic; + } + + public void setVmInterfaceDynamic(VmInterfaceDynamic vmInterfaceDynamic) { + this.vmInterfaceDynamic = vmInterfaceDynamic; + } } 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 787b238..ce15abe 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 @@ -92,6 +92,7 @@ import org.ovirt.engine.core.dao.VmDAO; import org.ovirt.engine.core.dao.VmDeviceDAO; import org.ovirt.engine.core.dao.VmDynamicDAO; +import org.ovirt.engine.core.dao.VmInterfaceDynamicDao; import org.ovirt.engine.core.dao.VmNetworkInterfaceDAO; import org.ovirt.engine.core.dao.VmNetworkStatisticsDAO; import org.ovirt.engine.core.dao.VmPoolDAO; @@ -873,4 +874,13 @@ public int getConnectionCheckInterval() { return connectionCheckInterval; } + + /** + * Returns the singleton instance of {@link VmInterfaceDynamicDao}. + * + * @return the dao + */ + public VmInterfaceDynamicDao getVmInterfaceDynamic() { + return getDao(VmInterfaceDynamicDao.class); + } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDao.java new file mode 100644 index 0000000..ac67481 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDao.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.dao; + +import org.ovirt.engine.core.common.businessentities.VmInterfaceDynamic; +import org.ovirt.engine.core.compat.Guid; + +/** + * <code>VmInterfaceDynamicDAO</code> defines a type for performing CRUD operations on instances of + * {@link VmInterfaceDynamic}. + */ +public interface VmInterfaceDynamicDao extends GenericDao<VmInterfaceDynamic, Guid>, MassOperationsDao<VmInterfaceDynamic, Guid> { +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDaoDbFacadeImpl.java new file mode 100644 index 0000000..ddd4ea9 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInterfaceDynamicDaoDbFacadeImpl.java @@ -0,0 +1,54 @@ +package org.ovirt.engine.core.dao; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.ovirt.engine.core.common.businessentities.VmInterfaceDynamic; +import org.ovirt.engine.core.compat.Guid; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; +import org.springframework.jdbc.core.simple.ParameterizedRowMapper; + +public class VmInterfaceDynamicDaoDbFacadeImpl + extends MassOperationsGenericDaoDbFacade<VmInterfaceDynamic, Guid> + implements VmInterfaceDynamicDao +{ + + public VmInterfaceDynamicDaoDbFacadeImpl() { + super("VmInterfaceDynamic"); + setProcedureNameForGetAll("GetAllFromVmInterfaceDynamic"); + } + + @Override + protected MapSqlParameterSource createFullParametersMapper(VmInterfaceDynamic entity) { + return getCustomMapSqlParameterSource() + .addValue("id", entity.getId()) + .addValue("interface_name", entity.getInterfaceName()) + .addValue("ipv4_addresses", entity.getIpv4Addresses()) + .addValue("ipv6_addresses", entity.getIpv6Addresses()); + } + + @Override + protected MapSqlParameterSource createIdParameterMapper(Guid id) { + return getCustomMapSqlParameterSource().addValue("id", id); + } + + private final static class VmInterfaceDynamicRowMapper implements ParameterizedRowMapper<VmInterfaceDynamic> { + public static VmInterfaceDynamicRowMapper instance = new VmInterfaceDynamicRowMapper(); + + @Override + public VmInterfaceDynamic mapRow(ResultSet rs, int rowNum) + throws SQLException { + VmInterfaceDynamic vmInterfaceDynamic = new VmInterfaceDynamic(); + vmInterfaceDynamic.setId(Guid.createGuidFromString(rs.getString("id"))); + vmInterfaceDynamic.setInterfaceName(rs.getString("interface_name")); + vmInterfaceDynamic.setIpv4Addresses(rs.getString("ipv4_addresses")); + vmInterfaceDynamic.setIpv6Addresses(rs.getString("ipv6_addresses")); + return vmInterfaceDynamic; + } + } + + @Override + protected ParameterizedRowMapper<VmInterfaceDynamic> createEntityRowMapper() { + return VmInterfaceDynamicRowMapper.instance; + } +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmNetworkInterfaceDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmNetworkInterfaceDAODbFacadeImpl.java index 5ed06cf..5819b87 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmNetworkInterfaceDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmNetworkInterfaceDAODbFacadeImpl.java @@ -10,6 +10,7 @@ import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; @@ -48,7 +49,9 @@ @Override public VmNetworkInterface get(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("id", id); - return getCallsHandler().executeRead("Getvm_interfaceById", mapper, parameterSource); + VmNetworkInterface entity = getCallsHandler().executeRead("Getvm_interfaceById", mapper, parameterSource); + entity.setVmInterfaceDynamic(DbFacade.getInstance().getVmInterfaceDynamic().get(id)); + return entity; } @Override @@ -118,6 +121,7 @@ .addValue("id", id); getCallsHandler().executeModification("Deletevm_interface", parameterSource); + getCallsHandler().executeModification("DeleteVmInterfaceDynamic", parameterSource); } @Override 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 2daa132..661fb6f 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 @@ -155,6 +155,7 @@ <include name="common/businessentities/FileTypeExtension.java" /> <include name="common/businessentities/BusinessEntityGuidComparator.java" /> <include name="common/businessentities/BusinessEntityComparator.java" /> + <include name="common/businessentities/VmInterfaceDynamic.java" /> <include name="common/job/*.java" /> -- To view, visit http://gerrit.ovirt.org/9424 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I89ffbbb96826c5dca8e4c9cdcddbe122c3523960 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Muli Salem <msa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches