+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