CloudKitty REST API (v1)

Collector

GET /v1/collector

Unused function, hack to let pecan route requests to subcontrollers.

GET /v1/collector/mappings

Return the list of every services mapped to a collector.

Parameters:
  • collector (str) – Filter on the collector name.

Return:

Service to collector mappings collection.

Return type:

ServiceToCollectorMappingCollection

GET /v1/collector/mappings/(service)

Return a service to collector mapping.

Parameters:
  • service (str) – Name of the service to filter on.

Return type:

ServiceToCollectorMapping

POST /v1/collector/mappings

Create a service to collector mapping.

Parameters:
  • collector (str) – Name of the collector to apply mapping on.

  • service (str) – Name of the service to apply mapping on.

Return type:

ServiceToCollectorMapping

DELETE /v1/collector/mappings

Delete a service to collector mapping.

Parameters:
  • service (str) – Name of the service to filter on.

GET /v1/collector/states

Query the enable state of a collector.

Parameters:
  • name (str) – Name of the collector.

Return:

State of the collector.

Return type:

CollectorInfos

PUT /v1/collector/states

Set the enable state of a collector.

Parameters:
  • name (str) – Name of the collector.

  • infos (CollectorInfos) – New state informations of the collector.

Return:

State of the collector.

Return type:

CollectorInfos

type CollectorInfos

Type describing a collector module.

Data samples:

Json
{
    "enabled": true,
    "name": "gnocchi"
}
XML
b'<value>\n  <name>gnocchi</name>\n  <enabled>true</enabled>\n</value>'
enabled

State of the collector.

name

Name of the collector.

type ServiceToCollectorMapping

Type describing a service to collector mapping.

Data samples:

Json
{
    "collector": "gnocchi",
    "service": "compute"
}
XML
b'<value>\n  <service>compute</service>\n  <collector>gnocchi</collector>\n</value>'
collector

Name of the collector.

service

Name of the service.

type ServiceToCollectorMappingCollection

Type describing a service to collector mapping collection.

Data samples:

Json
{
    "mappings": [
        {
            "collector": "gnocchi",
            "service": "compute"
        }
    ]
}
XML
b'<value>\n  <mappings>\n    <item>\n      <service>compute</service>\n      <collector>gnocchi</collector>\n    </item>\n  </mappings>\n</value>'
mappings

List of service to collector mappings.

Info

GET /v1/info/config

Return current configuration.

Return type:

dict(str: None)

GET /v1/info/metric

Get the metric list.

Return:

List of every metrics.

Return type:

CloudkittyMetricInfoCollection

GET /v1/info/metric/(metric_name)

Return a metric.

Parameters:
  • metric_name (str) – name of the metric.

Return type:

CloudkittyMetricInfo

type CloudkittyMetricInfo

Type describing a metric info in CloudKitty.

Data samples:

Json
{
    "metadata": [
        "resource_id",
        "project_id",
        "qty",
        "unit"
    ],
    "metric_id": "image.size",
    "unit": "MiB"
}
XML
b'<value>\n  <metric_id>image.size</metric_id>\n  <metadata>\n    <item>resource_id</item>\n    <item>project_id</item>\n    <item>qty</item>\n    <item>unit</item>\n  </metadata>\n  <unit>MiB</unit>\n</value>'
metadata

List of metric metadata

metric_id

Name of the metric.

unit

Metric unit

type CloudkittyMetricInfoCollection

A list of CloudKittyMetricInfo.

Data samples:

Json
{
    "metrics": [
        {
            "metadata": [
                "resource_id",
                "project_id",
                "qty",
                "unit"
            ],
            "metric_id": "image.size",
            "unit": "MiB"
        }
    ]
}
XML
b'<value>\n  <metrics>\n    <item>\n      <metric_id>image.size</metric_id>\n      <metadata>\n        <item>resource_id</item>\n        <item>project_id</item>\n        <item>qty</item>\n        <item>unit</item>\n      </metadata>\n      <unit>MiB</unit>\n    </item>\n  </metrics>\n</value>'
GET /v1/info/service

Get the service list (deprecated).

Return:

List of every services.

Return type:

CloudkittyMetricInfoCollection

GET /v1/info/service/(service_name)

Return a service (deprecated).

Parameters:
  • service_name (str) – name of the service.

Return type:

CloudkittyMetricInfo

Rating

GET /v1/rating/modules

return the list of loaded modules.

Return:

name of every loaded modules.

Return type:

CloudkittyModuleCollection

GET /v1/rating/modules/(module_id)

return a module

Return:

CloudKittyModule

Return type:

CloudkittyModule

PUT /v1/rating/modules

Change the state and priority of a module.

Parameters:
  • module_id (str) – name of the module to modify

  • module (CloudkittyModule) – CloudKittyModule object describing the new desired state

Return type:

CloudkittyModule

POST /v1/rating/quote

Get an instant quote based on multiple resource descriptions.

Parameters:
Return:

Total price for these descriptions.

Return type:

float

GET /v1/rating/reload_modules

Trigger a rating module list reload.

type CloudkittyModule

A rating extension summary

Data samples:

Json
{
    "description": "Sample extension.",
    "enabled": true,
    "hot-config": false,
    "priority": 2
}
XML
b'<value>\n  <description>Sample extension.</description>\n  <enabled>true</enabled>\n  <hot-config>false</hot-config>\n  <priority>2</priority>\n</value>'
description

Short description of the extension.

enabled

Extension status.

hot_config

On-the-fly configuration support.

module_id

Name of the extension.

priority

Priority of the extension.

type CloudkittyModuleCollection

A list of rating extensions.

Data samples:

Json
{}
XML
b'<value />'
type CloudkittyResource

Type describing a resource in CloudKitty.

Data samples:

Json
{
    "desc": {
        "image_id": "a41fba37-2429-4f15-aa00-b5bc4bf557bf"
    },
    "service": "compute",
    "volume": "1"
}
XML
b'<value>\n  <service>compute</service>\n  <desc>\n    <item>\n      <key>image_id</key>\n      <value>a41fba37-2429-4f15-aa00-b5bc4bf557bf</value>\n    </item>\n  </desc>\n  <volume>1</volume>\n</value>'
desc

Description of the resources parameters.

service

Name of the service.

volume

Volume of resources.

type CloudkittyResourceCollection

A list of CloudKittyResources.

Data samples:

Json
{}
XML
b'<value />'

Report

GET /v1/report/summary

Return the summary to pay for a given period.

Return type:

SummaryCollectionModel

GET /v1/report/tenants

Return the list of rated tenants.

Return type:

list(str)

GET /v1/report/total

Return the amount to pay for a given period.

Return type:

Decimal

Storage

GET /v1/storage/dataframes

Return a list of rated resources for a time period and a tenant.

Parameters:
  • begin (datetime) – Start of the period

  • end (datetime) – End of the period

  • tenant_id (str) – UUID of the tenant to filter on.

  • resource_type (str) – Type of the resource to filter on.

Return:

Collection of DataFrame objects.

Return type:

DataFrameCollection

type RatedResource

Represents a rated CloudKitty resource.

Data samples:

Json
{
    "desc": {
        "flavor": "m1.tiny",
        "vcpus": "1"
    },
    "rating": "1.0",
    "service": "compute",
    "volume": "1.0"
}
XML
b'<value>\n  <rating>1.0</rating>\n  <service>compute</service>\n  <desc>\n    <item>\n      <key>flavor</key>\n      <value>m1.tiny</value>\n    </item>\n    <item>\n      <key>vcpus</key>\n      <value>1</value>\n    </item>\n  </desc>\n  <volume>1.0</volume>\n</value>'
desc

Description of the resources parameters.

service

Name of the service.

volume

Volume of resources.

type DataFrame

Type describing a stored data frame.

Data samples:

Json
{
    "begin": "2015-04-22T07:00:00",
    "end": "2015-04-22T08:00:00",
    "resources": [
        {
            "desc": {
                "flavor": "m1.tiny",
                "vcpus": "1"
            },
            "rating": "1.0",
            "service": "compute",
            "volume": "1.0"
        }
    ],
    "tenant_id": "69d12143688f413cbf5c3cfe03ed0a12"
}
XML
b'<value>\n  <begin>2015-04-22T07:00:00</begin>\n  <end>2015-04-22T08:00:00</end>\n  <tenant_id>69d12143688f413cbf5c3cfe03ed0a12</tenant_id>\n  <resources>\n    <item>\n      <rating>1.0</rating>\n      <service>compute</service>\n      <desc>\n        <item>\n          <key>flavor</key>\n          <value>m1.tiny</value>\n        </item>\n        <item>\n          <key>vcpus</key>\n          <value>1</value>\n        </item>\n      </desc>\n      <volume>1.0</volume>\n    </item>\n  </resources>\n</value>'
begin

Begin date for the sample.

end

End date for the sample.

resources

A resource list.

tenant_id

Tenant owner of the sample.

type DataFrameCollection

A list of stored data frames.

Data samples:

Json
{
    "dataframes": [
        {
            "begin": "2015-04-22T07:00:00",
            "end": "2015-04-22T08:00:00",
            "resources": [
                {
                    "desc": {
                        "flavor": "m1.tiny",
                        "vcpus": "1"
                    },
                    "rating": "1.0",
                    "service": "compute",
                    "volume": "1.0"
                }
            ],
            "tenant_id": "69d12143688f413cbf5c3cfe03ed0a12"
        }
    ]
}
XML
b'<value>\n  <dataframes>\n    <item>\n      <begin>2015-04-22T07:00:00</begin>\n      <end>2015-04-22T08:00:00</end>\n      <tenant_id>69d12143688f413cbf5c3cfe03ed0a12</tenant_id>\n      <resources>\n        <item>\n          <rating>1.0</rating>\n          <service>compute</service>\n          <desc>\n            <item>\n              <key>flavor</key>\n              <value>m1.tiny</value>\n            </item>\n            <item>\n              <key>vcpus</key>\n              <value>1</value>\n            </item>\n          </desc>\n          <volume>1.0</volume>\n        </item>\n      </resources>\n    </item>\n  </dataframes>\n</value>'