event notification service and API
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/7d9381ed Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/7d9381ed Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/7d9381ed Branch: refs/heads/events-framework Commit: 7d9381edd3b02166b1ddc7303e3f9093bb22c7a4 Parents: 900c8b2 Author: Murali Reddy <[email protected]> Authored: Tue Dec 11 16:53:55 2012 +0530 Committer: Murali Reddy <[email protected]> Committed: Tue Dec 11 16:53:55 2012 +0530 ---------------------------------------------------------------------- client/pom.xml | 5 + client/tomcatconf/components.xml.in | 1 + .../event-notification-service.properties.in | 25 ++++++ plugins/pom.xml | 3 +- .../Notifications/EventNotificationManager.java | 2 +- .../EventNotificationManagerImpl.java | 32 +------ .../Notifications/EventNotificationService.java | 3 +- .../cloudstack/api/CreateEventSubscriptionCmd.java | 66 +++++++++++++++ .../cloudstack/api/DeleteEventSubscriptionCmd.java | 52 +++++++++++ .../cloudstack/api/EventSubscriptionResponse.java | 49 +++++++++++ .../cloudstack/api/ListEventSubscriptionCmd.java | 42 +++++++++ .../cloudstack/api/UpdateEventSubscriptionCmd.java | 52 +++++++++++ 12 files changed, 302 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/client/pom.xml ---------------------------------------------------------------------- diff --git a/client/pom.xml b/client/pom.xml index cf1e852..afbd4f8 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -107,6 +107,11 @@ <version>${project.version}</version> </dependency> <dependency> + <groupId>org.apache.cloudstack</groupId> + <artifactId>cloud-plugin-event-notification-service</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/client/tomcatconf/components.xml.in ---------------------------------------------------------------------- diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in index b540aeb..5169671 100755 --- a/client/tomcatconf/components.xml.in +++ b/client/tomcatconf/components.xml.in @@ -184,6 +184,7 @@ under the License. <manager name="ElasticLoadBalancerManager" key="com.cloud.network.lb.ElasticLoadBalancerManager" class="com.cloud.network.lb.ElasticLoadBalancerManagerImpl"/> <pluggableservice name="VirtualRouterElementService" key="com.cloud.network.element.VirtualRouterElementService" class="com.cloud.network.element.VirtualRouterElement"/> <pluggableservice name="NiciraNvpElementService" key="com.cloud.network.element.NiciraNvpElementService" class="com.cloud.network.element.NiciraNvpElement"/> + <pluggableservice name="EventNotificationService" key="org.apache.cloudstack.Events.Notifications.EventNotificationService" class="org.apache.cloudstack.Events.Notifications.EventNotificationManagerImpl"/> <dao name="OvsTunnelInterfaceDao" class="com.cloud.network.ovs.dao.OvsTunnelInterfaceDaoImpl" singleton="false"/> <dao name="OvsTunnelAccountDao" class="com.cloud.network.ovs.dao.OvsTunnelNetworkDaoImpl" singleton="false"/> <dao name="NiciraNvpDao" class="com.cloud.network.dao.NiciraNvpDaoImpl" singleton="false"/> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/client/tomcatconf/event-notification-service.properties.in ---------------------------------------------------------------------- diff --git a/client/tomcatconf/event-notification-service.properties.in b/client/tomcatconf/event-notification-service.properties.in new file mode 100644 index 0000000..00f96fe --- /dev/null +++ b/client/tomcatconf/event-notification-service.properties.in @@ -0,0 +1,25 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +### bitmap of permissions at the end of each classname, 1 = ADMIN, 2 = RESOURCE_DOMAIN_ADMIN, 4 = DOMAIN_ADMIN, 8 = USER +### Please standardize naming conventions to camel-case (even for acronyms). + +#### Event Notification service commands +createEventSubscription = org.apache.cloudstack.api.CreateEventSubscriptionCmd;15 +listEventSubscription = org.apache.cloudstack.api.ListEventSubscriptionCmd;15 +deleteEventSubscription = org.apache.cloudstack.api.DeleteEventSubscriptionCmd;15 +updateEventSubscription = org.apache.cloudstack.api.UpdateEventSubscriptionCmd;15 http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/pom.xml ---------------------------------------------------------------------- diff --git a/plugins/pom.xml b/plugins/pom.xml index 220b065..49960e4 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -38,7 +38,7 @@ <module>hypervisors/ovm</module> <module>hypervisors/xen</module> <module>hypervisors/kvm</module> - <module>message-brokers/rabbitmq</module> + <module>event-bus/rabbitmq</module> <module>network-elements/elastic-loadbalancer</module> <module>network-elements/ovs</module> <module>network-elements/nicira-nvp</module> @@ -47,6 +47,7 @@ <module>user-authenticators/md5</module> <module>user-authenticators/plain-text</module> <module>user-authenticators/sha256salted</module> + <module>services/event-notification</module> </modules> <dependencies> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManager.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManager.java b/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManager.java index 8c7e0b2..20750f4 100644 --- a/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManager.java +++ b/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManager.java @@ -19,6 +19,6 @@ package org.apache.cloudstack.Events.Notifications; -public interface EventNotificationManager { +public interface EventNotificationManager extends EventNotificationService { } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManagerImpl.java b/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManagerImpl.java index d8901f6..f8ec5dc 100644 --- a/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManagerImpl.java +++ b/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationManagerImpl.java @@ -19,39 +19,17 @@ package org.apache.cloudstack.Events.Notifications; -import com.cloud.utils.component.Manager; -import com.cloud.utils.component.PluggableService; import org.apache.cloudstack.framework.events.EventTopic; -import javax.naming.ConfigurationException; -import java.util.Map; +import javax.ejb.Local; import java.util.List; -public class EventNotificationManagerImpl implements EventNotificationManager, EventNotificationService, PluggableService, Manager { - - @Override - public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { - return false; - } - - @Override - public boolean start() { - return false; - } - - @Override - public boolean stop() { - return false; - } - - @Override - public String getName() { - return null; - } +@Local(value = EventNotificationService.class) +public class EventNotificationManagerImpl implements EventNotificationManager, EventNotificationService { @Override public String getPropertiesFile() { - return null; + return "event-notification-service.properties"; } @Override @@ -66,6 +44,6 @@ public class EventNotificationManagerImpl implements EventNotificationManager, E @Override public List<EventTopic> listSubscribedTopics() { - + return null; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationService.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationService.java b/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationService.java index 14e655b..78cb3e2 100644 --- a/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationService.java +++ b/plugins/services/event-notification/src/org/apache/cloudstack/Events/Notifications/EventNotificationService.java @@ -19,11 +19,12 @@ package org.apache.cloudstack.Events.Notifications; +import com.cloud.utils.component.PluggableService; import org.apache.cloudstack.framework.events.EventTopic; import java.util.List; -public interface EventNotificationService { +public interface EventNotificationService extends PluggableService { void subscribe(EventTopic topic, Endpoint endpoint); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/api/CreateEventSubscriptionCmd.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/api/CreateEventSubscriptionCmd.java b/plugins/services/event-notification/src/org/apache/cloudstack/api/CreateEventSubscriptionCmd.java new file mode 100644 index 0000000..054affc --- /dev/null +++ b/plugins/services/event-notification/src/org/apache/cloudstack/api/CreateEventSubscriptionCmd.java @@ -0,0 +1,66 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.cloudstack.api; + +import com.cloud.api.BaseAsyncCreateCmd; +import com.cloud.api.Implementation; +import com.cloud.api.ServerApiException; +import com.cloud.exception.*; +import org.apache.log4j.Logger; + +@Implementation(description="Registers a subscriber for the events", responseObject=EventSubscriptionResponse.class) +public class CreateEventSubscriptionCmd extends BaseAsyncCreateCmd { + + public static final Logger s_logger = Logger.getLogger(CreateEventSubscriptionCmd.class); + private static final String s_name = "eventsubscriptionresponse"; + + @Override + public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { + + } + + @Override + public String getCommandName() { + return null; + } + + @Override + public long getEntityOwnerId() { + return 0; + } + + @Override + public String getEventType() { + return null; + } + + @Override + public String getEventDescription() { + return null; + } + + @Override + public void create() throws ResourceAllocationException { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public String getEntityTable() { + return null; //To change body of implemented methods use File | Settings | File Templates. + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/api/DeleteEventSubscriptionCmd.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/api/DeleteEventSubscriptionCmd.java b/plugins/services/event-notification/src/org/apache/cloudstack/api/DeleteEventSubscriptionCmd.java new file mode 100644 index 0000000..da2fdfb --- /dev/null +++ b/plugins/services/event-notification/src/org/apache/cloudstack/api/DeleteEventSubscriptionCmd.java @@ -0,0 +1,52 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.cloudstack.api; + +import com.cloud.api.BaseAsyncCmd; +import com.cloud.api.Implementation; +import com.cloud.api.ServerApiException; +import com.cloud.exception.*; + +@Implementation(description="Deletes a subscriber for the events", responseObject=EventSubscriptionResponse.class) +public class DeleteEventSubscriptionCmd extends BaseAsyncCmd { + + @Override + public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { + + } + + @Override + public String getCommandName() { + return null; + } + + @Override + public long getEntityOwnerId() { + return 0; + } + + @Override + public String getEventType() { + return null; + } + + @Override + public String getEventDescription() { + return null; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/api/EventSubscriptionResponse.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/api/EventSubscriptionResponse.java b/plugins/services/event-notification/src/org/apache/cloudstack/api/EventSubscriptionResponse.java new file mode 100644 index 0000000..58ebbf4 --- /dev/null +++ b/plugins/services/event-notification/src/org/apache/cloudstack/api/EventSubscriptionResponse.java @@ -0,0 +1,49 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.cloudstack.api; + +import com.cloud.api.response.BaseResponse; +import com.cloud.api.response.ControlledEntityResponse; + +public class EventSubscriptionResponse extends BaseResponse implements ControlledEntityResponse { + + @Override + public void setAccountName(String accountName) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void setProjectId(Long projectId) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void setProjectName(String projectName) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void setDomainId(Long domainId) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void setDomainName(String domainName) { + //To change body of implemented methods use File | Settings | File Templates. + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/api/ListEventSubscriptionCmd.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/api/ListEventSubscriptionCmd.java b/plugins/services/event-notification/src/org/apache/cloudstack/api/ListEventSubscriptionCmd.java new file mode 100644 index 0000000..0435587 --- /dev/null +++ b/plugins/services/event-notification/src/org/apache/cloudstack/api/ListEventSubscriptionCmd.java @@ -0,0 +1,42 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.cloudstack.api; + +import com.cloud.api.BaseListCmd; +import com.cloud.api.Implementation; +import com.cloud.api.ServerApiException; +import com.cloud.exception.*; + +@Implementation(description="Lists registerd subscriberd for the events", responseObject=EventSubscriptionResponse.class) +public class ListEventSubscriptionCmd extends BaseListCmd { + + @Override + public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public String getCommandName() { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public long getEntityOwnerId() { + return 0; //To change body of implemented methods use File | Settings | File Templates. + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d9381ed/plugins/services/event-notification/src/org/apache/cloudstack/api/UpdateEventSubscriptionCmd.java ---------------------------------------------------------------------- diff --git a/plugins/services/event-notification/src/org/apache/cloudstack/api/UpdateEventSubscriptionCmd.java b/plugins/services/event-notification/src/org/apache/cloudstack/api/UpdateEventSubscriptionCmd.java new file mode 100644 index 0000000..1cc7ae7 --- /dev/null +++ b/plugins/services/event-notification/src/org/apache/cloudstack/api/UpdateEventSubscriptionCmd.java @@ -0,0 +1,52 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.cloudstack.api; + +import com.cloud.api.BaseAsyncCmd; +import com.cloud.api.Implementation; +import com.cloud.api.ServerApiException; +import com.cloud.exception.*; + +@Implementation(description="Deletes a subscriber for the events", responseObject=EventSubscriptionResponse.class) +public class UpdateEventSubscriptionCmd extends BaseAsyncCmd { + + @Override + public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { + + } + + @Override + public String getCommandName() { + return null; + } + + @Override + public long getEntityOwnerId() { + return 0; + } + + @Override + public String getEventType() { + return null; + } + + @Override + public String getEventDescription() { + return null; + } +} \ No newline at end of file
