Are there any use-cases for which it make sense to have publishers (that use CloudStack API to publish) other than CloudStack? If its not overkill we can have generic mechanism of publish/subscribe as service in CloudStack. I can think of tenants workload VM's be able to leverage this and publish something.
On 18/05/12 5:54 PM, "George Reese" <george.re...@enstratus.com> wrote: >Here's the way event pub sub should workÅ > >People interested in events will subscribe to them via API and CloudStack >will maintain a record that includes: > >* What type of event(s) the subscriber cares about >* The URI of an endpoint to notify on events >* An optional API key for signing event publications > >If you want it to be really rich, you allow for multiple notifications >endpoints, including SMS and email. > >When the existing event management system in CloudStack identifies a >state change, it published it to a message queue. > >A new CloudStack component is subscribed to the message queue and pulls >the state change off. It then sends the event to all interested parties. >It does not keep delivery state. It sends and forgets. The only thing >resembling state is the counting of failures, eventually killing an >endpoint that fails to often. > >-George > >On May 17, 2012, at 10:53 PM, Abhinandan Prateek wrote: > >> Cloudstack already have a well-defined set of events, currently being >>used by the Usage module. >> We can extend this to publish the events to registered >>listeners/subscribers. >> >> Nitin, >> We should evaluate the google guava package for this purpose. >> >> -abhi >> >>> -----Original Message----- >>> From: Chiradeep Vittal [mailto:chiradeep.vit...@citrix.com] >>> Sent: Saturday, May 12, 2012 3:48 AM >>> To: cloudstack-dev@incubator.apache.org >>> Cc: Dean >>> Subject: Re: Event Publish and Subscribe ( was perhaps Re: Cloudstack >>> Questions ) >>> >>> +1. >>> This could also be used for example to update DNS records on a DNS >>>server >>> whenever a VM is started / stopped in a network. >>> A subscriber to the event bus can do this, and potentially things like >>>updating a >>> CMDB or an LDAP server. >>> >>> The important caveat is that this will be asynchronous to the stuff >>>happening >>> inside the management server: it has limited utility for doing stuff >>>that is >>> required to succeed before an API operation can succeed. >>> For example, if a VM start requires a NAT rule to be programmed on the >>> firewall before the start can be considered successful. You could >>>write a event >>> bus subscriber that does this, but the management server would not >>>know if >>> it was successful or not. >>> >>> There's at least a couple of entry points: >>> 1. com.cloud.utils.fsm.StateListener. Classes that implement this >>>listener get >>> notified on finite state event transitions. Examples include VM start >>>/ stop 2. >>> com.cloud.network.element.NetworkElement. Classes that implement this >>> get notified of network state transitions. Examples include adding >>>nics and >>> removing nics to/from a network. >>> >>> I think the first question regarding monitoring VMs on the isolated >>>VLAN had a >>> different origin though. >>> The intention there was to have a monitoring service (e.g., Nagios) >>>reach into >>> the VM and monitor stuff like CPU, IO, or even applications. >>> The issue there was around network reachability. >>> >>> -- >>> Chiradeep >>> >>> >>> >>> On 5/11/12 2:09 PM, "Adrian Cole" <adr...@jclouds.org> wrote: >>> >>>> +1 >>>> >>>> Makes sense to have pubsub. Inside the java codebase, we could >>>> consider a clean and idiomatic lib like guava which is easy to unit >>>>test. >>>> >>>> http://codingjunkie.net/guava-eventbus/ >>>> >>>> Then, expose out-of-JVM hooks for any of the popular services people >>>>use. >>>> >>>> -A >>>> On May 11, 2012 1:58 PM, "Dean" <cl...@tizatron.com> wrote: >>>> >>>>> Cross reference to: >>>>> >>>>> >>>>> >>>>> http://mail-archives.apache.org/mod_mbox/incubator-cloudstack- >>> dev/201204. >>>>> mbox/browser >>>>> >>>>> [ from: Marlon Davids ] >>>>> < munch > >>>>>> 2) How do we monitor VM's that are in Cloudstack when they are in >>>>>> an >>>>> isolated VLAN does >>>>>> anyone have a clever workaround? >>>>>> 3) Has anyone developed a script for parsing and alerting on >>>>>> warning >>>>> events in the >>>>>> management Log yet? >>>>> >>>>> I would like to propose cloudstack consider a pub/sub model for event >>>>> handling to complement API calls like listEvents. >>>>> >>>>> Polling can be problematic and sensitive to scaling. >>>>> >>>>> A simple example would be state change on a physical device. The >>>>> admin server can simply publish a message on a network socket >>>>> indicating that the device has changed it's state. >>>>> >>>>> If a subscriber was interested in that device, it could make an api >>>>> call to the admin server for state change information for that >>>>>device only. >>>>> The >>>>> admin server may choose to validate that physical device against the >>>>> current state table in the database. >>>>> >>>>> The API would reply that this node changed it's state from >>>>> Operational to Prep For Maintenance. (or whatever the transition >>>>> state would be) >>>>> >>>>> The message exchange could be wrapped around vm states, resource >>>>> additions/removals etc. >>>>> >>>>> Using a library like zeromq, a developer can write any number of >>>>> consumers in any language they wanted to subscribe to the Event Bus. >>>>> >>>>> Comments? >>>>> >>>>> -- >>>>> -Dean >> > >-- >George Reese - Chief Technology Officer, enStratus >e: george.re...@enstratus.com Skype: nspollution t: @GeorgeReese >p: +1.207.956.0217 >enStratus: Enterprise Cloud Management - @enStratus - >http://www.enstratus.com >To schedule a meeting with me: http://tungle.me/GeorgeReese > >