From e522ecb3a194bd752c72f2ccb7c147cafdd45e9b Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Wed, 6 Jul 2011 17:22:14 -0700 Subject: [PATCH] Add data integrity check for Console Proxy/SSVM/Domain Router --- .../com/cloud/consoleproxy/ConsoleProxyManagerImpl.java | 7 +++++++ .../network/router/VirtualNetworkApplianceManagerImpl.java | 7 +++++++ .../storage/secondary/SecondaryStorageManagerImpl.java | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 6910d8c2037..234c69e8e34 100644 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -1248,6 +1248,13 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx _serviceOffering = new ServiceOfferingVO("System Offering For Console Proxy", 1, _proxyRamSize, _proxyCpuMHz, 0, 0, false, null, useLocalStorage, true, null, true, VirtualMachine.Type.ConsoleProxy, true); _serviceOffering.setUniqueName("Cloud.com-ConsoleProxy"); _serviceOffering = _offeringDao.persistSystemServiceOffering(_serviceOffering); + + // this can sometimes happen, if DB is manually or programmatically manipulated + if(_serviceOffering == null) { + String msg = "Data integrity problem : System Offering For Console Proxy has been removed?"; + s_logger.error(msg); + throw new ConfigurationException(msg); + } _loadScanner = new SystemVmLoadScanner(this); _loadScanner.initScan(STARTUP_DELAY, _capacityScanInterval); diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 7f705664b19..3c38fc53022 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -550,6 +550,13 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian _offering = new ServiceOfferingVO("System Offering For Software Router", 1, _routerRamSize, _routerCpuMHz, null, null, true, null, useLocalStorage, true, null, true, VirtualMachine.Type.DomainRouter, true); _offering.setUniqueName("Cloud.Com-SoftwareRouter"); _offering = _serviceOfferingDao.persistSystemServiceOffering(_offering); + + // this can sometimes happen, if DB is manually or programmatically manipulated + if(_offering == null) { + String msg = "Data integrity problem : System Offering For Software router VM has been removed?"; + s_logger.error(msg); + throw new ConfigurationException(msg); + } _systemAcct = _accountService.getSystemAccount(); diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 707c3275c69..a8ada877a8b 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -784,6 +784,13 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V _serviceOffering = new ServiceOfferingVO("System Offering For Secondary Storage VM", 1, _secStorageVmRamSize, _secStorageVmCpuMHz, null, null, false, null, _useLocalStorage, true, null, true, VirtualMachine.Type.SecondaryStorageVm, true); _serviceOffering.setUniqueName("Cloud.com-SecondaryStorage"); _serviceOffering = _offeringDao.persistSystemServiceOffering(_serviceOffering); + + // this can sometimes happen, if DB is manually or programmatically manipulated + if(_serviceOffering == null) { + String msg = "Data integrity problem : System Offering For Secondary Storage VM has been removed?"; + s_logger.error(msg); + throw new ConfigurationException(msg); + } if (_useServiceVM) { _loadScanner = new SystemVmLoadScanner(this);