Todo

From Libvirt Wiki
Jump to: navigation, search

libvirt Todo List / Roadmap

This page serves as the central location to record all ideas for future todo items in libvirt / a roadmap for future development. Listing an idea here does not imply that it is committed to for inclusion in libvirt, just that someone thought it might be a useful feature. Discussion for final approval always takes place on the development mailing list.

If you intend to work on one of the items here, be sure to add a comment in the corresponding bugzilla ticket to this effect, to avoid risk of duplicated effort between developers. It is also strongly recommended to mail the development mailing list with proposals for new APIs & XML before fully implementing them, to allow for early design review.

For historical reference, you may also wish to view the old TODO list

Scalability, performance & reliability

The features in this list focus on ensuring that the libvirt API & libvirtd daemon can provide scalable management services, with minimal performance impact on the host and be tolerant against failures.

  • Lifecycle events. Events for storage pools, virtual networks, interfaces, and node devices, to remove API polling
  • Object enumeration. Ability to enumerate & retrieve all object handles in a single API call to improve performance & avoid race condition, for domains, storage pools, virtual networks, interfaces & node devices.
  • Object limits. Document maximum intended limits on number of objects that can be fetched in an API call. Validate this works at RPC layer
  • XML limits. Document maximum intended XML size. Validate this works at RPC layer
  • Logging overheads. Re-work logging code to avoid performance overhead when logging is disabled
  • Daemon optimization. Profile libvirtd to identify performance hotspots & address them

Networking management

  • Transactions. Allow for transaction changes across all interface configs with automatic rollback on reboot
  • Virtual Switch. Introduce a virtual switch abstraction to facilitate migration of VMs across hosts with differing network configs
  • Network manager. Driver that uses network manager instead of netcf, for proper desktop integration
  • NIC/LAN auto identification. A means to broadcast a unique 'signal' on a hosts' NIC and detect it on other hosts, to determine host connectivity.
  • IPv6 virtual network. Support IPv6 configuration on the virtual networks (BZ 514749)
  • DNSmasq rewrite. Re-write dnsmasq integration to play nicely with host usage
  • VDE. Try VDE as an implementation for non-root virtual networking with QEMU (BZ 585478)

Storage management

  • Vendor iSCSI. Vendor specific iSCSI extensions for LUN creation/deletion
  • Filesystem format. Support filesystem formatting
  • Root squash NFS. Improve operation when run against root squashing NFS server
  • Sheepdog. Woof.
  • Volume verification. Support API for verifying (+fixing?) storage volumes (eg fsck/qemu-img check)
  • NPIV migration. Support migration of VMs using NPIV storage
  • Connection cloning. Cross connection cloning of storage volumes (BZ 520486)
  • Data upload/download. Upload and download streaming APIs for storage volume data
  • Capabilities. Declare supported features in storage backends (BZ 461931)
  • Operating cancel. Ability to cancel long running operations (BZ 524205)

Debugging / supportability / diagnostics

  • SystemTAP. Probe points in libvirtd (BZ 552387)
  • Logging config. Live re-configuration of logging levels
  • Log retrieval API. API to fetch guest domain logs remotely.
  • Core dump API. API to fetch a core dump for a VM
  • kmod error reporting. Improve error reporting when important kmods are missing (tun, bridge, pci-stub) (BZ 576702)
  • sosreport. Improve data collected via sosreport
  • Managed core dumps. Managed core dump location per driver
  • QEMU: SystemTAP. Probe points in QEMU driver
  • QEMU: direct invocation. Direct invocation of a QEMU argv via domxml-from-native
  • QEMU: attach. Attach & import an existing running QEMU guest as a domain
  • QEMU: GDB stub. Support QEMU GDB stub access

Security protection

  • Isolated GID:UID. Allow a per-guest UID:GID pair in security driver
  • Stackable drivers. Allow stackable security drivers to be represented in guest config explicitly
  • Static disk labelling. Allow for automatic disk relabelling in conjunction with static domain labels
  • Skip disk labelling. Allow disk labelling override per disk (BZ 568935)
  • QEMU: Containers. Use containers to restrict QEMU domain access
  • RBAC APIs. Role based access control for all APIs
  • RBAC consoles. Role based access control to guest graphical consoles
  • Certmaster. Integrate with certmaster to facilitate x509 certificate deployment
  • Auditing. Integration with audit daemon for logging operations
  • Secrets encryption. Support encryption for local secrets storage
  • GNOME keyring. Integration with gnome keyring as a secrets drivers
  • Per user x509. Allow per user x509 certificate location (BZ 509997)
  • Per host x509. Allow per host x509 certificate location
  • Per connection x509. Allow per connection x509 certificate override parameter
  • File ACLs. Manage file ACLs instead of ownership in DAC security driver

Hypervisor driver

  • Multiple consoles. Allow for multiple text console devices per guest
  • Nested virt. Support nested virtualization with QEMU (BZ 506617)
  • QEMU: reboot. Suppport graceful reboot API (BZ 496537)
  • Quit API. Introduce a 'domain quit' API which is less severe than destroy, but more forceful than 'shutdown'.
  • USB managed mode. Support a managed mode for host USB devices ala PCI (BZ 508645)
  • USB detach. Support USB driver detach from host OS for safety (BZ 508645)
  • Domain name. API for renaming a guest (BZ 558160)
  • FS passthrough. Host filesystem passthrough (BZ 596692)
  • Screenshot. Screenshot capture of guest console
  • mouse/key input. Allow injection of mouse & key events to guest
  • QEMU: Crash detection. Detect when a QEMU guest OS has crashed (virtual blinking LEDs)
  • QEMU: capabilities. Replace command line parsing with capabilities data
  • QEMU: more command line. Support more (all?) command line args
  • QEMU: compat reports. Generate reports on level of support for QEMU features in libvirt driver
  • QEMU: aio tunable. Control AIO mode for disks (BZ 576830)
  • Console tunnelling. Tunnel access to the text console stream (BZ 490191)
  • Pre-start hook. Hook invoked early in domain startup for storage setup (BZ 618970)

Testing

  • TCK. Expand API and hypervisor coverage in TCK
  • Threads. Update thread locking test suite to follow latest code pattern
  • QEMU: Job. Write a CIL test case for verifying correct use of QEMU job mutex in APIs
  • Autotest. Wire up all test suites into Autotest framework
  • Fake QEMU. Create a fake QEMU binary for scalability testing of QEMU driver