<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Very cool stuff!<div><br></div><div>Seeing your special glance properties for iso and floppy connections made me think</div><div>of something. They seem, but it would be nice if they were done in a way that would</div><div>work in any hypervisor.</div><div><br></div><div>I "think" we have sufficient detail in block_device_mapping to do essentially the</div><div>same thing, and it would be awesome to verify and add some nicities to the nova</div><div>cli, something like:</div><div><br></div><div>nova boot --flavor 1 --iso CentOS-64-ks --floppy Kickstart (defaults to blank image)</div><div><br></div><div>Clearly that requires a few things:</div><div><br></div><div>1) vix block device mapping support</div><div>2) cli ux improvements</div><div>3) testing!</div><div><br></div><div>Vish</div><div><br><div><div>On Dec 1, 2013, at 2:10 PM, Alessandro Pilotti <<a href="mailto:apilotti@cloudbasesolutions.com">apilotti@cloudbasesolutions.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">

<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
Hi all,
<div><br>
</div>
<div>At Cloudbase we are heavily using VMware Workstation and Fusion for development, demos and PoCs, so we thought: why not replacing our automation scripts with a fully functional Nova driver and use OpenStack APIs and Heat for the automation? :-)</div>
<div><br>
</div>
<div>Here’s the repo for this Nova driver project: <a href="https://github.com/cloudbase/nova-vix-driver/">https://github.com/cloudbase/nova-vix-driver/</a></div>
<div><br>
</div>
<div>
<div>The driver is already working well and supports all the basic features you’d expect from a Nova driver, including a VNC console accessible via Horizon. Please refer to the project README for additional details.</div>
<div>The usage of CoW images (linked clones) makes deploying images particularly fast, which is a good thing when you develop or run demos. Heat or Puppet, Chef, etc make the whole process particularly sweet of course. </div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>The main idea was to create something to be used in place of solutions like Vagrant, with a few specific requirements:</div>
<div><br>
</div>
<div>1) Full support for nested virtualization (VMX and EPT).</div>
<div><br>
</div>
<div>For the time being the VMware products are the only ones supporting Hyper-V and KVM as guests, so this became a mandatory path, at least until EPT support will be fully functional in KVM.</div>
<div>This rules out Vagrant as an option. Their VMware support is not free and beside that they don’t support nested virtualization (yet, AFAIK). </div>
<div><br>
</div>
<div>Other workstation virtualization options, including VirtualBox and Hyper-V are currently ruled out due to the lack of support for this feature as well.</div>
<div>Beside that Hyper-V and VMware Workstation VMs can work side by side on Windows 8.1, all you need is to fire up two nova-compute instances.</div>
<div><br>
</div>
<div>2) Work on Windows, Linux and OS X workstations</div>
<div><br>
</div>
<div>
<div>Here’s a snapshot of Nova compute  running on OS X and showing Novnc connected to a Fusion VM console:</div>
<div><br>
</div>
<div><a href="https://dl.dropboxusercontent.com/u/9060190/Nova-compute-os-x.png">https://dl.dropboxusercontent.com/u/9060190/Nova-compute-os-x.png</a></div>
</div>
<div><br>
</div>
<div>3) Use OpenStack APIs</div>
<div><br>
</div>
<div>We wanted to have a single common framework for automation and bring OpenStack on the workstations. </div>
<div>Beside that, dogfooding is a good thing. :-) </div>
<div><br>
</div>
<div>4) Offer a free alternative for community contributions</div>
<div>  </div>
<div>
<div apple-content-edited="true">VMware Player is fair enough, even with the “non commercial use” limits, etc.
</div>
</div>
<div><br>
</div>
<div>Communication with VMware components is based on the freely available Vix SDK libs, using ctypes to call the C APIs. The project provides a library to easily interact with the VMs, in case it sould be needed, e.g.:</div>
<div><br>
</div>
<div>from vix import vixutils</div>
<div>with vixutils.VixConnection() as conn:</div>
<div>    with conn.open_vm(vmx_path) as vm:</div>
<div>        vm.power_on()</div>
<div><br>
</div>
<div>We though about using libvirt, since it has support for those APIs as well, but it was way easier to create a lightweight driver from scratch using the Vix APIs directly.</div>
<div><br>
</div>
<div>TODOs:</div>
<div><br>
</div>
<div>1) A minimal Neutron agent for attaching networks (now all networks are attached to the NAT interface).</div>
<div>2) Resize disks on boot based on the flavor size</div>
<div>3) Volume attach / detach (we can just reuse the Hyper-V code for the Windows case)</div>
<div>4) Same host resize</div>
<div><br>
</div>
<div>Live migration is not making particularly sense in this context, so the implementation is not planned. </div>
<div><br>
</div>
<div>Note: we still have to commit the unit tests. We’ll clean them during next week and push them.</div>
<div><br>
</div>
<div><br>
</div>
<div>As usual, any idea, suggestions and especially contributions are highly welcome!</div>
<div><br>
</div>
<div>We’ll follow up with a blog post with some additional news related to this project quite soon. </div>
<div><br>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Alessandro</div>
<div><br>
</div>
<div><br>
</div>
</div>

_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev<br></blockquote></div><br></div></body></html>