存储后端 (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’}

static get_retention()[source]

返回配置中定义的保留期限。

返回类型:

datetime.timedelta

abstract init()[source]

在存储后端初始化时调用

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 (strlist) – 要筛选的指标类型。

  • 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 (strlist) – 要筛选的指标类型。

  • 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 部分注册一个条目,以对应您的存储后端。