Authors:

Feature pages are design documents that developers have created while collaborating on oVirt.

Most of them are outdated, but provide historical design context.

They are not user documentation and should not be treated as such.

Documentation is available here.

Aggregate QoS Objects

Description

While oVirt is rapidly continues to grow and gather features, it’s important to wrap already existing features with new ones, for better UX reasons. In oVirt 3.5, there are going to be 2 new QoS objects, CPU limits and blkio limits, added to the existing one network QoS (since 3.3).

Owner

Name: Gilad Chaplik (gchaplik)

Current status

Target Version: 3.5

Status: development (http://gerrit.ovirt.org/#/q/status:open+project:ovirt-engine+branch:master+topic:aggregate_qos,n,z)

Detailed Description

Engine Core

  • Introducing a new name space QoS, BaseQos abstract class, QosType (network, cpu, storage).
  • Data Base: qos table to hold all limits (sparse matrix), and include a type field (QoSType).

RESTful API

  • POST: /ovirt-engine/api/datacenters/{datacenter:id}/qoss; body: qos; response: qos
   <qos type="network">
     <name>test_qos</name>
     <inbound_average>10</inbound_average>
     <inbound_peak>10</inbound_peak>
     <inbound_burst>100</inbound_burst>
     <outbound_average>-1</outbound_average>
     <outbound_peak>-1</outbound_peak>
     <outbound_burst>-1</outbound_burst>
   </qos>
  • GET: /ovirt-engine/api/datacenters/{datacenter:id}/qoss; response: qos
  • DELETE: /ovirt-engine/api/datacenters/{datacenter:id}/qoss/{qos:id};
  • GET: /ovirt-engine/api/datacenters/{datacenter:id}/qoss/{qos:id}; response: qos
   <qos type="network" href="/ovirt-engine/api/datacenters/00000002-0002-0002-0002-000000000321/qoss/a66577ff-d5f1-40f7-aebb-0b350ad8bb8c" id="a66577ff-d5f1-40f7-aebb-0b350ad8bb8c">
       <name>test2</name>
       <data_center href="/ovirt-engine/api/datacenters/00000002-0002-0002-0002-000000000321" id="00000002-0002-0002-0002-000000000321"/>
       <inbound_average>10</inbound_average>
       <inbound_peak>10</inbound_peak>
       <inbound_burst>100</inbound_burst>
       <outbound_average>-1</outbound_average>
       <outbound_peak>-1</outbound_peak>
       <outbound_burst>-1</outbound_burst>
   </qos>
  • PUT: /ovirt-engine/api/datacenters/{datacenter:id}/qoss/{qos:id}; body: qos; response: qos

  • ulimited: -1.

NOTE: the qos object will contain all limits from all types.

GUI

  • Remove network profile as a main tab.
  • Add a splitter to network profiles subtab, and include permissions sub tab (UX RFE will be opened to enhance ‘splitter subtabs’ l&f).
  • Network QoS sub tab under data centers will be renamed to QoS.
  • QoS sub tab will contain a vertical tab control with 3 values: Network, Storage, CPU:

each view will show a separate table including its limit, in All we’ll have a generic limit text, taken from IQoS, and the QoSType.

  • [WiP] mockups to follow.

Profiles

Each profile will have its separate table and all will be connected to qos table. In engine, there will be a base dao and base profile BE for all profiles, should share some of the basic flows.