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
> 

Reply via email to