设为首页 收藏本站
查看: 1147|回复: 0

[经验分享] 自由虚拟机在openstack平台的托管

[复制链接]

尚未签到

发表于 2015-10-11 11:50:55 | 显示全部楼层 |阅读模式
  https://github.com/halfss/kvm2openstack/blob/master/kvm2openstack.py
  


  #!/usr/bin/env python
#coding=utf8

import libvirt
import MySQLdb
import libvirt,os,sys
from xml.etree import ElementTree

openstack_db_host='10.0.0.51'
openstack_db_user='root'
openstack_db_pwd='mysql'
uri='qemu:///system'
conn=libvirt.open(None)
user_id='5f93f059173248f0b3058a906dc07a0a'
project_id='c5b0af91883d47298e20b421f353695d'
power_stata=0
vm_state='active'
task_state='NULL'
default_ephemeral_device='NULL'
eohemeral_gb='NULL'

def db_cmd(host=openstack_db_host,user=openstack_db_user,passwd=openstack_db_pwd,\
db="nova",sql="None",select=True):
conn=MySQLdb.connect(host=host,user=user,passwd=passwd,db=db,\
use_unicode=True,charset="utf8")
cursor=conn.cursor()
line=cursor.execute(sql)
if not select:
conn.commit()
conn.close()
return line
datas=cursor.fetchall()
conn.commit()
conn.close()
return datas

def get_devices(dom,path,devs):
tree=ElementTree.fromstring(dom.XMLDesc(0))
devices=[]
for target in tree.findall(path):
dev=target.get(devs)
if not dev in devices:
devices.append(dev)
return devices
def get_doms_id():
return conn.listDomainsID()

def get_doms_info():
for dom_id in get_doms_id():
dom=conn.lookupByID(dom_id)
print dom.name(),
if dom.name().startswith('instance'):
print 'OpenStack instance, pass'
continue
if dom.isActive:
power_state = 1
vm_state='active'
current_instance_id_sql='select max(id) from instances;'
instance_id=hex(db_cmd(sql=current_instance_id_sql)[0][0]+1)[2:-1]
instance_name='instance-'+'0'*(8-len(instance_id))+instance_id
print 'change instance %s to %s'  % (dom.name(),instance_name)
vcpus=dom.maxVcpus()
memory=dom.info()[2]/1024
hostname=display_name=dom.name()
launched_on = host = conn.getHostname()
instance_type_id=1
uuid=dom.UUIDString()
root_device_name='/dev/'+get_devices(dom,"devices/disk/target","dev")[0]
root_gb=dom.blockInfo(get_devices(dom,"devices/disk/target","dev")[0],0)[0]/1024/1024/1024
migrate_sql="insert into instances (created_at,updated_at,deleted,user_id,project_id,\
power_state,vm_state,memory_mb,vcpus,hostname,host,\
display_name,launched_on,instance_type_id,uuid,root_device_name,\
task_state,default_ephemeral_device,root_gb,ephemeral_gb) values \
(now(),now(),'%d','%s','%s',%d,'%s','%s','%s','%s','%s','%s',\
'%s','%d','%s','%s',%s,'%s','%s','%d')" % \
(0,user_id,project_id,1,vm_state,memory,vcpus,hostname,host,\
display_name,launched_on,6,uuid,root_device_name,'NULL','NULL',root_gb,0)
db_cmd(sql=migrate_sql)
tree=ElementTree.fromstring(dom.XMLDesc(0))
tree[0].text=instance_name
tree=ElementTree.ElementTree(tree)
tree.write('/tmp/%s.xml' % instance_name ,encoding='utf-8')
print "virsh undefine %s" % dom.name()
dom.undefine()
print "shut off the instance %s" % dom.name()
dom.destroy()
conn.defineXML("".join(file('/tmp/%s.xml' % instance_name, 'r').readlines()))
print "restart the instance %s(%s)" % (instance_name,dom.name())
dom.create()
if __name__=='__main__':
get_doms_info()





版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125402-1-1.html 上篇帖子: 将OpenStack部署到Hadoop的四种方案 下篇帖子: 阅读Openstack源码的一些建议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表