A simple hypervisor controller
example | ||
zhypervisor | ||
.gitignore | ||
README.md | ||
requirements.txt | ||
setup.py |
Z Hypervisor
A minimal hypervisor based on QEMU, with HTTP API
Requirements
- kvm kernel module
- Qemu (Specifically, qemu-system-x86_64)
- brctl (part of bridge-utils on Ubuntu)
- an ethernet bridge named br0
- it must run as root
Install
- Check out this repo, install using pip3
- Create a config (see example/zd.json)
- Run
zd -c|--config /path/to/zd.json
HTTP API
GET /api/v1/machine/:id/start
Start a machine given its id
GET /api/v1/machine/:id/stop
Stop a machine given its id
GET /api/v1/machine/:id/restart
Stop a machine given its id
GET /api/v1/machine/:id
Get the description of a machine or all machines if no id passed
PUT /api/v1/machine/:id
Create a new machine or update an existing machine. Params:
- machine_id: alphanumeric name for the machine
- machine_spec: serialized json object describing the machine. See the 'spec' key of example/ubuntu.json
DELETE /api/v1/machine/:id
Delete a machine give its id
GET /api/v1/machine/:id/property/:property
Get the current value of a machine's property
PUT /api/v1/machine/:id/property/:property
Create or update a machine's property. Params:
- machine_id: alphanumeric name for the name
- property: name of the property to modify or create
- value: serialized json object to set as the value
DELETE /api/v1/machine/:id/property/:property
Remove a property from a machine
GET /api/v1/disk/:id
List all disks or a specific disk if passed
PUT /api/v1/disk/:id
Create a storate disk to use with machines. Params:
- disk_spec: serialized json object describing the disk. See the 'spec' key of example/ubuntu-root.json and example/ubuntu-iso.json
DELETE /api/v1/disk/:id
Delete a disk by ID