Thanks for the feedback. Sorry for the delayed reply; I was trying your 
suggestions to see how it works.

Summarized the approach in below mentioned steps:

1. The host update feature will be in a separate plugin and contained in an 
independent jar file.
2. This will use PluggableService to add the APIs into CloudStack.
3.  A manager to schedule a thread to check the updates and  update the 
database with new updates.
4. An agent to call ServerResource which will fetch the list of all the patches 
applied to a host. This agent will use the objects "HostUpdatesCommand" and 
"HostUpdatesAnswer" to get the information from ServerResource. These objects 
will be placed in  "api" project under "com.cloud.agent.api" package.

I have updated functional spec with this information. 
FS:  
https://cwiki.apache.org/confluence/display/CLOUDSTACK/XenServer+updates+notification

Does this approach sound right?
Please let me know your suggestions.

Wido/David/Chip/Alex: Please do share your thoughts on this approach.

Regards,
Sanjay

-----Original Message-----
From: Alex Huang [mailto:alex.hu...@citrix.com] 
Sent: Tuesday, October 02, 2012 3:46 AM
To: cloudstack-dev@incubator.apache.org
Subject: RE: FS for host updates notifications

> Another alternative for achieving this (without adding the 
> per-hypervisor logic to CloudStack itself) might be to build a 
> framework for plugging in best- of-breed update tools for the various 
> hypervisors (and bare metal servers).
> Example: provide the KVM update feature via a combination of puppet 
> manifests and mcollective instructions, where CloudStack isn't 
> responsible for the actual update tracking or installation of updates, 
> merely calling an appropriate external tool to query status and force 
> policy updates.  A simple command line specification for inputs and 
> outputs could allow for various environments to have scripts that 
> drive the process that's most appropriate for their specific conditions.
> 
> Thoughts?

+1

I don't see CloudStack as completely just orchestration.  It should be the 
entire stack of tools to make cloud work including management.  However, I 
don't see any reason to normalize this functionality into one call and provide 
different adapters for that call.  

The key is to decouple orchestration from these services.  Therefore, I think 
it makes more sense for this host update feature to be self-contained within a 
plugin.  With a plugin, you can add APIs to cloudstack's APIs via the 
PluggableService interface to enact the way to update a specific type of 
hypervisor.

For example, I can see the following for XenServer.

Cloud-plugin-xenserver.jar contains the following interfaces implemented
  - PluggableService: to introduce APIs to self-manage.  For example, for the 
administrator to invoke to see if there are updates to XenServer or to set a 
periodic update check policy.
  - HypervisorGuru: to implement the provisioning needed for hypervisors when a 
VM is started
  - ServerResource: to implement the actual interface to different versions of 
xenserver
  - Discoverer: to implement different ways to add different versions of 
XenServer into CloudStack.

You can even write cloud-plugin-xenserver-56, cloud-plugin-xenserver-60, etc to 
have different plugin jars to work with different versions of the XenServer.

By doing this, then KVM or VmWare plugins can introduce its own functionalities 
and features.


--Alex
  

Reply via email to