compute服务重启时清除多余的ovs桥
来源:互联网 发布:东风标致3008数据 编辑:程序博客网 时间:2024/05/22 04:33
/libvirt/driver.py
def init_host(self, host):
libvirt.registerErrorHandler(libvirt_error_handler, None)
libvirt.virEventRegisterDefaultImpl()
if not self.has_min_version(MIN_LIBVIRT_VERSION):
major = MIN_LIBVIRT_VERSION[0]
minor = MIN_LIBVIRT_VERSION[1]
micro = MIN_LIBVIRT_VERSION[2]
LOG.error(_('Nova requires libvirt version '
'%(major)i.%(minor)i.%(micro)i or greater.'),
{'major': major, 'minor': minor, 'micro': micro})
self._init_ovs_bridge()
self._init_events()
def _init_ovs_bridge(self):
try:
instance_names = self.list_instances()
except:
LOG.exception(_("Get libvirt instance list failed!"))
all_used_interfaces = []
interfaces = []
all_exist_qbrs = []
for name in instance_names:
try:
domain = self._lookup_by_name(name)
xml = domain.XMLDesc(0)
interfaces = self.get_interfaces(xml)
except:
LOG.exception(_("Get libvirt instance' interfaces failed!"))
all_used_interfaces += interfaces
try:
all_exist_qbrs = self.vif_driver.get_ovs_bridges()
except:
LOG.exception(_("Get ovs bridges failed!"))
all_exist_qbrs = [qbr[3:] for qbr in all_exist_qbrs]
all_used_interfaces = [interface[3:] for interface in all_used_interfaces]
redundancy_qbr = [val for val in all_exist_qbrs if val not in all_used_interfaces]
LOG.info(_("The qbr list %s will be deleted",redundancy_qbr))
try:
self.vif_driver.delete_ovs_bridges(redundancy_qbr)
except:
LOG.exception(_("Delete ovs redundancy bridge failed!"))
/libvirt/vif.py
def get_ovs_bridges(self):
cmd = 'ovs-vsctl show | grep qbr | grep -v Port | grep -v Interface | sed \'s/"/ /g\' | awk \'{print $2}\''
out, err = subprocess.Popen(cmd, shell = True, stdout = subprocess.PIPE).communicate()
return out.splitlines()
def delete_ovs_bridges(self,vifs):
for vif in vifs:
br_name = 'qbr' + vif
utils.execute('ovs-vsctl','--if-exists', 'del-br', br_name, run_as_root=True)
qvi_port = 'qvi' + vif
utils.execute('ovs-vsctl','--if-exists', 'del-port', qvi_port, run_as_root=True)
qvn_port = 'qvn' + vif
utils.execute('ovs-vsctl','--if-exists', 'del-port', qvn_port, run_as_root=True)
qvo_port = 'qvo' + vif
utils.execute('ovs-vsctl','--if-exists', 'del-port', qvo_port, run_as_root=True)
0 0
- compute服务重启时清除多余的ovs桥
- 清除多余的右键
- 清除多余的空格
- 清除多余的歌词文件
- 清除多余的环境变量的方法
- nova-compute服务down的原因总结
- 清除字符串中多余的分隔符
- 清除UITableView底部多余的分割线
- 清除Ubuntu12.04多余的引导菜单
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除UITableView底部多余的分割线
- 清除多余的COM端口号
- Android 四大组件之 Activity(2)--传值
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][有理数类]
- Nginx 配置文件详解
- 算法系列之十二:多边形区域填充算法--递归种子填充算法
- python中装饰器与元类的使用
- compute服务重启时清除多余的ovs桥
- 4、cas Server连接mysql
- 什么是位、字节、字、KB、MB?
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][三部排序]
- C语言知识总结
- java jvm远程监控参数配置
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][错误票据]
- 我们到底为了什么钻研技术?
- 如何优雅地控制线程状态