Hi guys, we are moving forward pretty fast in the development of support for Hyper-V, we'll be able to share the first bits hopefully very soon. :-)
In the meantime we have a small problem to solve with the secondary storage: in our test environment, we created a dummy Hyper-V resource, but we have troubles in deploying dummy instances as CloudStack cannot see and initialize a secondary storage. Do you have any suggestion on how to get around that? Thanks! Alessandro Pilotti Cloudbase Solutions Srl ------------------------------------------------------------ IT Consultant & Technical Speaker MVP ASP.Net / IIS Windows Azure Insider Microsoft Certified Professional & Trainer MCSD, MCAD, MCSE, MCDBA, MCTS, MCT RHCE - Red Hat Certified Engineer ------------------------------------------------------------ On Apr 22, 2012, at 03:54 , Kelven Yang wrote: >>> 1) I'm looking at the commands in com.cloud.agent.api. Is there some >>> documentation? > Unfortunately, we haven't put a detail document on this. Vmware or XenServer > resource is a good place to look at > >>> 2) Commands are synchronous or asynchronous? In case how do you handle >>> running jobs? > > There is a design principal that command executors are dumb executors, the > command flow business logic should be implemented in corresponding managers > running inside management server, therefore a resource implementation will be > easily hosted either locally within the management server or remotely at > agent side. > > Command is usually executed synchronously(we actually provides mechanism to > execute command asynchronously), managers can schedule asynchronous jobs. > >>> 3) Configuration: how do I tell CS that a new HyperVisor Resource type >>> exists? (both cases: Manager based / Agent based) > To add a new hypervisor, there are a number of things you need to do together, > 1) Hypervisor.java, add a new type into the enum > 2) Config.java, add the new type to HypervisorList so that UI may be > aware of > 3) Add the resource discover class, refer to XcpServerDiscover.java, > KvmServerDiscover.java, etc > 4) Add the resource class(for managed resource), refer to > VmwareResource.java/CitrixResourceBase.java, etc. > 5) Populate guest OS types and system template data for the hypervisor > to database, refer to create-schema.sql and template.sql > 6) Prepare the default system template for the hypervisor > >>> 4) Storage: > This is the part that needs a lot of discussions. > We are talking about secondary storage. Usually only hypervisor host and > storage system VM need to access to it, VMware does one special step that > management server needs to access to it to bootstrap system VMs. So to > support hybrid deployment option, we would require secondary storage to be > accessible from all of them, giving the fact that Xen/KVM/VMware only > supports NFS shares, it would be better to make secondary storage dual faces > for Hyper-V, in this way, the same secondary storage will be able to serve > XenServer/VMware/KVM/Hyper-V within the same zone. > > We do have a Hyper-V prototype in current CloudStack code base, you may also > want to check it out before you start. > > Kelven > > > -----Original Message----- > From: Alessandro Pilotti [mailto:[email protected]] > Sent: Saturday, April 21, 2012 1:35 PM > To: [email protected] > Cc: Development discussions for CloudStack > Subject: Re: [cloudstack-devel] Hyper-V Support > > I started looking into the code for VMWare and KVM resources in order to > develop the Hyper-V Resource, the proxy based architecture is clear. > > > I have some basic questions to start with :-) > > 1) I'm looking at the commands in com.cloud.agent.api. Is there some > documentation? To start coding the HyperV adapter, is there a list of > mandatory and optional commands? I'm "reverse engineering" their semantyc > looking at the VMWare resources, but it's not so trivial :) > > 2) Commands are synchronous or asynchronous? In case how do you handle > running jobs? > > 3) Configuration: how do I tell CS that a new HyperVisor Resource type > exists? (both cases: Manager based / Agent based) > > 4) Storage: the free Hyper-V server does not contain an NFS client. There are > of course open source NFS clients (Cygwin, etc) that can be installed, but > supporting SMB might be easier. What do you think about adding support for > SMB shares in CS? > > > > Thanks! > > 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 >
