We're not looking for a message queue, we're looking for a notifications system 
ala AWS SNS. CloudStack needs to be able to *push* events out to endpoints; not 
send them to an MQ for interested parties to pull.

-George

On May 18, 2012, at 12:09 PM, Chiradeep Vittal wrote:

> While embedding the publisher inside CloudStack could be one way to go, it is 
> probably more immediately useful if we push events to a popular queueing 
> system such as AMQP? 
> Having CS have its own unique way of publishing events does make it more work 
> for others to utilize these events.
> Agree on having a design that allows for other systems of notifications.
> 
> From: George Reese <george.re...@enstratus.com>
> Date: Fri, 18 May 2012 05:24:42 -0700
> To: "cloudstack-dev@incubator.apache.org" 
> <cloudstack-dev@incubator.apache.org>
> Cc: Nitin Mehta <nitin.me...@citrix.com>, Kishan Kavala 
> <kishan.kav...@citrix.com>, Dean <cl...@tizatron.com>, Chiradeep Vittal 
> <chiradeep.vit...@citrix.com>
> Subject: Re: Event Publish and Subscribe ( was perhaps Re: Cloudstack 
> Questions )
> 
> 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
> 

--
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

Reply via email to