DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
There are multiple parties like
...
event-driven
...
workflows
...
systems,
...
monitoring
...
system,
...
usage
...
&
...
billing
...
system
...
would
...
be
...
interested
...
in
...
getting
...
notification
...
of
...
a
...
events
...
in
...
the
...
cloud
...
in
...
near
...
instantaneous
...
manner.
...
In
...
CloudStack
...
event
...
could
...
be
...
state
...
change
...
of
...
virtual
...
or
...
psychical
...
resources,
...
an
...
action
...
performed
...
by
...
user
...
(action
...
events),
...
policy
...
based
...
events
...
(alerts).
...
Currently
...
CloudStack
...
has
...
no
...
notification
...
mechanism
...
to
...
let
...
the
...
interested
...
parties
...
know
...
of
...
the
...
occurrence
...
of
...
an
...
event.
...
Polling
...
by
...
invoking
...
listEvents
...
and
...
listAlerts
...
is
...
the
...
only
...
way
...
to
...
know
...
occurrence
...
of
...
events.
...
Also
...
there
...
are
...
no
...
externsion
...
hooks
...
one
...
can
...
implement
...
to
...
get
...
the
...
event
...
notification.
...
Though
...
there
...
is
...
StateListener
...
interface
...
which
...
has
...
both
...
pre
...
and
...
post
...
state
...
transition
...
event
...
call
...
back
...
methods,
...
only
...
user
...
VM
...
resource
...
has
...
state
...
listener
...
implemented.
...
Most
...
of
...
the
...
resorces
...
volume,
...
network,
...
nic,
...
etc
...
has
...
states
...
but
...
does
...
not
...
have
...
state
...
machine
...
and
...
StateListener.
...
So
...
for
...
a
...
component
...
interested
...
getting
...
notification
...
need
...
to
...
get
...
tightly
...
coupled
...
into
...
orchestration
...
workflow.
...
For
...
e.g,
...
code
...
to
...
generate
...
usage
...
date
...
(usage
...
events)
...
is
...
spread
...
across
...
the
...
orchestration
...
components.
...
This proposal is to introduce an in-process
...
event
...
bus
...
in
...
the
...
management
...
server
...
and
...
by
...
which
...
achieve
...
event
...
notifications.
...
Scope
...
of
...
the
...
event
...
bus
...
is
...
only
...
with
...
in
...
the
...
management
...
server,
...
so
...
only
...
CloudStack
...
components
...
and
...
extension
...
plug-in's
...
can
...
be
...
subscribers
...
to
...
the
...
events.
...
Goal of
...
this
...
proposal
...
is
...
to
...
have
...
bare
...
minimum
...
mechanism
...
in
...
the
...
CloudStack
...
code,
...
using
...
which
...
more
...
powerful
...
notification
...
mechanism
...
(like
...
SMS,
...
...
etc)
...
can
...
be
...
built
...
as
...
CloudStack
...
extensions.
...
Ideal
...
requirements
...
for
...
such
...
event
...
bus
...
is
...
to
...
be
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
In
...
order
...
for
...
CloudStack
...
be
...
able
...
to
...
generate
...
rich
...
set
...
of
...
events
...
and
...
have
...
clean
...
mechanism
...
to
...
generate
...
events,
...
its
...
important
...
to
...
have
...
state
...
machine
...
associated
...
with
...
every
...
resource
...
that
...
is
...
managed
...
by
...
CloudStack.
...
So
...
another
...
goal
...
of
...
this
...
proposal
...
is
...
to
...
associate
...
with
...
every
...
resource
...
(User
...
VM,
...
Volume,
...
Nic,
...
Network,
...
public
...
IP,
...
snapshot,
...
template
...
etc)
...
with
...
a
...
state
...
machine
...
and
...
generate
...
events
...
as
...
part
...
of
...
the
...
state
...
change.
...
So the
...
publishers
...
of
...
events
...
in
...
CloudStack
...
will
...
become
...
that
...
StateListeners
...
associated
...
with
...
the
...
resource.
...
For e.g.
...
UserVMStateListener
...
which
...
is
...
listener
...
for
...
the
...
state
...
changes
...
of
...
user
...
VM's
...
would
...
create
...
event
...
object
...
and
...
post
...
on
...
to
...
the
...
event
...
bus
...
as
...
below.
...
public boolean postStateTransitionEvent(State
...
oldState,
...
Event
...
event,
...
State
...
newState,
...
VirtualMachine
...
vo,
...
boolean
...
status,
...
Object
...
opaque)
...
{
_eventBus.post(new UserVmStateChangeEventVO(....));
...
}
A subscriber interested in the user VM state change would register to the event and get the events as below
_eventBus.register(this)
@Subscribe
public void userVMStateChangetHandler(UserVmStateChangeEventVO event)
Following are some use cases demonstrated in the diagram below