如何通过python API在openstack中获取VM实例运行时间?

时间:2013-08-09 02:41:26

标签: python openstack-nova

我需要一个小的计费报告,用于在openstack停止后使用虚拟机中的虚拟机,到目前为止,我已经找到了从实例名称获取风味信息(vCPU,磁盘,内存)的方法。

我想知道VM现在的计算启动时间。

有没有什么好方法可以从openstack python API中获取它?

如果您也可以粘贴代码,那就太好了。

3 个答案:

答案 0 :(得分:1)

(我从china-openstack community得到答案,并在此处分享)

novaclient usage module中,list API可以提取所有实例(有效或已终止),详细信息是通过get API获取的,目前尚不清楚哪些信息是通过这个python文档公开。

幸运的是openstack api : os-simple-tenant-usage告诉数据结构,uptime就是我想要的。

 "tenant_usage": {
    "server_usages": [
        {
            ... (skipped)
            "uptime": 3600,
            "vcpus": 1
        }
    ],

openstack仪表板(至少是Folsom版本)也使用此API。

答案 1 :(得分:1)

我只是想检索服务器的正常运行时间。我指的是服务器启动时的实际正常运行时间,而不是自创建以来。

  • 我创建了一台新机器,机器正在运行,我得到了一些更新值;这很好地增加了
  • 然后我停止了机器并再次发出请求:响应正确报告“state”:“已停止”,但正常运行时间 attr。仍在增加。 ==>同样,在此扩展中,它不是正常运行时间,而是创建时间

请求 os-simple-tenant-usage 扩展(获取auth。令牌后): GET http://rdo:8774/v2/4e1900cf21924a098709c23480e157c0/os-simple-tenant-usage/4e1900cf21924a098709c23480e157c0(使用正确的租户ID)

响应(注意机器已停止且正常运行时间为非零值):

{
    "tenant_usage": {
        "total_memory_mb_usage": 0.000007111111111111112,
        "total_vcpus_usage": 1.388888888888889e-8,
        "start": "2014-02-25T14:20:19.660179",
        "tenant_id": "4e1900cf21924a098709c23480e157c0",
        "stop": "2014-02-25T14:20:19.660184",
        "server_usages": [
            {
                "instance_id": "ca4465a8-38ca-40de-b138-82efcc88c7cf",
                "uptime": 1199,
                "started_at": "2014-02-25T14:00:20.000000",
                "ended_at": null,
                "memory_mb": 512,
                "tenant_id": "4e1900cf21924a098709c23480e157c0",
                "state": "stopped",
                "hours": 1.388888888888889e-8,
                "vcpus": 1,
                "flavor": "m1.tiny",
                "local_gb": 1,
                "name": "m1"
            }
        ],
        "total_hours": 1.388888888888889e-8,
        "total_local_gb_usage": 1.388888888888889e-8
    }
}

因此,尽管名称正常运行时间,但自服务器创建以来时间

答案 2 :(得分:0)

为什么不使用metadata

  

也可以在发布时提供自定义服务器元数据。

创建时,您可以保存日期时间,然后在启动时可以计算差异。