HashMap Module REST API

GET /v1/rating/module_config/hashmap/types

Return the list of every mapping type available.

Return type:

list(str)

GET /v1/rating/module_config/hashmap/services

Get the service list

Return:

List of every services.

Return type:

ServiceCollection

GET /v1/rating/module_config/hashmap/services/(service_id)

Return a service.

Parameters:
  • service_id (uuid) – UUID of the service to filter on.

Return type:

Service

POST /v1/rating/module_config/hashmap/services

Create hashmap service.

Parameters:
  • service_data (Service) – Informations about the service to create.

Return type:

Service

DELETE /v1/rating/module_config/hashmap/services

Delete the service and all the sub keys recursively.

Parameters:
  • service_id (uuid) – UUID of the service to delete.

type Service

Type describing a service.

A service is directly mapped to the usage key, the collected service.

Data samples:

Json
{
    "name": "compute",
    "service_id": "a733d0e1-1ec9-4800-8df8-671e4affd017"
}
XML
b'<value>\n  <service_id>a733d0e1-1ec9-4800-8df8-671e4affd017</service_id>\n  <name>compute</name>\n</value>'
name

Name of the service.

service_id

UUID of the service.

type ServiceCollection

Type describing a list of services.

Data samples:

Json
{
    "services": [
        {
            "name": "compute",
            "service_id": "a733d0e1-1ec9-4800-8df8-671e4affd017"
        }
    ]
}
XML
b'<value>\n  <services>\n    <item>\n      <service_id>a733d0e1-1ec9-4800-8df8-671e4affd017</service_id>\n      <name>compute</name>\n    </item>\n  </services>\n</value>'
services

List of services.

GET /v1/rating/module_config/hashmap/fields

Get the field list.

Parameters:
  • service_id (uuid) – Service’s UUID to filter on.

Return:

List of every fields.

Return type:

FieldCollection

GET /v1/rating/module_config/hashmap/fields/(field_id)

Return a field.

Parameters:
  • field_id (uuid) – UUID of the field to filter on.

Return type:

Field

POST /v1/rating/module_config/hashmap/fields

Create a field.

Parameters:
  • field_data (Field) – Informations about the field to create.

Return type:

Field

DELETE /v1/rating/module_config/hashmap/fields

Delete the field and all the sub keys recursively.

Parameters:
  • field_id (uuid) – UUID of the field to delete.

type Field

Type describing a field.

A field is mapping a value of the ‘desc’ dict of the CloudKitty data. It’s used to map the name of a metadata.

Data samples:

Json
{
    "field_id": "ac55b000-a05b-4832-b2ff-265a034886ab",
    "name": "image_id",
    "service_id": "a733d0e1-1ec9-4800-8df8-671e4affd017"
}
XML
b'<value>\n  <field_id>ac55b000-a05b-4832-b2ff-265a034886ab</field_id>\n  <name>image_id</name>\n  <service_id>a733d0e1-1ec9-4800-8df8-671e4affd017</service_id>\n</value>'
field_id

UUID of the field.

name

Name of the field.

service_id

UUID of the parent service.

type FieldCollection

Type describing a list of fields.

Data samples:

Json
{
    "fields": [
        {
            "field_id": "ac55b000-a05b-4832-b2ff-265a034886ab",
            "name": "image_id",
            "service_id": "a733d0e1-1ec9-4800-8df8-671e4affd017"
        }
    ]
}
XML
b'<value>\n  <fields>\n    <item>\n      <field_id>ac55b000-a05b-4832-b2ff-265a034886ab</field_id>\n      <name>image_id</name>\n      <service_id>a733d0e1-1ec9-4800-8df8-671e4affd017</service_id>\n    </item>\n  </fields>\n</value>'
fields

List of fields.

GET /v1/rating/module_config/hashmap/mappings

Get the mapping list

Parameters:
  • service_id (uuid) – Service UUID to filter on.

  • field_id (uuid) – Field UUID to filter on.

  • group_id (uuid) – Group UUID to filter on.

  • no_group (bool) – Filter on orphaned mappings.

  • tenant_id (uuid) – Tenant UUID to filter on.

  • filter_tenant (bool) – Explicitly filter on tenant (default is to not filter on tenant). Useful if you want to filter on tenant being None.

Return:

List of every mappings.

Return type:

MappingCollection

GET /v1/rating/module_config/hashmap/mappings/(mapping_id)

Return a mapping.

Parameters:
  • mapping_id (uuid) – UUID of the mapping to filter on.

Return type:

Mapping

POST /v1/rating/module_config/hashmap/mappings

Create a mapping.

Parameters:
  • mapping_data (Mapping) – Informations about the mapping to create.

Return type:

Mapping

PUT /v1/rating/module_config/hashmap/mappings

Update a mapping.

Parameters:
  • mapping_id (uuid) – UUID of the mapping to update.

  • mapping (Mapping) – Mapping data to insert.

DELETE /v1/rating/module_config/hashmap/mappings

Delete a mapping.

Parameters:
  • mapping_id (uuid) – UUID of the mapping to delete.

GET /v1/rating/module_config/hashmap/mappings/group

Get the group attached to the mapping.

Parameters:
  • mapping_id (uuid) – UUID of the mapping to filter on.

Return type:

Group

type Mapping

Type describing a Mapping.

A mapping is used to apply rating rules based on a value, if the parent is a field then it’s check the value of a metadata. If it’s a service then it directly apply the rate to the volume.

Data samples:

Json
{
    "cost": "4.2",
    "field_id": "ac55b000-a05b-4832-b2ff-265a034886ab",
    "mapping_id": "39dbd39d-f663-4444-a795-fb19d81af136",
    "tenant_id": "7977999e-2e25-11e6-a8b2-df30b233ffcb",
    "type": "flat",
    "value": "m1.micro"
}
XML
b'<value>\n  <mapping_id>39dbd39d-f663-4444-a795-fb19d81af136</mapping_id>\n  <value>m1.micro</value>\n  <type>flat</type>\n  <cost>4.2</cost>\n  <field_id>ac55b000-a05b-4832-b2ff-265a034886ab</field_id>\n  <tenant_id>7977999e-2e25-11e6-a8b2-df30b233ffcb</tenant_id>\n</value>'
cost

Value of the mapping.

field_id

UUID of the field.

group_id

UUID of the hashmap group.

map_type

Type of the mapping.

mapping_id

UUID of the mapping.

service_id

UUID of the service.

tenant_id

ID of the hashmap tenant.

value

Key of the mapping.

type MappingCollection

Type describing a list of mappings.

Data samples:

Json
{
    "mappings": [
        {
            "cost": "4.2",
            "field_id": "ac55b000-a05b-4832-b2ff-265a034886ab",
            "mapping_id": "39dbd39d-f663-4444-a795-fb19d81af136",
            "tenant_id": "7977999e-2e25-11e6-a8b2-df30b233ffcb",
            "type": "flat",
            "value": "m1.micro"
        }
    ]
}
XML
b'<value>\n  <mappings>\n    <item>\n      <mapping_id>39dbd39d-f663-4444-a795-fb19d81af136</mapping_id>\n      <value>m1.micro</value>\n      <type>flat</type>\n      <cost>4.2</cost>\n      <field_id>ac55b000-a05b-4832-b2ff-265a034886ab</field_id>\n      <tenant_id>7977999e-2e25-11e6-a8b2-df30b233ffcb</tenant_id>\n    </item>\n  </mappings>\n</value>'
mappings

List of mappings.

type Threshold

Type describing a Threshold.

A threshold is used to apply rating rules based on a level, if the parent is a field then the level is checked against a metadata. If it’s a service then it’s the quantity of the resource that is checked.

Data samples:

Json
{
    "cost": "4.2",
    "field_id": "ac55b000-a05b-4832-b2ff-265a034886ab",
    "level": "1024",
    "tenant_id": "7977999e-2e25-11e6-a8b2-df30b233ffcb",
    "threshold_id": "39dbd39d-f663-4444-a795-fb19d81af136",
    "type": "flat"
}
XML
b'<value>\n  <threshold_id>39dbd39d-f663-4444-a795-fb19d81af136</threshold_id>\n  <level>1024</level>\n  <type>flat</type>\n  <cost>4.2</cost>\n  <field_id>ac55b000-a05b-4832-b2ff-265a034886ab</field_id>\n  <tenant_id>7977999e-2e25-11e6-a8b2-df30b233ffcb</tenant_id>\n</value>'
cost

Value of the threshold.

field_id

UUID of the field.

group_id

UUID of the hashmap group.

level

Level of the threshold.

map_type

Type of the threshold.

service_id

UUID of the service.

tenant_id

ID of the hashmap tenant.

threshold_id

UUID of the threshold.

type ThresholdCollection

Type describing a list of mappings.

Data samples:

Json
{
    "thresholds": [
        {
            "cost": "4.2",
            "field_id": "ac55b000-a05b-4832-b2ff-265a034886ab",
            "level": "1024",
            "tenant_id": "7977999e-2e25-11e6-a8b2-df30b233ffcb",
            "threshold_id": "39dbd39d-f663-4444-a795-fb19d81af136",
            "type": "flat"
        }
    ]
}
XML
b'<value>\n  <thresholds>\n    <item>\n      <threshold_id>39dbd39d-f663-4444-a795-fb19d81af136</threshold_id>\n      <level>1024</level>\n      <type>flat</type>\n      <cost>4.2</cost>\n      <field_id>ac55b000-a05b-4832-b2ff-265a034886ab</field_id>\n      <tenant_id>7977999e-2e25-11e6-a8b2-df30b233ffcb</tenant_id>\n    </item>\n  </thresholds>\n</value>'
thresholds

List of thresholds.

GET /v1/rating/module_config/hashmap/groups

Get the group list

Return:

List of every group.

Return type:

GroupCollection

GET /v1/rating/module_config/hashmap/groups/(group_id)

Return a group.

Parameters:
  • group_id (uuid) – UUID of the group to filter on.

Return type:

Group

POST /v1/rating/module_config/hashmap/groups

Create a group.

Parameters:
  • group_data (Group) – Informations about the group to create.

Return type:

Group

DELETE /v1/rating/module_config/hashmap/groups

Delete a group.

Parameters:
  • group_id (uuid) – UUID of the group to delete.

  • recursive (bool) – Delete mappings recursively.

GET /v1/rating/module_config/hashmap/groups/mappings

Get the mappings attached to the group.

Parameters:
  • group_id (uuid) – UUID of the group to filter on.

Return type:

MappingCollection

GET /v1/rating/module_config/hashmap/groups/thresholds

Get the thresholds attached to the group.

Parameters:
  • group_id (uuid) – UUID of the group to filter on.

Return type:

ThresholdCollection

type Group

Type describing a group.

A group is used to divide calculations. It can be used to create a group for the instance rating (flavor) and one if we have premium images (image_id). So you can take into account multiple parameters during the rating.

Data samples:

Json
{
    "group_id": "afe898cb-86d8-4557-ad67-f4f01891bbee",
    "name": "instance_rating"
}
XML
b'<value>\n  <group_id>afe898cb-86d8-4557-ad67-f4f01891bbee</group_id>\n  <name>instance_rating</name>\n</value>'
group_id

UUID of the group.

name

Name of the group.

type GroupCollection

Type describing a list of groups.

Data samples:

Json
{
    "groups": [
        {
            "group_id": "afe898cb-86d8-4557-ad67-f4f01891bbee",
            "name": "instance_rating"
        }
    ]
}
XML
b'<value>\n  <groups>\n    <item>\n      <group_id>afe898cb-86d8-4557-ad67-f4f01891bbee</group_id>\n      <name>instance_rating</name>\n    </item>\n  </groups>\n</value>'
groups

List of groups.