VMRC in a nutshell

Cloud Management Platforms (CMPs), e.g. OpenNebula and OpenStack, require creating Virtual Machine Images (VMIs), which encapsulate the required hardware and software configuration to successfully execute applications. Different applications require different software and hardware requirements, thus leading to a massive creation of VMIs. Applications and services for multi-Clouds (i.e. hybrid applications that require VMs from on-premises and public Clouds) have to translate from high-level requirements of applications (e.g. Ubuntu 14.04 + Java) to the specific most appropriate VMIs available in the CMP's repository. Therefore, these VMIs must be properly indexed. Also, container management tools such as Docker require creating Docker images which, again, encapsulate applications together with their dependences.

For that, VMRC is a catalog of Virtual Machine Images (VMIs) that enables users (and/or Cloud administrators) to index (and store, though it is more convenient to delegate storage to the CMP) the VMIs together with the appropriate metadata that describes their hardware and software features. The system offers matchmaking capabilities so that users can specify their requirements to the catalog and the system retrieves the most appropriate VMIs that satisfy the given requirements.

It is a web service that features a web-based GUI, a web-services API, a client-side Java API and a command-line application. Being developed in Java, it is inherently multi-platform and it can seamlessly work in Windows, OS X and Linux. However, the easiest and fastest way to deploy VMRC is using its Docker image.

VMRC in a nutshell


Catalog, Repository and Storage

The user specifies the hardware capabilities of the VMI (hypervisor, architecture, disk size, etc.) and its software configuration (such as the applications and libraries installed) and registers it in the catalog together with the actual location of the VMI stored in the CMP's repository (e.g. one://myhost/45, indicating that the VMI is actually image number 45 in an OpenNebula deployment, or aws://us-east-1/1a2b3c4d, indicating that the AMI is actually stored on AWS for the region us-east-1 with a certain AMI identifier). VMRC can also be used as a repository, uploading the VMI via FTP and retrieving it via HTTP, though using it as an index is the most usual way. You decide the semantics of the storage URL so it can also be used to catalog Docker containers (e.g. docker://my-docker-registry:port/myimage).

General Architecture

The VMRC is a client-server application deployed as a web service and a client-side API. The server requires an application server like Apache Tomcat and both the client and the server require Java (JRE or JDK). The following figure depicts the workflow involved in managing the VMIs.



The Cloud users can query the catalog using the provided APIs or via the command-line application by specifying all the requirements that should be met by the candidate VMIs.

Capabilities and Requirements

The capabilities of the VMI are expressed via a simple key-value language. For example, the following snippet of code describes a VMI created for the KVM hypervisor with i686 architecture, 10000 MBytes of hard disk and with Ubuntu 11.10 Linux installed. The users can connect via ssh to the VM with the account john and password janedoe. In addition, the VMI has Matlab 8.0 and the Java JDK 1.6 installed.


The users can query the catalog via a similar key-value language that includes all the requirements that should be met by the candidate VMIs . This language differentiates between the hard requirements (these must be met by a VMI) and the soft requirements (a VMI that meets these requirements would be better ranked).

The following snippet of code (at the right) is used by the user to query the catalog for the VMIs that satisfy the following requirements. It must be a VMI created by the KVM hypervisor with i686 architecture; The OS should be any version of Ubuntu - Linux greater than or equal


to 9.10; The VMI should have the Apache Tomcat version greater or equal than 7.0 and the Java JDK application installed (greater or equal than version 1.5); In addition, if the VMI has Matlab version >= 7.5, the VMI should be better ranked.

VMRC Documentation

Check the docs to learn more about VMRC.


Tel: (+34) 963 87 70 07 Ext. 88254
Camino de Vera Road, Building 8B, Door N, 1st Floor,
Valencia City, Valencia 46022



Copyright © 2015, GRyCAP-I3M-UPV, Universitat Politècnica de València - 46022, Valencia, Spain