...
- CloudStack Agent Model
- Business logic in ServerResource accesses WMI
Phase 1
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
...
Basic template management
...
Expand networking support
...
Expand VM management
Shared storage
Native SystemVMs
- Console access
- RDP sessions to Hyper-V VMs
Progress
GitHub repository https://github.com/lafferty/cshv3
- Plugin is cloud-plugin-hypervisor-hyperv, under ./plugins/hypervisor/hyperv
- Minor changes to UI required for template creation
Architecture
- Reuse KVM-style Agent Container
- Java-based agent executes on hypervisor
- Call out to WMI via Hyper-V scripts
- Use existing SystemVMs
- Include XenServer cluster to run SSVM and Virtual Router
Local Primary Storage- 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
Executes in Cygwin
Design changes
...
Adopt Javelin Storage model
...
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
- Currently mix of v1 and v2
Access WMI from Java
- Remove use of scripts
- Remove agent from Hyper-V server2012 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
Background
Original Feature Spec