Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Target

  • Hyper-V Server 2012

Progress

Current source https://github.com/lafferty/cshv3

  • Plugin is cloud-plugin-hypervisor-hyperv, under ./plugins/hypervisor/hyperv
  • Minor changes to UI required for template creation

CS 4.0 Hyper-V Plugin

Target Hyper-V Server 2012

  • Hyper-V 3.0
  • WMI for VMM control
  • No NFS client

Strategy: Connected Agent Model

  • Java-based Container executes on each Hyper-V
  • Business Logic accesses WMI via scripts
  • Use existing SystemVMs
  • Run on surrogate XenServer cluster

Current Limits

  • Reduced set of commands and command options
    • Constrained by time
  • VLAN isolation only
    • Use virtual router SystemVM for isolation
  • Local Primary Storage
    • Admin manually configures shares to appear as local folder
  • NFS Secondary storage via Windows Server 2012
    • Windows Server 2012 exposes share as NFS and SMB

Problem Areas

Lack of detail for Service Contract parameters

    • The meaning of parameters in Command objects not clear. E.g. Volume objects in CreateCommand
  1. If volumes keyed by UUID, does the plugin need to persist the volume name?
  2. If UUIDs are arbitrary, can they include the volume file extension?
  3. Can the volume path include the file name?

NFS configuration on Windows Server

    • Need technical assistance, as XenServer SSVM not able to mount NFS folder shared by a Windows Server 2012. Work around is manually mirroring templates on share mounted on Hyper-V.

Surrogate System VMs

  • No SystemVMs to run on Hyper-V

Future

  • WMI expertise
    • Examples from OpenStack driver not in depth enough
  • Java / WMI interop
    • Recommendations for avoiding calling WMI through Python welcome. Calling scripts problematic if it turns out that they freeze.

Road Map

Strategy

  • CloudStack Agent Model
  • Business logic in ServerResource accesses WMI

Support basic commands

  • VM lifecycle
    • Local disk creation from template
    • VM creation, start/stop, and destruction
  • VMM monitoring
    • Host, VM and storage stats returned to CloudStack Server

VM network isolation using VLANs

Basic template management

Expand networking support

  • Flat networking with Security Groups for VM isolation

Volume service

  • Volumes management independent of VMs

Expand VM management

  • Migration

Shared storage

Native SystemVMs

  • Console access
    • RDP sessions to Hyper-V VMs

Architecture

  • Reuse KVM-style Agent Container
    • Java-based agent executes on hypervisor
    • Call out to WMI
  • Use existing SystemVMs
  • Local Primary Storage
    • Local folder
  • Secondary storage accessed as NFS/SMB via Windows Server 2012
    • Free license Hyper-V Server 2012 has no NFS client
    • Admin manually mounts secondary storage to appear as local folder

Design changes

Adopt Javelin Storage model

  • Avoid NFS requirements

Agent model

  • Cloudstack agent model.
  • C# based agent which makes WMI calls for operations on the hypervisor.
  • Agent accepts json requests and does the necessary operations on the hypervisor.

V2 WMI API

  • 2012 R2 supports only root/virtualization/v2 namespace. WMI calls on the agent will use the same namespace.

Misc Design Notes

Local Storage

  • UUIDs for volumes correspond to their file names on disk. Only this UUID is persisted on the Hyper-V Server

Misc QA Notes

Test Plan

Unit tests

  • Each test corresponds to one or more Command objects sent to a ServerResource
  • No unit tests for server-side objects (Discoverer or HypervisorGuru)
  • Tests written to work only on Hyper-V 2012

Scope

  • Pure hyperv zone will be supported. No mixed zone.
  • Support for SMB/CIFS as primary and secondary.
  • VM Compute
    • Start, stop, reboot, destroy
    • Migrate - Live
    • Service offerings. Scale up is allowed on stopped VM.
    • Console access
    • SSH keys, user data.
    • Create VM from template
    • Create VM from iso
    • Attach, Detach ISO
    • User provided internal name
  • Storage
    • Primary storage
      • Shared Storage (SMB)
      • Local Storage
    • Root & data volumes – local and shared storage
    • Add, delete, attach & detach volumes
    • Secondary storage (SMB). Single secondary storage per zone.
  • Network
    • VLANs (isolated, shared, mgmt.)
    • External device support? NS, F5, SRX, Juniper – both isolated and shared n/w
    • All VR services supported: DNS, DHCP, LB, PF, StaticNAT, SourceNAT, NetworkACL, UserData, VPN
    • Dedicate IP range, Public VLANs (to account)
    • Restart (destroy/recreate) routers, system VMs, restart n/w – all cases
    • Different n/w configurations:
      • Storage in one NIC, Management in another, guest in another etc
      • Management and guest in one, storage in another
      • All in one network
    • L4-L7 services in shared n/w
    • Multiple IP range (restarts and DNS should pick up the specified ranges…)
    • Persistent network
  • Host tags
  • Storage tags
  • Provide Windows Service for connected agent
    • Windows Service is equivalent to Linux daemons.
  • Integrate with Javelin storage model
    • Removes NFS requirements
  • Add Hyper-V system VMs
  • Make WMI access more robust.
    • Access WMI directly from Plugin to avoid script maintenance.
  • Support basic networking
  • Support broader set of CloudStack commands

Background

Original Feature Spec