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
-
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
-
POST
/v1/rating/module_config/hashmap/services
¶ Create hashmap 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
-
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
-
POST
/v1/rating/module_config/hashmap/fields
¶ Create a 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
-
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
-
POST
/v1/rating/module_config/hashmap/mappings
¶ Create a 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
-
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
-
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
-
POST
/v1/rating/module_config/hashmap/groups
¶ Create a 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
-
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
-
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.