Repository: stratos Updated Branches: refs/heads/master 964d35dee -> 094b5fb6a
Adding logic to activate mock iaas component once stratos manager is activated Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/094b5fb6 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/094b5fb6 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/094b5fb6 Branch: refs/heads/master Commit: 094b5fb6a25e952ce66ac5fa350541335b13e194 Parents: 964d35d Author: Imesh Gunaratne <[email protected]> Authored: Sat Mar 28 18:50:09 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Sat Mar 28 18:50:09 2015 +0530 ---------------------------------------------------------------------- .../internal/AutoscalerServiceComponent.java | 2 +- .../org/apache/stratos/common/Component.java | 2 +- .../StratosManagerServiceComponent.java | 2 +- components/org.apache.stratos.mock.iaas/pom.xml | 5 ++ .../iaas/internal/MockIaasServiceComponent.java | 60 ++++++++++++++------ .../iaas/internal/ServiceReferenceHolder.java | 10 ++++ 6 files changed, 62 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java index 81608ec..a1c038e 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java @@ -101,7 +101,7 @@ public class AutoscalerServiceComponent { try { ComponentStartUpSynchronizer componentStartUpSynchronizer = ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer(); - // Wait for cloud controller component to start + // Wait for cloud controller component to be activated componentStartUpSynchronizer.waitForComponentActivation(Component.Autoscaler, Component.CloudController); http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java index 28f5341..c59593a 100644 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java @@ -23,5 +23,5 @@ package org.apache.stratos.common; * Stratos components enumeration. */ public enum Component { - MessageBroker, StratosManager, CloudController, Autoscaler, ComplexEventProcessor + MessageBroker, StratosManager, CloudController, Autoscaler, ComplexEventProcessor, MockIaaS } http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java index 00fc68d..796d8b6 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java @@ -107,7 +107,7 @@ public class StratosManagerServiceComponent { ComponentStartUpSynchronizer componentStartUpSynchronizer = ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer(); - // Wait for cloud controller and autoscaler components to start + // Wait for cloud controller and autoscaler components to be activated componentStartUpSynchronizer.waitForComponentActivation(Component.StratosManager, Component.CloudController); componentStartUpSynchronizer.waitForComponentActivation(Component.StratosManager, http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.mock.iaas/pom.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/pom.xml b/components/org.apache.stratos.mock.iaas/pom.xml index 9a0aed1..ba2e4c7 100644 --- a/components/org.apache.stratos.mock.iaas/pom.xml +++ b/components/org.apache.stratos.mock.iaas/pom.xml @@ -31,6 +31,11 @@ </dependency> <dependency> <groupId>org.apache.stratos</groupId> + <artifactId>org.apache.stratos.common</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.stratos</groupId> <artifactId>org.apache.stratos.messaging</artifactId> <version>${project.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java index f998401..e1828e8 100644 --- a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java +++ b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java @@ -21,6 +21,8 @@ package org.apache.stratos.mock.iaas.internal; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.common.Component; +import org.apache.stratos.common.services.ComponentStartUpSynchronizer; import org.apache.stratos.mock.iaas.config.MockIaasConfig; import org.apache.stratos.mock.iaas.persistence.PersistenceManager; import org.apache.stratos.mock.iaas.persistence.PersistenceManagerFactory; @@ -38,30 +40,48 @@ import org.wso2.carbon.registry.core.session.UserRegistry; * @scr.component name="org.apache.stratos.mock.iaas.internal.MockIaasServiceComponent" immediate="true" * @scr.reference name="registry.service" interface="org.wso2.carbon.registry.core.service.RegistryService" * cardinality="1..1" policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService" + * @scr.reference name="componentStartUpSynchronizer" interface="org.apache.stratos.common.services.ComponentStartUpSynchronizer" + * cardinality="1..1" policy="dynamic" bind="setComponentStartUpSynchronizer" unbind="unsetComponentStartUpSynchronizer" */ public class MockIaasServiceComponent { private static final Log log = LogFactory.getLog(MockIaasServiceComponent.class); - protected void activate(ComponentContext context) { - try { - if(!MockIaasConfig.getInstance().isEnabled()) { - log.debug("Mock IaaS is disabled, Mock IaaS service component is not activated"); - return; - } + protected void activate(final ComponentContext context) { + Runnable mockIaasActivator = new Runnable() { + @Override + public void run() { + try { + if(!MockIaasConfig.getInstance().isEnabled()) { + log.debug("Mock IaaS is disabled, Mock IaaS service component is not activated"); + return; + } - PersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager(PersistenceManagerType.Registry); - MockIaasServiceUtil mockIaasServiceUtil = new MockIaasServiceUtil(persistenceManager); - mockIaasServiceUtil.startInstancesPersisted(); + ComponentStartUpSynchronizer componentStartUpSynchronizer = + ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer(); - MockIaasService mockIaasService = new MockIaasServiceImpl(); - context.getBundleContext().registerService(MockIaasService.class.getName(), mockIaasService, null); - log.info("Mock IaaS service registered"); + // Wait for stratos manager to be activated + componentStartUpSynchronizer.waitForComponentActivation(Component.MockIaaS, + Component.StratosManager); - log.info("Mock IaaS service component activated"); - } catch (Exception e) { - log.error("An error occurred when starting mock instances", e); - } + PersistenceManager persistenceManager = + PersistenceManagerFactory.getPersistenceManager(PersistenceManagerType.Registry); + MockIaasServiceUtil mockIaasServiceUtil = new MockIaasServiceUtil(persistenceManager); + mockIaasServiceUtil.startInstancesPersisted(); + + MockIaasService mockIaasService = new MockIaasServiceImpl(); + context.getBundleContext().registerService(MockIaasService.class.getName(), mockIaasService, null); + log.info("Mock IaaS service registered"); + + componentStartUpSynchronizer.setComponentStatus(Component.MockIaaS, true); + log.info("Mock IaaS service component activated"); + } catch (Exception e) { + log.error("An error occurred when starting mock instances", e); + } + } + }; + Thread mockIaasActivatorThread = new Thread(mockIaasActivator); + mockIaasActivatorThread.start(); } protected void deactivate(ComponentContext context) { @@ -87,4 +107,12 @@ public class MockIaasServiceComponent { } ServiceReferenceHolder.getInstance().setRegistry(null); } + + protected void setComponentStartUpSynchronizer(ComponentStartUpSynchronizer componentStartUpSynchronizer) { + ServiceReferenceHolder.getInstance().setComponentStartUpSynchronizer(componentStartUpSynchronizer); + } + + protected void unsetComponentStartUpSynchronizer(ComponentStartUpSynchronizer componentStartUpSynchronizer) { + ServiceReferenceHolder.getInstance().setComponentStartUpSynchronizer(null); + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java index 1d75f8a..1334d93 100644 --- a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java +++ b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java @@ -19,6 +19,7 @@ package org.apache.stratos.mock.iaas.internal; +import org.apache.stratos.common.services.ComponentStartUpSynchronizer; import org.wso2.carbon.registry.core.session.UserRegistry; /** @@ -28,6 +29,7 @@ public class ServiceReferenceHolder { private static volatile ServiceReferenceHolder instance; private UserRegistry registry; + private ComponentStartUpSynchronizer componentStartUpSynchronizer; private ServiceReferenceHolder() { } @@ -50,4 +52,12 @@ public class ServiceReferenceHolder { public UserRegistry getRegistry() { return registry; } + + public void setComponentStartUpSynchronizer(ComponentStartUpSynchronizer componentStartUpSynchronizer) { + this.componentStartUpSynchronizer = componentStartUpSynchronizer; + } + + public ComponentStartUpSynchronizer getComponentStartUpSynchronizer() { + return componentStartUpSynchronizer; + } }
