存储后端 (v2)¶
警告
此后端被认为是不稳定的,仅应用于上游开发。
为了实现 cloudkitty 的存储后端,您需要实现以下抽象类
- class cloudkitty.storage.v2.BaseStorage(*args, **kwargs)[source]¶
v2 存储对象的抽象类。
- abstract delete(begin=None, end=None, filters=None)[source]¶
删除给定时间段和筛选条件的所有数据。
- 参数:
begin (datetime) – 开始日期
end (datetime) – 结束日期
filters (dict) – 用于筛选的属性。例如:{‘flavor_id’: ‘42’}
- abstract push(dataframes, scope_id=None)[source]¶
将数据帧推送到存储后端
- 参数:
dataframes ([cloudkitty.dataframe.DataFrame]) – 数据帧列表
- abstract retrieve(begin=None, end=None, filters=None, metric_types=None, offset=0, limit=1000, paginate=True)[source]¶
返回以下字典
{ 'total': int, # total amount of measures found 'dataframes': list of dataframes, }
- 参数:
begin (datetime) – 开始日期
end (datetime) – 结束日期
filters (dict) – 用于筛选的属性。例如:{‘flavor_id’: ‘42’}
metric_types (str 或 list) – 要筛选的指标类型。
offset (int) – 分页偏移量
limit (int) – 要返回的最大元素数
paginate (bool) – 默认为 True。如果为 False,将返回所有找到的结果。
- 返回类型:
dict
- abstract total(groupby=None, begin=None, end=None, metric_types=None, filters=None, custom_fields=None, offset=0, limit=1000, paginate=True)[source]¶
返回给定 groupby 的分组总数。
- 参数:
groupby (list of strings) – 用于分组的属性。这些属性必须是给定指标类型在 metrics.yml 中的 ‘groupby’ 部分的一部分。要按指标类型分组,请将 ‘type’ 添加到 groupby 列表中。
begin (datetime) – 开始日期
end (datetime) – 结束日期
metric_types (str 或 list) – 要筛选的指标类型。
custom_fields – 希望添加到摘要报告中的自定义字段。每个驱动程序必须自行处理这些值。
filters (dict) – 用于筛选的属性。例如:{‘flavor_id’: ‘42’}
offset (int) – 分页偏移量
limit (int) – 要返回的最大元素数
paginate (bool) – 默认为 True。如果为 False,将返回所有找到的结果。
- 类型:
custom_fields: 字符串列表
- 返回类型:
dict
返回以下格式的字典
{ 'total': int, # total amount of results found 'results': list of results, }
每个结果的格式如下
{ 'begin': XXX, 'end': XXX, 'rate': XXX, 'groupby1': XXX, 'groupby2': XXX }
您还需要在 setup.cfg 文件中的 cloudkitty.storage.v2.backends 部分注册一个条目,以对应您的存储后端。