How many times did you need to start a virtual machine and either provide it with a directory on the host or use some file-sharing service (e.g., dropbox) or your email, just to copy a resource that resides within the virtual disk? In this session, Arik presents the upcoming integration between the muCommander file-manager and libguestfs. This produces an alternative to that complex process by enabling to browse/copy-from/copy-to various virtual disk formats directly using a user-friendly interface. Come to see the planned functionality and hear about the technical complexity of this integration.
muCommander is an open source cross-platform file manager that supports a variety of file formats (e.g., zip, tar) and file protocols (e.g., sftp, smb). These days muCommander is extended with a pluggable framework to ease the process of supporting more file formats and protocols.
This session focuses on a specific plugin for virtual disks. The plugin wraps the libguestfs library that provides an API for accessing and modifying various formats of virtual disks, such as vmdk and qcow. Libguestfs is a powerful library that is used by a variety of tools, e.g., the conversion utility virt-v2v. However, libguestfs lacks a user-friendly interface for those who wish to inspect and modify virtual disks as ordinary archive files. The plugin for muCommander aims to provide that via a dual-pane graphical interface.
The on-going development of this plugin exposes some of the complexity of integrating virtual disks, and libguestfs in particular, into a file-manager. For instance, unlike ordinary archive files, the operating system needs to be inspected in order to produce the tree structure of the file system(s). As another example, muCommander uses a stream based approach to copying files while libguestfs assumes local files or standard input/output. This session would cover not only the functional side of the integration, that will be demonstrated with images that resides on oVirt's storage domains, but also interesting sides of its implementation.