AOng Rate Limit Integration

The Rate Limit integration is not part of the Abiquo core product, and as such, it is not supported by Abiquo.

The Rate Limit integration is designed to limit the bandwidth available to any network interface by setting the port speed/limit on the hypervisor public network NIC. The initial release uses API calls to set the limit data and outbound API integration to update the hypervisor settings.

This feature has been introduced because customers in certain parts of the world suffer from very high internet access costs, so they often have relatively slow connections. In a standard Abiquo environment each VM network interface can have a port speed which would enable the VM to take a significant proportion of the internet bandwidth, denying other customers the service they expect. 
This feature addresses that need, by allowing an Enterprise's public network interfaces to be constrained to a level which matches the service for which they are contracted.

Use the AOng (API Outbound next generation) to monitor power on events on VMs and the rate limit integration to set hypervisor quality of service for the NICs.

Prerequisites for the plugin

The plugin uses different tools for configuring KVM and ESX hypervisors. 

For KVM hypervisors the plugin requires libvirt version 0.10.2 or higher. See http://libvirt.org/

For ESX hypervisors the plugin uses a Python script that requires Python version 2.6 or higher. The Python script depends on pyvmomi (see https://pypi.python.org/pypi/pyvmomi) and PyYaml (see https://pypi.python.org/pypi/PyYAML).

Install package dependencies:

yum install gcc gcc-c++ make python python-devel python-pip python-setuptools

Install Python dependencies using pip or easy_install.

For pip:

pip install pyvmomi pyyaml argparse

For easy_install:

easy_install pyvmomi pyyaml argparse
Configure plugin for ESX

Edit config/vmware_creds.yml and include in it all necessary users and passwords for each ESX server as well as the vCenter server.

The ESXi block has an entry for each ESXi server IP address that Abiquo may use (i.e. all the IPs of the servers listed in Abiquo) and for each one, the username and password are required. The port is optional and the default value of 443 will be used if no value is supplied.

A sample file could be:

ESXi:
  192.168.5.53:
    username: root
    password: temporal
    port: 443
  192.168.5.55:
    username: root
    password: temporal
vCenter:
  192.168.5.213:
    username: root
    password: vmware
Configure Abiquo enterprise

For the Rate Limit integration, set three properties in the Abiquo enterprise. These properties describe the max burst size, the maximum peak rate and the average rate for each public network. The properties are named with the network name and a suffix for each property. For example, for a public network named ```publicNet``` you will need to set ```publicNet_burst```, ```publicNet_peak``` and ```publicNet_average```. Supply the properties in Kb/s.

An example request to set these properties is:

curl -v -k -u admin:xabiquo https://abiquo.example.com:443/api/admin/enterprises/1/properties 
-X PUT -H 'Content-Type: application/vnd.abiquo.enterpriseproperties+json' 
-d '{"properties": {"publicNet_burst": 300, "publicNet_peak": 300, "publicNet_average": 200}}'

See the Abiquo API documentation about the EnterprisesResource and Update enterprise properties via API

Configure AOng rules

Configure the rules that filter Abiquo Outbound API messages and perform the required actions.

Command rules
FieldValue
NAMEApplyQoS
ACTIONQoSUpdate
Rule group
FieldValue
NAMERate Limit
Rules
FieldValue
SEVERITYINFO
ACTIONVIRTUAL_MACHINE: VSM_CHANGE_STATE
PRIORITY10
RULE GROUPRate Limit
COMMANDApplyQoS

When a VM in an enterprise with a rate limit successfully changes state, AOng will update the QoS parameters for the public NIC in the VM definition on the hypervisor   

Unable to render {include} The included page could not be found.