在ovrt python sdk脚本中更新VM状态

时间:2015-02-25 23:59:50

标签: python sdk

我正在尝试编写一个python脚本来查询ov中的VM的状态(我对python来说是全新的!)

这是我正在使用的测试脚本!

APIURL="https://..."
APIUSER="...@..."
APIPASS="..."
CAFILE="path"
LOGFILENAME="/tmp/shutdown_vms_dc.log"


logging.basicConfig(level=logging.DEBUG,
                format='%(asctime)s %(levelname)s %(message)s',
                filename=LOGFILENAME,
                filemode='w')
if __name__ == "__main__":
    try:
        api = API(url=APIURL,
          username=APIUSER,
          password=APIPASS,
          ca_file=CAFILE)
        print 'Connected to RHEVM API  %s Successfully' % APIURL
    logging.info ( 'Successfully Connected to %s' % APIURL)

    vmsList = api.vms.list()
    while True:
        print '###############################################'
            for i in vmsList:
                    if i.name != 'HostedEngine':
                            print i.name + ': '  + i.status.state
        time.sleep(10)

除了ex Ex ::         logging.debug('意外错误:%s'%ex)

问题是状态没有得到更新,它总是在第一次运行时打印。我关闭并使用ovirt的网络界面启动VM,没有任何变化......我缺少什么?

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

没关系,我错了...... 这条线 vmList=api.vms.list() 为您留下与您拨打电话时相关的静态数据。

所以,我通过调用在for循环中实现了我想要的东西: api.vms.get(i.name).status.state,其中i迭代首先获得的vmList!这就行了!