IaaS Application

The IaaS Application provides the business logic and state for Infrastructure as a Service in CloudCIX.
Access to the Application is via an API. The API is consumed by the Compute App to provide a GUI, and by Robot Core and Robot Drivers that are responsible for building infrastructure.
Once a User gains authorisation to build in CloudCIX, they can request, manage, and destroy Virtual Infrastructure by exercising the API, whether that’s through the web front-end or using a supported SDK.
IaaS itself consumes the Membership API for AAA and consumes the SCM API for supply chain capabilities including pricing. Billing is handled by Financials using an external Application called CloudBill to integrate between IaaS and Financials/SCM.
../_images/cloudbill_integration.png

CloudCIX Resources

‘Resource’ is the general term for any Virtual Infrastructure in CloudCIX.
The characteristics of a Resource are defined by its Resource Type.
Each Resource Type has a BOM (Bill of Material) which is the list of SKUs required to instantiate a Resource of that type
Some SKUs may be required while others are optional
To determine if a SKU is available for a Resource in a given Region, IaaS must consult the SCM API
The SCM Application stores information regarding if a SKU is supported/available in a Region
When a Resource is requested in CloudCIX, it will be recorded in the IaaS database with a list of the SKUs that were requested for it.
../_images/resource_erd.png

Billing & Pricing

Users build ‘resources’ that they need. Examples of resources are KVM VM, GPU, Ceph Rados device, VPN, etc. Each resource is comprised of a list of SKUs (Stock Keeping Units) and the quantity of each. Examples of SKUs are GB of RAM, H100 GPU and vCPU. Pricing is associated with SKUs, each SKU having a cost per hour. Billing for a Project is calculated by adding the cost of each SKU and multiplying it by the number of hours it was being consumed. To allow calculation of the cost of a Resource, the BOM (Bill of Materials) table is used to record the historical movement data of SKUs in a Project.

Below is an illustration of the relationships between the various fields in IaaS and how they link to SCM.

../_images/resource_billing.png

KVM Virtualisation

KVM Virtualisation is the most important virtualisation in CloudCIX and it can be described as follows:

KVM and Processor Virtualisation: KVM (Kernel-based Virtual Machine) leverages hardware virtualisation capabilities provided by the processor to efficiently virtualise hardware resources and manage virtual machines.

Enhancement by QEMU: QEMU (Quick Emulator) is a user space emulator that works in conjunction with KVM to provide full virtualisation capabilities. QEMU handles emulation of hardware devices and provides the virtualisation backend for KVM, enhancing its functionality.

Libvirt: Libvirt is a toolkit and API for managing virtualisation platforms, including KVM and QEMU. It provides a common interface for interacting with different virtualisation technologies and allows users to control and manage virtualisation resources programmatically.

CLI via virsh: virsh is a command-line interface (CLI) tool provided by Libvirt for managing virtual machines and other virtualisation resources. CloudCIX uses virsh commands as a convenient way to interact with the Libvirt API and perform administrative tasks related to virtualisation.