Alessandro, About Integrating Hyper-V into CloudStack, the first question you might want to answer is that where the integration point happens. In KVM/XenServer, CloudStack directly orchestrates hypervisor hosts, particularly, in KVM case we deploy an on-site agent running on host. In XenServer case, CloudStack communicates with host via XS XMLRPC API, we also have host plugin at XS dom0 for things that its XMLRPC API is lack of doing. However in VMware case, the integration point happens at vCenter, means that we don't directly communicate hypervisor hosts and neither have any pluggable components on them.
Back to Hyper-V, are you going to take advantage of SCVMM and integrate CloudStack through SCVMM? Or you want to directly orchestrate Hyper-V hosts? It matters from architecture perspective. Kelven -----Original Message----- From: Frank Zhang [mailto:[email protected]] Sent: Friday, April 20, 2012 10:20 AM To: [email protected] Cc: Development discussions for CloudStack Subject: RE: [cloudstack-devel] Hyper-V Support >>About the Agent based option: How do you handle the authentication between CS >>and the Agents on hypervisor hosts? Do you have a common authentication / >>identity framework? We use basic authentication of XmlRpc, each time Resource that works as a XmlRpc client connects to Agent that works as a XmlRpc server, account/password is required. -----Original Message----- From: Alessandro Pilotti [mailto:[email protected]] Sent: Friday, April 20, 2012 4:39 AM To: [email protected] Cc: Development discussions for CloudStack Subject: Re: [cloudstack-devel] Hyper-V Support Frank, thanks for the architectural explanation. The Manager based approach looks more interesting in this case, as it's probably easier to deploy only the .Net assemblies + JSON APIs and writing a custom resource. I'm of course open to any idea at this stage. I'll start digging into the CS code today. About the Agent based option: How do you handle the authentication between CS and the Agents on hypervisor hosts? Do you have a common authentication / identity framework? Alessandro On Apr 20, 2012, at 02:30 , Frank Zhang wrote: > > > There's a JSON-based protocol to pass commands between Management Server > > and host. > > >> That sounds great! Do you maybe have a link for some documentation > >> and samples? :) > CloudStack has two types of managing host. Agent based and > manager based. Agent based means installing an agent on host and management > server directly controls host through the agent. KVM and XenServer falls into > this category, as KVM agent is written by CloudStack developer while agent > of XenServer is provided by Xapi. The manager based approach applies to > VMWare, HyperV, OVM3 where CloudStack invokes API of SDK provided by > hypervisor vendor to communicate with *the manager*, for example, VCenter of > VMWare, the manager is on behalf of CloudStack to control the host. in our > code paths, these two approaches look like: > > 1. Agent Based: > CloudStack business logic -------à Resource -----(XMLRPC or something) > ---------à Agent on host > 2. Manager Based: > CloudStack business logic ------à Resource -----(API in SDK) > ----------à hypervisor manager provided by vendor ------à host > > To support a new type of hypervisor, the key is to implement > a *Resource* showed in above. The Resource is a command executor which > receives commands from CloudStack business logic(known as various managers, > like networkManager, StorageManager, UserVmManager . in our code) and > performs these commands to hypervisor by means of either XmlRpc or SDK API. > In GoF design patterns, the Resource is a proxy pattern that works as a > surrogate between CloudStack and hypervisors. > If you open one of hypervisor resources source file (for > example, VmwareResource.java, LibvirtComputingResource.java, > CitrixResourceBase.java), you will find all of them implement the same set of > commands that are exhibited by method: > public Answer executeRequest(Command cmd) > > take a look at that method and implement a similar resource like > others, then you add HyperV support into CloudStackJ > > > Thanks, > > Alessandro > > > On Apr 19, 2012, at 19:16 , Kevin Kluge wrote: > > > Yes, very interesting. Can you elaborate on the getThumbnail function. > One issue we have been thinking about with Hyper-V is how to do guest console > display (console proxy functionality, in CloudStack terms). Since only RDP > is available with Hyper-V, and CloudStack knows only VNC, we've been > expecting that RDP is needed in CloudStack to provide console view. > > Did you integrate with Hyper-V in Windows Server 2008 R2? Or something else? > > The CloudStack has existing code/framework to implement what we call a remote > agent (your scenario 3). Take a look at how KVM hosts are managed. > There's a JSON-based protocol to pass commands between Management Server and > host. > > -kevin > > > > -----Original Message----- > From: Rajesh Battala [mailto:[email protected]] > Sent: Thursday, April 19, 2012 8:59 AM > To: [email protected] > Subject: RE: Hyper-V Support > > Idea is great. > All these Hyper-V operations are implement to manage the Hyper-V box > directly using WMI calls right? > Or these operations are implemented via SCVMM? > > Thanks > Rajesh Battala > > > > > -----Original Message----- > From: Alessandro Pilotti [mailto:[email protected]] > Sent: Thursday, April 19, 2012 9:02 PM > To: [email protected] > Cc: [email protected] > Subject: Hyper-V Support > > Hi guys, > > I'm new to this list, so hi everybody :-) > > I'm interested in providing code for integrating Cloudstack with > Hyper-V. We developend an Hyper-V management framework that we use in > our cloud products that can be used (at least as as a starting point). > > I'm summing up at the bottom of this email what we already have in > terms of Hyper-V features handled by our framework (completed and > tested). We basically cover everything needed for CloudStack and more. > :-) > > Beside that we also just released an open source Hyper-V backup > library and CLI tool: http://hypervbackup.codeplex.com/ So far it's > the only open source tool handling VSS backups of VMs on CSV storage > :-) > > The assemblies are written in C# with .Net as the only dependency. > > I see 3 options to integrate our work with CloudStack: > > Write a Java adapter on top of the C# assembly (via JNI) Rewrite the > C# code in Java, considering the quirkness for accessing WMI from java > (jWMI, etc) Deploy the assembly on the Hyper-V hosts and add a RESTful > layer on top to be consumed by a Java adapter (locally or remotely). > That would be the best option in terms of performance and security (and the > fastest to release :-) ). > > I prefer the third option, but I'm open to any idea! > Looking forward for your opinion! > > BTW We plan to setup a CloudStack Hyper-V service in our datacenter on > top of one of the clusters as soon as we have a working beta. > > > Thanks, > > Alessandro Pilotti > Cloudbase Solutions Srl > ------------------------------------------------------------ > IT Consultant & Technical Speaker > > MVP ASP.Net / IIS > MCSD, MCAD, MCSE, MCDBA, MCTS, MCT > RHCE - Red Hat Certified Engineer > ------------------------------------------------------------ > > > > VM > Create > Update > Delete > Add / update / remove any type of resource (ethernet > emulated/synthetic adapther, VHDs, ISO images etc) List Get summary > Get thumbnail Get integration tools status and KV data Get IP > addresses Start Stop Pause Save Shutdown Take snapshot List snapshots > Revert to snapshot Remove snapshots Export Import Network > > Create VirtualSwitch > Delete VirtualSwitch > List VirtualSwitches > Create VirtualSwitch port > remove VirtualSwitch port > Bind external ethernet port > Setup VirtualSwitch (connect to external ethernet port) Terdown switch > Create internal ethernet port Remove internal ethernet port Connect > VirtualSwitch port to VM or other ports Disconnect VirtualSwitch port > > Storage > > Create VHD (fixed, dynamic, differencing) Compact VHD Convert VHD type > Merge VHD with parent Validate VHD Mount / unmount VHD Reconnect > parent VHD Get VHD info Expand VHD Create Virtual Floppy Disk > > Utility > > Get async job info > Wait for async job info > Remote file system management > > Cluster > > Create VM resource > Remove VM resource > Live migrate VM > Create CSV > Move CSV > > Backup / Restore > > http://hypervbackup.codeplex.com/ > > > ---------------------------------------------------------------------- > -------- For Developers, A Lot Can Happen In A Second. > Boundary is the first to Know...and Tell You. > Monitor Your Applications in Ultra-Fine Resolution. Try it FREE! > http://p.sf.net/sfu/Boundary-d2dvs2___________________________________ > ____________ > cloudstack-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/cloudstack-devel
