Ramesh N has uploaded a new change for review. Change subject: engine: <WIP> event subscribtion support for gluster events ......................................................................
engine: <WIP> event subscribtion support for gluster events Enabling event subscriber framework for gluster events in ovirt-engine. Change-Id: I7c6caa37a75a2bb91b2a4f190d1d99ee7b4586da Signed-off-by: Ramesh Nachimuthu <rnach...@redhat.com> --- M backend/manager/dependencies/pom.xml A backend/manager/dependencies/src/main/modules/com/google/common/eventbus/main/module.xml M backend/manager/modules/bll/pom.xml M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEvent.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEventProcessor.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java M ear/src/main/resources/META-INF/MANIFEST.MF 9 files changed, 106 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/24079/1 diff --git a/backend/manager/dependencies/pom.xml b/backend/manager/dependencies/pom.xml index b393894..70607db 100644 --- a/backend/manager/dependencies/pom.xml +++ b/backend/manager/dependencies/pom.xml @@ -75,6 +75,12 @@ <version>${xmlrpc-client.version}</version> </dependency> + <dependency> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-guava</artifactId> + <version>0.11.1</version> + </dependency> + <dependency> <groupId>org.ovirt.otopi</groupId> <artifactId>otopi</artifactId> @@ -405,6 +411,12 @@ <moduleName>com.woorea.openstack.sdk</moduleName> </module> + <module> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-guava</artifactId> + <moduleName>com.google.common.eventbus</moduleName> + </module> + <module> <groupId>com.woorea</groupId> <artifactId>quantum-client</artifactId> diff --git a/backend/manager/dependencies/src/main/modules/com/google/common/eventbus/main/module.xml b/backend/manager/dependencies/src/main/modules/com/google/common/eventbus/main/module.xml new file mode 100644 index 0000000..a142096 --- /dev/null +++ b/backend/manager/dependencies/src/main/modules/com/google/common/eventbus/main/module.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<module xmlns="urn:jboss:module:1.1" name="org.sonatype.sisu"> + + <resources> + <resource-root path="sisu-guava.jar"/> + </resources> + + <dependencies> + <module name="com.google.common.eventbus"/> + </dependencies> + +</module> \ No newline at end of file diff --git a/backend/manager/modules/bll/pom.xml b/backend/manager/modules/bll/pom.xml index 1e82e6c..7b9ac71 100644 --- a/backend/manager/modules/bll/pom.xml +++ b/backend/manager/modules/bll/pom.xml @@ -99,6 +99,12 @@ <artifactId>commons-collections</artifactId> </dependency> + <dependency> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-guava</artifactId> + <version>0.11.1</version> + </dependency> + <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java index 7640521..11fd7ac 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java @@ -20,6 +20,7 @@ import org.apache.commons.collections.KeyValue; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.exception.ExceptionUtils; +import org.ovirt.engine.core.bll.attestationbroker.AttestThread; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.interceptors.ThreadLocalSessionCleanerInterceptor; import org.ovirt.engine.core.bll.interfaces.BackendCommandObjectsHandler; @@ -74,8 +75,8 @@ import org.ovirt.engine.core.utils.log.LogFactory; import org.ovirt.engine.core.utils.osinfo.OsInfoPreferencesLoader; import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl; -import org.ovirt.engine.core.bll.attestationbroker.AttestThread; +import com.google.common.eventbus.EventBus; // Here we use a Singleton Bean // The @Startup annotation is to make sure the bean is initialized on startup. // @ConcurrencyManagement - we use bean managed concurrency: @@ -98,7 +99,7 @@ private DateTime _startedAt; private static boolean firstInitialization = true; private String poolMonitoringJobId; - + private EventBus eventBus; public static BackendInternal getInstance() { return EjbUtils.findBean(BeanType.BACKEND, BeanProxyType.LOCAL); } @@ -197,7 +198,7 @@ initOsRepository(); initSearchDependencies(); initHandlers(); - + initEventBus(); final String AppErrorsFileName = "bundles/AppErrors.properties"; final String VdsErrorsFileName = "bundles/VdsmErrors.properties"; errorsTranslator = new ErrorTranslatorImpl(AppErrorsFileName, VdsErrorsFileName); @@ -247,6 +248,15 @@ 1, quotaCacheIntervalInMinutes, TimeUnit.MINUTES); //initializes attestation initAttestation(); + } + + private void initEventBus() { + this.eventBus = new EventBus("EventBus"); + initializeGlusterEventSubscriber(); + } + + private void initializeGlusterEventSubscriber() { + this.eventBus.register(new GlusterEventProcessor()); } private void initAttestation() { @@ -675,5 +685,10 @@ return runAction(action, true, ExecutionHandler.createDefaultContexForTasks(executionContext)); } + @Override + public EventBus getEventBus() { + return eventBus; + } + private static final Log log = LogFactory.getLog(Backend.class); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEvent.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEvent.java new file mode 100644 index 0000000..de81049 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEvent.java @@ -0,0 +1,34 @@ +package org.ovirt.engine.core.bll; + +public class GlusterEvent { + + private String eventName; + private String eventType; + private Object eventEntity; + + public GlusterEvent(String eventName, String eventType, Object eventEntity) { + super(); + this.eventName = eventName; + this.eventType = eventType; + this.eventEntity = eventEntity; + } + + public Object getEventEntity() { + return eventEntity; + } + public void setEventEntity(Object eventEntity) { + this.eventEntity = eventEntity; + } + public String getEventType() { + return eventType; + } + public void setEventType(String eventType) { + this.eventType = eventType; + } + public String getEventName() { + return eventName; + } + public void setEventName(String eventName) { + this.eventName = eventName; + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEventProcessor.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEventProcessor.java new file mode 100644 index 0000000..76ef1de --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GlusterEventProcessor.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.bll; + +import com.google.common.eventbus.Subscribe; + +public class GlusterEventProcessor { + + @Subscribe + public void handleGlusterEvents(GlusterEvent event) { + Object eventEntity = event.getEventEntity(); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java index d19d3d3..bb8411a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; +import org.ovirt.engine.core.bll.GlusterEvent; import org.ovirt.engine.core.bll.LockIdNameAttribute; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.context.CommandContext; @@ -173,6 +174,11 @@ setVolumeOptions(createdVolume); getReturnValue().setActionReturnValue(createdVolume.getId()); + raiseGlusterEvent(createdVolume); + } + + private void raiseGlusterEvent(GlusterVolumeEntity createdVolume) { + getBackend().getEventBus().post(new GlusterEvent("VOLUME_CREATED", "VOLUME_EVENT", createdVolume)); } private void setVolumeType(GlusterVolumeEntity createdVolume) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java index 5377f94..e7bc777 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java @@ -13,6 +13,8 @@ import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.DateTime; +import com.google.common.eventbus.EventBus; + public interface BackendInternal extends BackendLocal { VdcReturnValueBase runInternalAction(VdcActionType actionType, VdcActionParametersBase parameters); @@ -82,4 +84,6 @@ ArrayList<VdcReturnValueBase> runInternalMultipleActions(VdcActionType actionType, ArrayList<VdcActionParametersBase> parameters, ExecutionContext executionContext); + + EventBus getEventBus(); } diff --git a/ear/src/main/resources/META-INF/MANIFEST.MF b/ear/src/main/resources/META-INF/MANIFEST.MF index 0e2ecec..64ae51b 100644 --- a/ear/src/main/resources/META-INF/MANIFEST.MF +++ b/ear/src/main/resources/META-INF/MANIFEST.MF @@ -6,6 +6,7 @@ org.apache.commons.collections, org.apache.commons.httpclient, org.apache.commons.lang, + com.google.common.eventbus, org.apache.log4j, org.apache.mina, org.apache.xmlrpc, @@ -24,4 +25,4 @@ org.quartz, org.springframework, com.woorea.openstack.sdk services, - org.yaml.snakeyaml + org.yaml.snakeyaml \ No newline at end of file -- To view, visit http://gerrit.ovirt.org/24079 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7c6caa37a75a2bb91b2a4f190d1d99ee7b4586da Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ramesh N <rnach...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches