python检测xen下虚拟机的状态

#!/usr/bin/env python
# Copyright (c) 2006-2007 XenSource, Inc.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

# Take all running VMS, their resident_on hosts, permute them and migrate
# all VMS simultaneously. Repeat N times.

import sys, time

import XenAPI


def main(session):
    # Find a non-template VM object
    all = session.xenapi.VM.get_all()
    vms = []
    hosts = []
    name=[]
    for vm in all:
        record = session.xenapi.VM.get_record(vm)
        if not(record["is_a_template"]) and not(record["is_control_domain"]) and record["power_state"] == "Running":
            vms.append(vm)
            hosts.append(record["resident_on"])
            name.append(record['name_label'])
    if "666" in name:
    print ("666")
    if "665" in name:
    print ("665")
    if "667" in name:
    print ("667")  
    #print "Found %d suitable running VMs " % (len(vms))
    # use a rotation as a permutation
    #hosts = [hosts[-1]] + hosts[:(len(hosts)-1)]

    #tasks = []
    #for i in range(0, len(vms)):
    #    vm = vms[i]
    #    host = hosts[i]
     #   task = session.xenapi.Async.VM.pool_migrate(vm, host, { "live": "true" })
     #   tasks.append(task)
    #finished = False
    #records = {}
    #while not(finished):
       # finished = True
       # for task in tasks:
          #  record = session.xenapi.task.get_record(task)
           # records[task] = record
           # if record["status"] == "pending":
             #   finished = False
        #time.sleep(1)
    #allok = True
    #for task in tasks:
       # record = records[task]
       # if record["status"] <> "success":
           # allok = False
    #if not(allok):
       # print "One of the tasks didn't succeed at", time.strftime("%F:%HT%M:%SZ", time.gmtime())
        #idx = 0
        #for task in tasks:
            #record = records[task]
           # vm_name = session.xenapi.VM.get_name_label(vms[idx])
            #host_name = session.xenapi.host.get_name_label(hosts[idx])
            #print "%s : %12s %s -> %s [ status: %s; result = %s; error = %s ]" % (record["uuid"], record["name_label"], vm_name, host_name, record["status"], record["result"], repr(record["error_info"]))
            #idx = idx + 1
       # raise "Task failed"
    #else:
        #for task in tasks:
            #session.xenapi.task.destroy(task)


if __name__ == "__main__":
    #if len(sys.argv) <> 2:
      #  print "Usage:"
       # print sys.argv[0], " <url> <username> <password> <iterations>"
       # sys.exit(1)
    url = "***********“
    username = "*****"
    password = "*********"
   # iterations = int(sys.argv[1])
    # First acquire a valid session by logging in:
    session = XenAPI.Session(url)
    session.xenapi.login_with_password(username, password)
    main(session)
    session.xenapi.session.logout()

转载于:https://my.oschina.net/u/2532163/blog/646255

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值