Moti Asayag has uploaded a new change for review. Change subject: engine: Introduce VmNicDao ......................................................................
engine: Introduce VmNicDao The VmNicDao will serve as the DAO api for persisting VmNetworkInterface entities to the data base. It replaces the former VmNetworkInterfaceDao which will serve as a read-only DAO to retrieve a viewable entity to the clients. Change-Id: Ib3d1ff6dfc415915244367c153ffc064ddd0d0df Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/RemoveVmTemplateInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDao.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDaoDbFacadeImpl.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 M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java A backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNicDaoTest.java M packaging/dbscripts/create_views.sql M packaging/dbscripts/network_sp.sql M packaging/dbscripts/vm_templates_sp.sql M packaging/dbscripts/vms_sp.sql 29 files changed, 553 insertions(+), 179 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/17178/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java index e26a571..4cdebff 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java @@ -639,7 +639,7 @@ iface.setSpeed(VmInterfaceType.forValue(iface.getType()).getSpeed()); iface.setVmTemplateId(null); iface.setVmId(getParameters().getVmStaticData().getId()); - DbFacade.getInstance().getVmNetworkInterfaceDao().save(iface); + getVmNicDao().save(iface); getCompensationContext().snapshotNewEntity(iface); DbFacade.getInstance().getVmNetworkStatisticsDao().save(iface.getStatistics()); getCompensationContext().snapshotNewEntity(iface.getStatistics()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java index 60af471..0937e7e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java @@ -428,12 +428,12 @@ iDynamic.setId(Guid.newGuid()); iDynamic.setVmTemplateId(getVmTemplateId()); iDynamic.setName(iface.getName()); - iDynamic.setNetworkName(iface.getNetworkName()); + iDynamic.setVnicProfileId(iface.getVnicProfileId()); iDynamic.setSpeed(VmInterfaceType.forValue(iface.getType()).getSpeed()); iDynamic.setType(iface.getType()); iDynamic.setLinked(iface.isLinked()); templateInterfaces.add(iDynamic); - DbFacade.getInstance().getVmNetworkInterfaceDao().save(iDynamic); + getVmNicDao().save(iDynamic); } return templateInterfaces; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java index 6371b72..639a255 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java @@ -172,8 +172,8 @@ // if network not exists in cluster we remove the network to // interface connection if (net == null) { - iface.setNetworkName(null); - DbFacade.getInstance().getVmNetworkInterfaceDao().update(iface); + iface.setVnicProfileId(null); + getVmNicDao().update(iface); } } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java index 9007b5c..e3e8bdc 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java @@ -396,7 +396,7 @@ iDynamic.setSpeed(iface.getSpeed()); iDynamic.setType(iface.getType()); - DbFacade.getInstance().getVmNetworkInterfaceDao().save(iDynamic); + getVmNicDao().save(iDynamic); getCompensationContext().snapshotNewEntity(iDynamic); DbFacade.getInstance().getVmNetworkStatisticsDao().save(iStat); getCompensationContext().snapshotNewEntity(iStat); @@ -418,7 +418,7 @@ List<VmNetworkInterface> list = DbFacade.getInstance().getVmNetworkInterfaceDao().getAllForTemplate(getVmTemplateId()); for (VmNetworkInterface iface : list) { - DbFacade.getInstance().getVmNetworkInterfaceDao().remove(iface.getId()); + DbFacade.getInstance().getVmNicDao().remove(iface.getId()); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java index 3d244a9..9d90134 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.List; import java.util.Map; + import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter; @@ -176,8 +177,8 @@ // if network not exists in cluster we remove the network to // interface connection if (net == null) { - iface.setNetworkName(null); - DbFacade.getInstance().getVmNetworkInterfaceDao().update(iface); + iface.setVnicProfileId(null); + getVmNicDao().update(iface); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java index 5a5bf94..2c216b5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java @@ -19,9 +19,9 @@ import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmPayload; import org.ovirt.engine.core.common.businessentities.VmStatic; +import org.ovirt.engine.core.common.businessentities.tags; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; -import org.ovirt.engine.core.common.businessentities.tags; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBllMessages; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java index 01d0588..84127da 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java @@ -171,7 +171,7 @@ .getAllForTemplate(getVmTemplateId()); for (VmNetworkInterface iface : list) { DbFacade.getInstance().getVmDeviceDao().remove(new VmDeviceId(iface.getId(), getVmTemplateId())); - DbFacade.getInstance().getVmNetworkInterfaceDao().remove(iface.getId()); + getVmNicDao().remove(iface.getId()); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java index f94e53f..8eeffaa 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; + import org.ovirt.engine.core.bll.context.CompensationContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.FeatureSupported; @@ -19,6 +20,7 @@ import org.ovirt.engine.core.dao.VmDAO; import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; import org.ovirt.engine.core.dao.network.VmNetworkStatisticsDao; +import org.ovirt.engine.core.dao.network.VmNicDao; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; import org.ovirt.engine.core.utils.transaction.TransactionMethod; @@ -57,7 +59,7 @@ throw new VdcBLLException(VdcBllErrors.MAC_ADDRESS_IS_IN_USE); } - getVmNetworkInterfaceDao().save(iface); + getVmNicDao().save(iface); getVmNetworkStatisticsDao().save(iface.getStatistics()); compensationContext.snapshotNewEntity(iface); compensationContext.snapshotNewEntity(iface.getStatistics()); @@ -102,7 +104,7 @@ if (interfaces != null) { for (VmNetworkInterface iface : interfaces) { getMacPoolManager().freeMac(iface.getMacAddress()); - getVmNetworkInterfaceDao().remove(iface.getId()); + getVmNicDao().remove(iface.getId()); getVmNetworkStatisticsDao().remove(iface.getId()); } } @@ -184,6 +186,10 @@ return DbFacade.getInstance().getVmNetworkInterfaceDao(); } + protected VmNicDao getVmNicDao() { + return DbFacade.getInstance().getVmNicDao(); + } + protected VmDAO getVmDAO() { return DbFacade.getInstance().getVmDao(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java index d6444e0..c4cfa96 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java @@ -39,7 +39,7 @@ VmInterfaceType.forValue( getParameters().getInterface().getType()).getSpeed()); - getVmNetworkInterfaceDao().save(getParameters().getInterface()); + getVmNicDao().save(getParameters().getInterface()); VmDeviceUtils.addNetworkInterfaceDevice( new VmDeviceId(getParameters().getInterface().getId(), getParameters().getVmTemplateId()), getParameters().getInterface().isPlugged(), diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/RemoveVmTemplateInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/RemoveVmTemplateInterfaceCommand.java index 70cbe73..83b9fb0 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/RemoveVmTemplateInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/RemoveVmTemplateInterfaceCommand.java @@ -22,7 +22,7 @@ } getDbFacade().getVmDeviceDao().remove(new VmDeviceId(getParameters().getInterfaceId(), getParameters().getVmTemplateId())); - getVmNetworkInterfaceDao().remove(getParameters().getInterfaceId()); + getVmNicDao().remove(getParameters().getInterfaceId()); setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java index baf85b5..430e4a5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java @@ -27,7 +27,7 @@ @Override protected void executeCommand() { - getVmNetworkInterfaceDao().update(getParameters().getInterface()); + getVmNicDao().update(getParameters().getInterface()); VmDevice vmDevice = getDbFacade().getVmDeviceDao().get(new VmDeviceId(getParameters().getInterface().getId(), getParameters().getVmTemplateId())); vmDevice.setCustomProperties(getParameters().getInterface().getCustomProperties()); getDbFacade().getVmDeviceDao().update(vmDevice); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java index 35c62c2..df7fa48 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java @@ -87,7 +87,7 @@ } private void addInterfaceToDb(VmNetworkInterface vmNetworkInterface) { - getVmNetworkInterfaceDao().save(vmNetworkInterface); + getVmNicDao().save(vmNetworkInterface); getCompensationContext().snapshotNewEntity(vmNetworkInterface); getDbFacade().getVmNetworkStatisticsDao().save(vmNetworkInterface.getStatistics()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java index a4d7ad7..dd1000c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java @@ -42,7 +42,7 @@ } // remove from db - getVmNetworkInterfaceDao().remove(getParameters().getInterfaceId()); + getVmNicDao().remove(getParameters().getInterfaceId()); getDbFacade().getVmNetworkStatisticsDao().remove(getParameters().getInterfaceId()); getDbFacade().getVmDeviceDao().remove(new VmDeviceId(getParameters().getInterfaceId(), getParameters().getVmId())); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java index bd44a02..1a466e8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java @@ -83,7 +83,7 @@ public Void runInTransaction() { getCompensationContext().snapshotEntity(oldIface); getCompensationContext().snapshotEntity(oldVmDevice); - getVmNetworkInterfaceDao().update(getInterface()); + getVmNicDao().update(getInterface()); oldVmDevice.setCustomProperties(getInterface().getCustomProperties()); getDbFacade().getVmDeviceDao().update(oldVmDevice); getCompensationContext().stateChanged(); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java index b7b332d..0c57967 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java @@ -34,6 +34,7 @@ import org.ovirt.engine.core.dao.VmDAO; import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; import org.ovirt.engine.core.dao.network.VmNetworkStatisticsDao; +import org.ovirt.engine.core.dao.network.VmNicDao; import org.ovirt.engine.core.utils.MockConfigRule; import org.ovirt.engine.core.utils.RandomUtils; @@ -57,6 +58,9 @@ private VmNetworkInterfaceDao vmNetworkInterfaceDAO; @Mock + private VmNicDao vmNicDao; + + @Mock private VmDAO vmDAO; @Spy @@ -69,6 +73,7 @@ doReturn(macPoolManager).when(vmInterfaceManager).getMacPoolManager(); doReturn(vmNetworkStatisticsDAO).when(vmInterfaceManager).getVmNetworkStatisticsDao(); doReturn(vmNetworkInterfaceDAO).when(vmInterfaceManager).getVmNetworkInterfaceDao(); + doReturn(vmNicDao).when(vmInterfaceManager).getVmNicDao(); doReturn(vmDAO).when(vmInterfaceManager).getVmDAO(); doNothing().when(vmInterfaceManager).auditLogMacInUseUnplug(any(VmNetworkInterface.class)); @@ -182,7 +187,7 @@ */ protected void verifyAddDelegatedCorrectly(VmNetworkInterface iface, VerificationMode addMacVerification) { verify(macPoolManager, addMacVerification).forceAddMac(iface.getMacAddress()); - verify(vmNetworkInterfaceDAO).save(iface); + verify(vmNicDao).save(iface); verify(vmNetworkStatisticsDAO).save(iface.getStatistics()); } @@ -194,7 +199,7 @@ */ protected void verifyRemoveAllDelegatedCorrectly(VmNetworkInterface iface) { verify(macPoolManager, times(1)).freeMac(iface.getMacAddress()); - verify(vmNetworkInterfaceDAO).remove(iface.getId()); + verify(vmNicDao).remove(iface.getId()); verify(vmNetworkStatisticsDAO).remove(iface.getId()); } 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 1f302c9..7dca54d 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 @@ -108,6 +108,7 @@ import org.ovirt.engine.core.dao.network.NetworkViewDao; import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; import org.ovirt.engine.core.dao.network.VmNetworkStatisticsDao; +import org.ovirt.engine.core.dao.network.VmNicDao; import org.ovirt.engine.core.dao.network.VnicProfileDao; import org.ovirt.engine.core.dao.network.VnicProfileViewDao; import org.ovirt.engine.core.dao.provider.ProviderDao; @@ -941,4 +942,13 @@ public VnicProfileViewDao getVnicProfileViewDao() { return getDao(VnicProfileViewDao.class); } + + /** + * Returns the singleton instance of {@link VmNicDao}. + * + * @return the dao + */ + public VmNicDao getVmNicDao() { + return getDao(VmNicDao.class); + } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java index 83ec52a..f45f6ea 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java @@ -42,6 +42,7 @@ import org.ovirt.engine.core.dao.network.NetworkClusterDao; import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; +import org.ovirt.engine.core.dao.network.VmNicDao; import org.ovirt.engine.core.dao.network.VnicProfileDao; import org.ovirt.engine.core.dao.provider.ProviderDao; import org.ovirt.engine.core.utils.log.Log; @@ -612,6 +613,10 @@ return getDbFacade().getVmNetworkInterfaceDao(); } + protected VmNicDao getVmNicDao() { + return getDbFacade().getVmNicDao(); + } + protected NetworkClusterDao getNetworkClusterDAO() { return getDbFacade().getNetworkClusterDao(); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDao.java index 8d6cc8e..c9a7a02 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDao.java @@ -4,9 +4,9 @@ import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dao.GenericDao; +import org.ovirt.engine.core.dao.ReadDao; -public interface VmNetworkInterfaceDao extends GenericDao<VmNetworkInterface, Guid> { +public interface VmNetworkInterfaceDao extends ReadDao<VmNetworkInterface, Guid> { /** * Retrieves all interfaces for the given VM id. * diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java index 46d13ac..c4e6da4 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java @@ -94,63 +94,19 @@ } @Override - public void save(VmNetworkInterface stats) { - MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() - .addValue("id", stats.getId()) - .addValue("mac_addr", stats.getMacAddress()) - .addValue("name", stats.getName()) - .addValue("network_name", stats.getNetworkName()) - .addValue("speed", stats.getSpeed()) - .addValue("vm_guid", stats.getVmId()) - .addValue("vnic_profile_id", stats.getVnicProfileId()) - .addValue("vmt_guid", stats.getVmTemplateId()) - .addValue("type", stats.getType()) - .addValue("port_mirroring", stats.isPortMirroring()) - .addValue("linked", stats.isLinked()); - - getCallsHandler().executeModification("Insertvm_interface", parameterSource); - } - - @Override - public void update(VmNetworkInterface iface) { - MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() - .addValue("id", iface.getId()) - .addValue("mac_addr", iface.getMacAddress()) - .addValue("name", iface.getName()) - .addValue("network_name", iface.getNetworkName()) - .addValue("speed", iface.getSpeed()) - .addValue("vm_guid", iface.getVmId()) - .addValue("vnic_profile_id", iface.getVnicProfileId()) - .addValue("vmt_guid", iface.getVmTemplateId()) - .addValue("type", iface.getType()) - .addValue("port_mirroring", iface.isPortMirroring()) - .addValue("linked", iface.isLinked()); - - getCallsHandler().executeModification("Updatevm_interface", parameterSource); - } - - @Override - public void remove(Guid id) { - MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() - .addValue("id", id); - - getCallsHandler().executeModification("Deletevm_interface", parameterSource); - } - - @Override public List<VmNetworkInterface> getAll() { return getCallsHandler().executeReadList("GetAllFromvm_interface", mapper, getCustomMapSqlParameterSource()); } @Override public List<VmNetworkInterface> getAllForNetwork(Guid networkId) { - return getCallsHandler().executeReadList("GetVmInterfacesByNetworkId", + return getCallsHandler().executeReadList("GetVmInterfaceViewsByNetworkId", mapper, getCustomMapSqlParameterSource().addValue("network_id", networkId)); } @Override public List<VmNetworkInterface> getAllForTemplatesByNetwork(Guid networkId) { - return getCallsHandler().executeReadList("GetVmTemplateInterfacesByNetworkId", + return getCallsHandler().executeReadList("GetVmTemplateInterfaceViewsByNetworkId", mapper, getCustomMapSqlParameterSource().addValue("network_id", networkId)); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDao.java new file mode 100644 index 0000000..91b0d6d --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDao.java @@ -0,0 +1,63 @@ +package org.ovirt.engine.core.dao.network; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.VmNic; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.GenericDao; + +public interface VmNicDao extends GenericDao<VmNic, Guid> { + /** + * Retrieves all interfaces for the given VM id. + * + * @param id + * the Vm id + * @return the list of interfaces + */ + List<VmNic> getAllForVm(Guid id); + + /** + * Retrieves all interfaces for the given template id. + * + * @param id + * the template id + * @return the list of interfaces + */ + List<VmNic> getAllForTemplate(Guid id); + + /** + * Retrieves the interfaces that the given network is attached to. + * + * @param networkId + * the network + * @return the list of VmNetworkInterfaces + */ + List<VmNic> getAllForNetwork(Guid networkId); + + /** + * Retrieves the VmTemplate Network Interfaces that the given network is attached to. + * + * @param networkId + * the network + * @return the list of VmNetworkInterfaces + */ + List<VmNic> getAllForTemplatesByNetwork(Guid networkId); + + /** + * Retrieves the MAC addresses of the Vms in the given Data Center. + * + * @param dataCenterId + * the Data Center + * @return the list of MAC addresses + */ + List<String> getAllMacsByDataCenter(Guid dataCenterId); + + /*** + * Retrieves the plugged VmNetworkInterfaces that have the given MAC address + * + * @param macAddress + * the MAC address + * @return the list of plugged VmNetworkInterfaces + */ + List<VmNic> getPluggedForMac(String macAddress); +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDaoDbFacadeImpl.java new file mode 100644 index 0000000..28c3609 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNicDaoDbFacadeImpl.java @@ -0,0 +1,129 @@ +package org.ovirt.engine.core.dao.network; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.comparators.InterfaceComparerByMAC; +import org.ovirt.engine.core.common.businessentities.network.VmNic; +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 VmNicDaoDbFacadeImpl extends DefaultGenericDaoDbFacade<VmNic, Guid> implements VmNicDao { + + public VmNicDaoDbFacadeImpl() { + super("VmInterface"); + } + + @Override + public List<VmNic> getAllForVm(Guid id) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("vm_id", id); + + List<VmNic> results = + getCallsHandler().executeReadList("GetVmInterfacesByVmId", VnicRowMapper.INSTANCE, parameterSource); + Collections.sort(results, new InterfaceComparerByMAC()); + return results; + } + + @Override + public List<VmNic> getAllForTemplate(Guid id) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("template_id", id); + + return getCallsHandler().executeReadList("GetVmInterfaceByTemplateId", + VnicRowMapper.INSTANCE, + parameterSource); + } + + @Override + public List<VmNic> getAllForNetwork(Guid networkId) { + return getCallsHandler().executeReadList("GetVmInterfacesByNetworkId", + VnicRowMapper.INSTANCE, getCustomMapSqlParameterSource().addValue("network_id", networkId)); + } + + @Override + public List<VmNic> getAllForTemplatesByNetwork(Guid networkId) { + return getCallsHandler().executeReadList("GetVmTemplateInterfacesByNetworkId", + VnicRowMapper.INSTANCE, getCustomMapSqlParameterSource().addValue("network_id", networkId)); + } + + @Override + public List<String> getAllMacsByDataCenter(Guid dataCenterId) { + return getCallsHandler().executeReadList("GetMacsByDataCenterId", + macMapper, getCustomMapSqlParameterSource().addValue("data_center_id", dataCenterId)); + } + + @Override + public List<VmNic> getPluggedForMac(String macAddress) { + return getCallsHandler().executeReadList("GetPluggedVmInterfacesByMac", + VnicRowMapper.INSTANCE, getCustomMapSqlParameterSource().addValue("mac_address", macAddress)); + } + + @Override + protected MapSqlParameterSource createFullParametersMapper(VmNic entity) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("id", entity.getId()) + .addValue("mac_addr", entity.getMacAddress()) + .addValue("name", entity.getName()) + .addValue("speed", entity.getSpeed()) + .addValue("vm_guid", entity.getVmId()) + .addValue("vnic_profile_id", entity.getVnicProfileId()) + .addValue("vmt_guid", entity.getVmTemplateId()) + .addValue("type", entity.getType()) + .addValue("linked", entity.isLinked()); + return parameterSource; + } + + @Override + protected MapSqlParameterSource createIdParameterMapper(Guid id) { + return getCustomMapSqlParameterSource().addValue("id", id); + } + + @Override + protected RowMapper<VmNic> createEntityRowMapper() { + return VnicRowMapper.INSTANCE; + } + + static abstract class VmNicRowMapperBase<T extends VmNic> implements RowMapper<T> { + + @Override + public T mapRow(ResultSet rs, int rowNum) throws SQLException { + T entity = createVmNicEntity(); + entity.setId(getGuidDefaultEmpty(rs, "id")); + entity.setName(rs.getString("name")); + entity.setVmId(getGuid(rs, "vm_guid")); + entity.setVmTemplateId(getGuid(rs, "vmt_guid")); + entity.setType((Integer) rs.getObject("type")); + entity.setMacAddress(rs.getString("mac_addr")); + entity.setVnicProfileId(getGuid(rs, "vnic_profile_id")); + entity.setSpeed((Integer) rs.getObject("speed")); + entity.setLinked(rs.getBoolean("linked")); + return entity; + } + + abstract protected T createVmNicEntity(); + } + + private static class VnicRowMapper extends VmNicRowMapperBase<VmNic> { + + public static VnicRowMapper INSTANCE = new VnicRowMapper(); + + @Override + protected VmNic createVmNicEntity() { + return new VmNic(); + } + + } + + protected final RowMapper<String> macMapper = new RowMapper<String>() { + + private static final int MAC_COLUMN_POSITION = 1; + + @Override + public String mapRow(ResultSet rs, int rowNum) throws SQLException { + return rs.getString(MAC_COLUMN_POSITION); + } + }; +} 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 e6312a8..351b430 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 @@ -9,6 +9,7 @@ InterfaceDao=org.ovirt.engine.core.dao.network.InterfaceDaoDbFacadeImpl VmNetworkInterfaceDao=org.ovirt.engine.core.dao.network.VmNetworkInterfaceDaoDbFacadeImpl VnicProfileDao=org.ovirt.engine.core.dao.network.VnicProfileDaoDbFacadeImpl +VmNicDao=org.ovirt.engine.core.dao.network.VmNicDaoDbFacadeImpl VnicProfileViewDao=org.ovirt.engine.core.dao.network.VnicProfileViewDaoDbFacadeImpl VmNetworkStatisticsDao=org.ovirt.engine.core.dao.network.VmNetworkStatisticsDaoDbFacadeImpl LunDAO=org.ovirt.engine.core.dao.LunDAODbFacadeImpl 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 6e5c447..bd28aed 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 @@ -379,7 +379,9 @@ public static final String MAC_ADDRESS = "00:1a:4a:16:87:db"; - public static final int NUMBER_OF_VM_INTERFACES = 3; + public static final int NUMBER_OF_VM_INTERFACE_VIEWS = 3; + + public static final int NUMBER_OF_VM_INTERFACES = 4; /** * Gluster Hook ID(s) diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java index 67935c6..1c8303f 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java @@ -13,7 +13,6 @@ import org.junit.Test; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; -import org.ovirt.engine.core.common.businessentities.VmDeviceId; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VmNetworkStatistics; import org.ovirt.engine.core.compat.Guid; @@ -207,63 +206,11 @@ } } - /** - * Ensures that saving an interface works as expected. - */ - @Test - public void testSave() { - newVmInterface.setVmId(VM_ID); - newVmDevice.setId(new VmDeviceId(newVmInterface.getId(), VM_ID)); - - dao.save(newVmInterface); - vmDevicesDao.save(newVmDevice); - StatsDao.save(newVmInterface.getStatistics()); - - VmNetworkInterface savedInterface = dao.get(newVmInterface.getId()); - assertNotNull(savedInterface); - assertEquals(newVmInterface.getName(), savedInterface.getName()); - } - - /** - * Ensures updating an interface works. - */ - @Test - public void testUpdate() { - List<VmNetworkInterface> before = dao.getAllForVm(VM_ID); - VmNetworkInterface iface = before.get(0); - - iface.setName(iface.getName().toUpperCase()); - - dao.update(iface); - - List<VmNetworkInterface> after = dao.getAllForVm(VM_ID); - boolean found = false; - - for (VmNetworkInterface ifaced : after) { - found |= ifaced.getName().equals(iface.getName()); - } - - assertTrue(found); - } - - /** - * Ensures that the specified VM's interfaces are deleted. - */ - @Test - public void testRemove() { - assertNotNull(dao.get(FixturesTool.VM_NETWORK_INTERFACE)); - dao.remove(FixturesTool.VM_NETWORK_INTERFACE); - assertNull(dao.get(FixturesTool.VM_NETWORK_INTERFACE)); - - dao.save(existingVmInterface); - assertNotNull(dao.get(FixturesTool.VM_NETWORK_INTERFACE)); - } - @Test public void testGetAll() throws Exception { List<VmNetworkInterface> interfaces = dao.getAll(); assertNotNull(interfaces); - assertEquals(FixturesTool.NUMBER_OF_VM_INTERFACES, interfaces.size()); + assertEquals(FixturesTool.NUMBER_OF_VM_INTERFACE_VIEWS, interfaces.size()); } @Test diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNicDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNicDaoTest.java new file mode 100644 index 0000000..741b348 --- /dev/null +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNicDaoTest.java @@ -0,0 +1,194 @@ +package org.ovirt.engine.core.dao.network; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.BaseDAOTestCase; +import org.ovirt.engine.core.dao.FixturesTool; + +public class VmNicDaoTest extends BaseDAOTestCase { + private static final Guid TEMPLATE_ID = new Guid("1b85420c-b84c-4f29-997e-0eb674b40b79"); + private static final Guid VM_ID = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4355"); + + private VmNicDao dao; + + private VmNic existingVmNic; + private VmNic existingTemplateNic; + private VmNic newVmNic; + + @Override + public void setUp() throws Exception { + super.setUp(); + + dao = dbFacade.getVmNicDao(); + existingVmNic = dao.get(FixturesTool.VM_NETWORK_INTERFACE); + existingTemplateNic = dao.get(FixturesTool.TEMPLATE_NETWORK_INTERFACE); + + newVmNic = new VmNetworkInterface(); + newVmNic.setId(Guid.newGuid()); + newVmNic.setVnicProfileId(FixturesTool.VM_NETWORK_INTERFACE_PROFILE); + newVmNic.setName("eth77"); + newVmNic.setLinked(true); + newVmNic.setSpeed(1000); + newVmNic.setType(3); + newVmNic.setMacAddress("01:C0:81:21:71:17"); + } + + /** + * Ensures null is returned. + */ + @Test + public void testGetWithNonExistingId() { + VmNic result = dao.get(Guid.newGuid()); + assertNull(result); + } + + /** + * Ensures that the network interface is returned. + */ + @Test + public void testGet() { + VmNic result = dao.get(FixturesTool.VM_NETWORK_INTERFACE); + assertNotNull(result); + assertEquals(FixturesTool.VM_NETWORK_INTERFACE, result.getId()); + } + + /** + * Ensures that an empty collection is returned. + */ + @Test + public void testGetAllForTemplateWithInvalidTemplate() { + List<VmNic> result = dao.getAllForTemplate(Guid.newGuid()); + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + /** + * Ensures that interfaces are returned. + */ + @Test + public void testGetAllForTemplate() { + List<VmNic> result = dao.getAllForTemplate(TEMPLATE_ID); + assertCorrectResultForTemplate(result); + } + + /** + * Ensures an empty collection is returned. + */ + @Test + public void testGetAllInterfacesForVmWithInvalidVm() { + List<VmNic> result = dao.getAllForVm(Guid.newGuid()); + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + /** + * Ensures that a collection of interfaces related the specified VM are returned. + */ + @Test + public void testGetAllInterfacesForVm() { + List<VmNic> result = dao.getAllForVm(VM_ID); + assertNotNull(result); + assertFalse(result.isEmpty()); + for (VmNic iface : result) { + assertEquals(VM_ID, iface.getVmId()); + } + } + + /** + * Ensures that saving an interface works as expected. + */ + @Test + public void testSave() { + newVmNic.setVmId(VM_ID); + dao.save(newVmNic); + + VmNic savedInterface = dao.get(newVmNic.getId()); + assertNotNull(savedInterface); + assertEquals(newVmNic.getName(), savedInterface.getName()); + } + + /** + * Ensures updating an interface works. + */ + @Test + public void testUpdate() { + List<VmNic> before = dao.getAllForVm(VM_ID); + VmNic iface = before.get(0); + + iface.setName(iface.getName().toUpperCase()); + dao.update(iface); + + List<VmNic> after = dao.getAllForVm(VM_ID); + boolean found = false; + + for (VmNic ifaced : after) { + found |= ifaced.getName().equals(iface.getName()); + } + + assertTrue(found); + } + + /** + * Ensures that the specified VM's interfaces are deleted. + */ + @Test + public void testRemove() { + assertNotNull(dao.get(FixturesTool.VM_NETWORK_INTERFACE)); + dao.remove(FixturesTool.VM_NETWORK_INTERFACE); + assertNull(dao.get(FixturesTool.VM_NETWORK_INTERFACE)); + + dao.save(existingVmNic); + assertNotNull(dao.get(FixturesTool.VM_NETWORK_INTERFACE)); + } + + @Test + public void testGetAll() throws Exception { + List<VmNic> interfaces = dao.getAll(); + assertNotNull(interfaces); + assertEquals(FixturesTool.NUMBER_OF_VM_INTERFACES, interfaces.size()); + } + + @Test + public void testGetAllForTemplatesByNetwork() throws Exception { + List<VmNic> result = dao.getAllForTemplatesByNetwork(FixturesTool.NETWORK_ENGINE); + assertEquals(existingTemplateNic, result.get(0)); + } + + @Test + public void testGetAllForNetwork() throws Exception { + List<VmNic> result = dao.getAllForNetwork(FixturesTool.NETWORK_ENGINE); + assertEquals(existingVmNic, result.get(0)); + } + + @Test + public void testGetAllMacsByStoragePool() throws Exception { + List<String> result = dao.getAllMacsByDataCenter(FixturesTool.STORAGE_POOL_NFS_2); + assertEquals(FixturesTool.MAC_ADDRESS, result.get(0)); + } + + @Test + public void testGetPluggedForMac() throws Exception { + List<VmNic> result = dao.getPluggedForMac(FixturesTool.MAC_ADDRESS); + for (VmNic vmNetworkInterface : result) { + assertEquals(FixturesTool.MAC_ADDRESS, vmNetworkInterface.getMacAddress()); + } + } + + private void assertCorrectResultForTemplate(List<VmNic> result) { + assertNotNull(result); + assertFalse(result.isEmpty()); + for (VmNic iface : result) { + assertEquals(TEMPLATE_ID, iface.getVmTemplateId()); + } + } +} diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index d582449..1652a5a 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -845,8 +845,7 @@ JOIN vm_interface ON vm_interface_statistics.id = vm_interface.id JOIN vm_static ON vm_interface.vm_guid = vm_static.vm_guid JOIN vm_device ON vm_interface.vm_guid = vm_device.vm_id AND vm_interface.id = vm_device.device_id - LEFT JOIN vnic_profiles ON vnic_profiles.id = vm_interface.vnic_profile_id - JOIN network ON network.id = vnic_profiles.network_id + LEFT JOIN (vnic_profiles JOIN network ON network.id = vnic_profiles.network_id) ON vnic_profiles.id = vm_interface.vnic_profile_id UNION SELECT vm_interface_statistics.rx_rate, vm_interface_statistics.tx_rate, vm_interface_statistics.rx_drop, vm_interface_statistics.tx_drop, vm_interface_statistics.iface_status, vm_interface.type, vm_interface.speed, @@ -858,8 +857,7 @@ RIGHT JOIN vm_interface ON vm_interface_statistics.id = vm_interface.id JOIN vm_static AS vm_templates ON vm_interface.vmt_guid = vm_templates.vm_guid JOIN vm_device ON vm_interface.vmt_guid = vm_device.vm_id AND vm_interface.id = vm_device.device_id - LEFT JOIN vnic_profiles ON vnic_profiles.id = vm_interface.vnic_profile_id - JOIN network ON network.id = vnic_profiles.network_id; + LEFT JOIN (vnic_profiles JOIN network ON network.id = vnic_profiles.network_id) ON vnic_profiles.id = vm_interface.vnic_profile_id; ---------------------------------------------- -- Event Notification Views ---------------------------------------------- diff --git a/packaging/dbscripts/network_sp.sql b/packaging/dbscripts/network_sp.sql index 9370afb..b0fe204 100644 --- a/packaging/dbscripts/network_sp.sql +++ b/packaging/dbscripts/network_sp.sql @@ -445,69 +445,54 @@ ---------------------------------------------------------------- -- [vm_interface] Table --- - - -Create or replace FUNCTION Insertvm_interface(v_id UUID, - v_mac_addr VARCHAR(20) , - v_name VARCHAR(50), - v_network_name VARCHAR(50) , - v_speed INTEGER , - v_vnic_profile_id UUID , - v_vm_guid UUID , - v_vmt_guid UUID , +---------------------------------------------------------------- +Create or replace FUNCTION InsertVmInterface(v_id UUID, + v_mac_addr VARCHAR(20) , + v_name VARCHAR(50), + v_speed INTEGER , + v_vnic_profile_id UUID , + v_vm_guid UUID , + v_vmt_guid UUID , v_type INTEGER, - v_port_mirroring BOOLEAN, v_linked BOOLEAN) RETURNS VOID AS $procedure$ BEGIN -INSERT INTO vm_interface(id, mac_addr, name, network_name, speed, vnic_profile_id, VM_GUID, VMT_GUID, type, port_mirroring, linked) - VALUES(v_id, v_mac_addr, v_name, v_network_name, v_speed, v_vnic_profile_id, v_vm_guid, v_vmt_guid, v_type, v_port_mirroring, v_linked); +INSERT INTO vm_interface(id, mac_addr, name, speed, vnic_profile_id, vm_guid, vmt_guid, type, linked) + VALUES(v_id, v_mac_addr, v_name, v_speed, v_vnic_profile_id, v_vm_guid, v_vmt_guid, v_type, v_linked); END; $procedure$ LANGUAGE plpgsql; - - - -Create or replace FUNCTION Updatevm_interface(v_id UUID, - v_mac_addr VARCHAR(20) , - v_name VARCHAR(50), - v_network_name VARCHAR(50) , - v_speed INTEGER , - v_vnic_profile_id UUID , - v_vm_guid UUID , - v_vmt_guid UUID , +Create or replace FUNCTION UpdateVmInterface(v_id UUID, + v_mac_addr VARCHAR(20) , + v_name VARCHAR(50), + v_speed INTEGER , + v_vnic_profile_id UUID , + v_vm_guid UUID , + v_vmt_guid UUID , v_type INTEGER, - v_port_mirroring BOOLEAN, v_linked BOOLEAN) RETURNS VOID - - --The [vm_interface] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated AS $procedure$ BEGIN UPDATE vm_interface - SET mac_addr = v_mac_addr,name = v_name,network_name = v_network_name, - speed = v_speed, vnic_profile_id = v_vnic_profile_id, VM_GUID = v_vm_guid,VMT_GUID = v_vmt_guid,type = v_type, - _update_date = LOCALTIMESTAMP, port_mirroring = v_port_mirroring, linked = v_linked + SET mac_addr = v_mac_addr,name = v_name, speed = v_speed, vnic_profile_id = v_vnic_profile_id, vm_guid = v_vm_guid, + vmt_guid = v_vmt_guid,type = v_type, _update_date = LOCALTIMESTAMP, linked = v_linked WHERE id = v_id; END; $procedure$ LANGUAGE plpgsql; - - - -Create or replace FUNCTION Deletevm_interface(v_id UUID) +Create or replace FUNCTION DeleteVmInterface(v_id UUID) RETURNS VOID AS $procedure$ DECLARE v_val UUID; BEGIN - -- Get (and keep) a shared lock with "right to upgrade to exclusive" - -- in order to force locking parent before children + -- Get (and keep) a shared lock with "right to upgrade to exclusive" + -- in order to force locking parent before children select id INTO v_val FROM vm_interface WHERE id = v_id FOR UPDATE; DELETE FROM vm_interface @@ -517,7 +502,85 @@ LANGUAGE plpgsql; +Create or replace FUNCTION GetVmInterfaceByVmInterfaceId(v_id UUID) RETURNS SETOF vm_interface +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM vm_interface + WHERE id = v_id; +END; $procedure$ +LANGUAGE plpgsql; + +Create or replace FUNCTION GetAllFromVmInterfaces() RETURNS SETOF vm_interface +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM vm_interface; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetVmInterfacesByVmId(v_vm_id UUID) +RETURNS SETOF vm_interface +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM vm_interface + WHERE vm_guid = v_vm_id; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetVmInterfaceByTemplateId(v_template_id UUID) +RETURNS SETOF vm_interface +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM vm_interface + WHERE vmt_guid = v_template_id; + +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetVmInterfacesByNetworkId(v_network_id UUID) RETURNS SETOF vm_interface +AS $procedure$ +BEGIN + RETURN QUERY SELECT vm_interface.* + FROM vm_interface + INNER JOIN vnic_profiles ON vm_interface.vnic_profile_id = vnic_profiles.id + INNER JOIN vm_static on vm_interface.vm_guid = vm_static.vm_guid + WHERE vnic_profiles.network_id = v_network_id + AND vm_static.entity_type = 'VM'; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetVmTemplateInterfacesByNetworkId(v_network_id UUID) RETURNS SETOF vm_interface +AS $procedure$ +BEGIN + RETURN QUERY SELECT vm_interface.* + FROM vm_interface + INNER JOIN vm_static on vm_interface.vmt_guid = vm_static.vm_guid + INNER JOIN vnic_profiles ON vm_interface.vnic_profile_id = vnic_profiles.id + WHERE vnic_profiles.network_id = v_network_id + AND vm_static.entity_type = 'TEMPLATE'; +END; $procedure$ +LANGUAGE plpgsql; + +---------------------------------------------------------------- +-- VM Interface View +---------------------------------------------------------------- + +Create or replace FUNCTION GetAllFromvm_interface() RETURNS SETOF vm_interface_view +AS $procedure$ +BEGIN +RETURN QUERY SELECT * +FROM vm_interface_view; + +END; $procedure$ +LANGUAGE plpgsql; @@ -914,7 +977,7 @@ -Create or replace FUNCTION GetVmInterfacesByNetworkId(v_network_id UUID) RETURNS SETOF vm_interface_view +Create or replace FUNCTION GetVmInterfaceViewsByNetworkId(v_network_id UUID) RETURNS SETOF vm_interface_view AS $procedure$ BEGIN RETURN QUERY SELECT vm_interface_view.* @@ -931,7 +994,7 @@ -Create or replace FUNCTION GetVmTemplateInterfacesByNetworkId(v_network_id UUID) RETURNS SETOF vm_interface_view +Create or replace FUNCTION GetVmTemplateInterfaceViewsByNetworkId(v_network_id UUID) RETURNS SETOF vm_interface_view AS $procedure$ BEGIN RETURN QUERY SELECT vm_interface_view.* diff --git a/packaging/dbscripts/vm_templates_sp.sql b/packaging/dbscripts/vm_templates_sp.sql index 16309ef..6fc1f5b 100644 --- a/packaging/dbscripts/vm_templates_sp.sql +++ b/packaging/dbscripts/vm_templates_sp.sql @@ -399,12 +399,9 @@ WHERE EXISTS ( SELECT 1 FROM vm_interface - INNER JOIN network - ON network.name = vm_interface.network_name - INNER JOIN network_cluster - ON network.id = network_cluster.network_id - WHERE network.id = v_network_id - AND vm_templates_view.vds_group_id = network_cluster.cluster_id + INNER JOIN vnic_profiles + ON vnic_profiles.id = vm_interface.vnic_profile_id + WHERE vnic_profiles.network_id = v_network_id AND vm_interface.vmt_guid = vm_templates_view.vmt_guid); END; $procedure$ LANGUAGE plpgsql; diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql index e2076ba..20504f3 100644 --- a/packaging/dbscripts/vms_sp.sql +++ b/packaging/dbscripts/vms_sp.sql @@ -1108,12 +1108,9 @@ WHERE EXISTS ( SELECT 1 FROM vm_interface - INNER JOIN network - ON network.name = vm_interface.network_name - INNER JOIN network_cluster - ON network.id = network_cluster.network_id - WHERE network_id = v_network_id - AND vms.vds_group_id = network_cluster.cluster_id + INNER JOIN vnic_profiles + ON vnic_profiles.id = vm_interface.vnic_profile_id + WHERE vnic_profiles.network_id = v_network_id AND vm_interface.vm_guid = vms.vm_guid); END; $procedure$ LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/17178 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib3d1ff6dfc415915244367c153ffc064ddd0d0df 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