A simple hypervisor controller
Go to file
dave dfb8ca7c01 remove options dict from state state jsons/apis for simiplicity 2016-12-29 00:11:22 -08:00
example remove options dict from state state jsons/apis for simiplicity 2016-12-29 00:11:22 -08:00
zhypervisor remove options dict from state state jsons/apis for simiplicity 2016-12-29 00:11:22 -08:00
.gitignore Initial commit 2016-12-26 16:42:48 -08:00
README.md Add disk API 2016-12-28 18:43:07 -08:00
requirements.txt remove options dict from state state jsons/apis for simiplicity 2016-12-29 00:11:22 -08:00
setup.py Add basic api 2016-12-28 16:30:18 -08:00

README.md

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 name
- 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/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