Accounting
Last updated
Last updated
The APEL project provides accounting for the Indigo DataCloud project. It is written in Python and uses MySQL.
APEL Cloud Accounting can account for the usage of OpenNebula and OpenStack instances. Accounting "collectors" need to be installed on machines with access to the underlying Cloud infrastructure. The collectors can be found .
The collectors produce "Usage Records" in the APEL-Cloud v0.2 or v0.4 message formats. Information about these format can be found .
These records need to be sent as POST requests to the REST endpoint .../api/v1/cloud/record
, where ...
is the machine hosting the docker image. A POST request requires an X.509 certificate to authenticate the request. The hostname, which should be the same as the common name (CN) contained in the X.509 certificate, must be listed as a provider for the request to be authorized.
Accepted records are summarised twice daily. These summaries can be accessed with a GET request to .../api/v1/cloud/record/summary
. Summaries can be filtered using key=value
pairs. See for a list of valid supported key=value
pairs. A GET request requires an IAM access token be included in the request. This token is then sent to the IAM to authenticate the ID of the service requesting access to the summary. This ID needs to be in ALLOWED_FOR_GET
in apel_rest/settings.py
for access to be authorized. See for instructions on adding service to ALLOWED_FOR_GET
It is currently expected that only the QoS/SLA tool will interact with these summaries.
Updates
Dockerhub Image Tag: 1.3.2-1, containing:
APEL REST Interface version 1.3.2-1
APEL Server version 1.6.0-1
New Features:
Patches, Bug Fixes and Documentation updates:
Installation methods
Kubernetes YAML files also provided.
Upgrade methods
N/A
The supported platforms
CentOS7 and Ubuntu 16. As the software is deployed as a docker container, any OS with docker
should be able to deploy the Accounting Service
Docker Container:
Allow for the Identity and Access Management (IAM) URL to be set in settings.py:
Add the ability to locally ban/allow POST requests:
Add a simple script to sender to the APEL REST interface:
Add ability to query summaries by GlobalUserName:
Upgrade to APEL 1.6.0:
Reduction of duplicate log entries:
Clearer exception handling:
Example summary output to documentation:
Improve the install documentation:
Add Fetching of Certificate Revokation Lists to Docker build:
Explicitly set UpdateTime to update to current time on a change to the row:
Refactor the external call to get the list of providers to single method
Added a link to the Service Reference Card to Summary.md:
Removal of the method level getLogger() calls:
Improve exception handling should provider JSON not be retrieved:
Remove hardcoded urls from test suite:
Add example summary output to documentation:
Remove allowed failure of Python 2.7 tests as this version should be checked:
Allow for the Identity and Access Management (IAM) URL to be set in settings.py:
Improve the install documentation:
Add Fetching of Certificate Revokation Lists to Docker build:
Add the ability to locally ban/allow POST requests:
Replace default cursor object with a DictCursor:
Explicitly set UpdateTime to update to current time on a change to the row:
Add a simple script to sender to the APEL REST interface:
Add ability to query summaries by GlobalUserName:
Upgrade to APEL 1.6.0:
Running the docker image on Centos 7 and Ubuntu 16.04:
How to update an already deployed service to 1.3.2 (from 1.2.1):
For more details please see detailed
Please use the