We use proprietary and third party's cookies to improve your experience and our services, identifying your Internet Browsing preferences on our website; develop analytic activities and display advertising based on your preferences. If you keep browsing, you accept its use. You can get more information on our Cookie Policy
Cookies Policy
FIWARE.ArchitectureDescription.Cloud.Compute - FIWARE Forge Wiki


From FIWARE Forge Wiki

Jump to: navigation, search



The FIWARE Cloud Object Storage Service Generic Enabler Specification is Copyright © 2014-2015 IBM and INTEL. Please note that this specification adopts the OpenStack Object Storage specification, which is published by and copyright OpenStack Foundation.

Legal Notice

Please check the following Legal Notice to understand the rights to use these specifications.


This specification describes the Cloud Compute Service GE, which is a key enabler to build a cloud solution.

The Compute Service GE provides the basic support for VM and containers management. This includes both the provisioning phase as well as the on going life-cycle management of VMs and containers. The compute services interacts with the Image service, Storage service (block and object storage), and Network service in order to obtain overall cloud management.

The baseline for the Compute Service GE is OpenStack Nova Service. Hence, Compute Service offers all the capabilities that OpenStack Nova natively provides to cloud hosting users and cloud hosting providers plus some unique extended capabilities.

The folwoing diagram shows a general logical view of the Nova component:

Docker virtual driver Nova Logical view

The main capabilities provided for a cloud hosting user are:

  • Browse Docker Container template catalog and provision a Container with a specified container image
  • Manage life cycle of the provisioned container
  • Resource monitoring of the container

For a cloud hosting provider, the following capabilities are provided:

Compute Service components

The following diagram shows the main components of the Docker container support in Nova .

Docker virtual driver
Nova virtual driver for Docker

Compute Service features

With respect to the OpenStack baseline, Compute Service provides in addition the following set of high-level advanced features:

  • Ability to re-purpose Compute nodes. Move a Docker compute node to server as KVM compute node and via-verse.
  • Ability to manage VMs and Docker in transparent way

Basic Concepts

The key concepts visible to the cloud user are:

  • Virtual server, a virtualized container that can host an arbitrary Operating System and arbitrary software stack on top, installed within the virtual server. Virtual servers are also referred as Virtual Machines (VMs) or (virtual) image instances (see definition of virtual image below). The compute service GE supports provisioning and life cycle management of Virtual Servers.
  • Container, Container-based virtualization isolates applications from each other on a shared operating system (OS). Operating-system-level virtualization is a server virtualization method where the kernel of an OS allows for multiple isolated user space instances, instead of just one. Such instances (often called containers, virtualization engines (VE), jails) may look and feel like a real server from the point of view of its owners and users.
  • Docker, Docker, which is an open-source project, competes Container by adding framework which automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating-system-level virtualization. In Linux Docker uses resource isolation features of the Linux kernel such as cgroups and kernel namespaces to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting virtual machines.
  • Virtual disk, representing a persistent virtual disk that can be potentially attached to an arbitrary virtual server. The compute service interacts with the storage service to support provisioning of virtual disks, as well as their attachment to virtual servers.
  • Virtual network, representing a logical network abstraction that would typically represent a network segment at layer 2 of the OSI model. The compute service interacts with the Network service to support provisioning of virtual networks, as well as attachment of virtual NICs of virtual servers to them.
  • Computing Flavor, a computing flavor is a hardware configuration that can be associated to a virtual server. Each flavor has a unique combination of CPU cores, memory capacity and disk space. An example of this combination could be 8 virtual CPUs, 16 Gb RAM, 10 Gb HDD and 160 Gb of ephemeral disk (a disk that is stored locally on the hypervisor host). Computing flavors must be registered and made available prior to their association to virtual servers.
  • Virtual image, an image is a collection of packaged files used to create or rebuild a virtual server. Basically, a virtual image is a snapshot of a virtual server from which you can create new virtual servers (i.e., image instances). Each virtual server derived from a virtual image hosts the Operating System and software stack associated to the virtual image and is assigned one among the set of available computing flavors, each of which maps to a configuration of computing resources (memory, CPU, etc.). A number of pre-built virtual images can be made available to cloud users but they may also create their own images using tools defined for that purpose. These custom images are useful for backup purposes or for producing "gold" server images if you plan to deploy a particular server configuration frequently. The compute service interacts with the Image service to support the life cycle of virtual images, as well as provisioning of virtual servers based on virtual images.

Main Interactions

Compute Service provides a wide variety of operations to provision and manage the life cycle of cloud resources. The most important ones are listed below.

Virtual Images

  • listVirtualImages -- Returns a list of all available virtual images (visible by the authenticated user)
  • queryVirtualImages -- Returns a list of available virtual images, filtered by given query criteria
  • getVirtualImageDetails -- Returns details of a virtual image (type, size, creation details, etc.)
  • uploadVirtualImage -- Uploads a new virtual image into the virtual image repository

Virtual Servers


  • createVirtualServer -- Provisions a new virtual server/container with the given properties (virtual hardware, policy parameters, access, etc). Returns unique ID of the virtual server.
  • destroyVirtualServer -- Removes a virtual server/container

Power Management

  • powerOnVirtualServer -- Powers on a virtual server/container
  • powerOffVirtualServer -- Powers off a virtual server/container
  • RestartVirtualServer -- Restarts a virtual server/container
  • ShutdownVirtualServer -- Shuts down a virtual server/container (note: the ability to perform this operation on the fly depends on the capabilities of the underlying virtualization platform)


  • resizeVirtualServer -- Changes the virtual hardware allocation for a virtual server, e.g., allocated RAM or number of CPUs (note: the types of resources for which the reconfiguration can be done on the fly depends on the capabilities of the underlying virtualization platform)


  • getVirtualServerDetails -- Returns details of a virtual server/container (virtual hardware specification, state, associated policy parameters, access details, etc.)

Virtual Disks


  • createVirtualDisk -- Provisions a new virtual disk with the given properties (size, capabilities, etc.). Returns unique ID of the virtual disk.
  • destroyVirtualDisk -- Removes a virtual disk


  • attachVirtualDisk -- Attaches a given virtual disk to a given virtual server (note: the ability to perform this operation on the fly depends on the capabilities of the underlying virtualization platform)
  • detachVirtualDisk -- Detaches a given virtual disk from a given virtual server (note: the ability to perform this operation on the fly depends on the capabilities of the underlying virtualization platform)


  • getVirtualDiskDetails -- Returns details of a given virtual disk (size, capabilities, attachment details, etc.)

Virtual Networks


  • createVirtualNetwork -- Provisions a new virtual network with the given properties (e.g., VLAN ID, capabilities, etc.). Returns unique ID of the virtual network.
  • destroyVirtualNetwork -- Removes a virtual network


  • attachVirtualServerToNetwork -- Attaches a virtual network interface of a given virtual server to a given virtual network
  • detachVirtualServerFromNetwork -- Detaches a virtual network interface of a given virtual server from a given virtual network


  • getVirtualNetworkDetails -- Returns details of a given virtual network (ID, capabilities, attachment details, etc.)

Example Scenario

The following sequence of operations describes a typical (simple) scenario of provisioning of a virtual server hosted in the Cloud:

  • User authenticates with Identity Management GE, receives a token
  • User retrieves a list of available images and of container flavors
  • User requests a new container
  • User verifies that the container creation has completed
  • User retrieves the IP address allocated for the container
  • User connects to the container

Basic Design Principles

When applied to Compute, the general design principles outlined at Cloud Hosting Architecture can be translated into the following key design goals:

  • Fully-automated provisioning and life cycle of compute, storage and network resources, requested, managed and released via a standards-based REST API: The REST API allows management of the provisioned resources both through a Web-based user interface or direct API invocation. The API is designed to be abstract and "declarative": a tenant specifies "what" he needs, while the "how" of the provisioning is left to the infrastructural policies and goals. The goal is to provide a standard interface to consume the virtual resource service regardless of the underlying technology used to implement the provisioning infrastructure.
  • High resource utilization, while providing the necessary levels of isolation, availability and performance of provisioned resources: Improved utilization and automation of resources allow greater cost efficiencies for both infrastructure providers and tenants.
  • Ability to dynamically control the amount of allocated resources, as well as to monitor the actual resource usage: Dynamic control of resource provisioning is at the core of application elasticity, enabling the correct sizing of applications' components and operating costs to the varying load conditions.
  • Non-disruptive, automated administrative tasks (e.g., infrastructure maintenance): when scale grows, partial hardware and software failures are the norm rather than the exception. Infrastructure providers require mechanisms to automate administrative tasks reducing the needed effort and preventing any disruption to the tenants' services and applications.
Personal tools
Create a book