您的位置:首页 > 编程语言 > Python开发

python检测xen下虚拟机的状态

2016-03-23 00:00 651 查看
#!/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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: