CLOUDSTACK-1818: make DababaseCreator ready to invoke DatabaseUpgradeChecker, adjust Component startup sequence for integrity checkers

Signed-off-by: Chip Childers <chip.childers@gmail.com>
This commit is contained in:
Kelven Yang 2013-03-27 13:08:03 +00:00
parent 3ab744d100
commit 85971b5194
4 changed files with 28 additions and 13 deletions

View File

@ -35,6 +35,7 @@
<!--
@DB support
-->
<bean id="componentContext" class="com.cloud.utils.component.ComponentContext" />
<bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" />
<bean id="actionEventInterceptor" class="com.cloud.event.ActionEventInterceptor" />
@ -688,7 +689,6 @@
<bean id="apiServlet" class="com.cloud.api.ApiServlet" />
<bean id="cloudOrchestrator" class="org.apache.cloudstack.platform.orchestration.CloudOrchestrator" />
<bean id="clusterRestService" class="org.apache.cloudstack.engine.rest.service.api.ClusterRestService" />
<bean id="componentContext" class="com.cloud.utils.component.ComponentContext" />
<bean id="consoleProxyServlet" class="com.cloud.servlet.ConsoleProxyServlet" />
<bean id="dataCenterResourceManagerImpl" class="org.apache.cloudstack.engine.datacenter.entity.api.DataCenterResourceManagerImpl" />
<bean id="dataDisk" class="org.apache.cloudstack.engine.subsystem.api.storage.type.DataDisk" />

View File

@ -103,6 +103,14 @@
<defaultGoal>install</defaultGoal>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>test/resources</directory>

View File

@ -27,6 +27,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.cloud.utils.PropertiesUtil;
import com.cloud.utils.component.ComponentContext;
@ -117,6 +119,11 @@ public class DatabaseCreator {
}
public static void main(String[] args) {
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[] {"/com/cloud/upgrade/databaseCreatorContext.xml"});
appContext.getBean(ComponentContext.class);
String dbPropsFile = "";
List<String> sqlFiles = new ArrayList<String>();
List<String> upgradeClasses = new ArrayList<String>();

View File

@ -81,6 +81,18 @@ public class ComponentContext implements ApplicationContextAware {
for(Map.Entry<String, ComponentLifecycle> entry : lifecyleComponents.entrySet()) {
classifiedComponents[entry.getValue().getRunLevel()].put(entry.getKey(), entry.getValue());
}
// Run the SystemIntegrityCheckers first
Map<String, SystemIntegrityChecker> integrityCheckers = getApplicationContext().getBeansOfType(SystemIntegrityChecker.class);
for (Entry<String,SystemIntegrityChecker> entry : integrityCheckers.entrySet() ){
s_logger.info ("Running SystemIntegrityChecker " + entry.getKey());
try {
entry.getValue().check();
} catch(Throwable e) {
s_logger.error("System integrity check failed. Refuse to startup");
System.exit(1);
}
}
// configuration phase
Map<String, String> avoidMap = new HashMap<String, String>();
@ -105,18 +117,6 @@ public class ComponentContext implements ApplicationContextAware {
avoidMap.put(implClassName, implClassName);
}
}
// Run the SystemIntegrityCheckers first
Map<String, SystemIntegrityChecker> integrityCheckers = getApplicationContext().getBeansOfType(SystemIntegrityChecker.class);
for (Entry<String,SystemIntegrityChecker> entry : integrityCheckers.entrySet() ){
s_logger.info ("Running SystemIntegrityChecker " + entry.getKey());
try {
entry.getValue().check();
} catch(Throwable e) {
s_logger.error("System integrity check failed. Refuse to startup");
System.exit(1);
}
}
// starting phase
avoidMap.clear();