#!/usr/bin/python import json import os import sys import hooking from ovirt_hosted_engine_setup import constants as ohostedcons BRCTL_SHOW = ['brctl', 'show'] OVS_IFACE_TO_BR = ['ovs-vsctl', 'iface-to-br', 'ovirtmgmt'] def ovs_device(domxml): #ifc_name = get_lsp_name() try: iface = domxml.getElementsByTagName('interface')[0] except IndexError: return # skip if not an interface source = iface.getElementsByTagName('source')[0] bridge = source.getAttribute('bridge') if bridge != 'ovirtmgmt': return type, bridge = _get_bridge() if type == 'legacy': return elif type == 'ovs': for child in iface.getElementsByTagName('virtualport'): iface.removeChild(child) virtualport = domxml.createElement('virtualport') virtualport.setAttribute('type', 'openvswitch') iface.appendChild(virtualport) #parameters = domxml.createElement('parameters') #parameters.setAttribute('interfaceid', ifc_name) #virtualport.appendChild(parameters) source.setAttribute('bridge', bridge) def _get_bridge(): retcode, out, err = hooking.execCmd(BRCTL_SHOW, sudo=True) if retcode == 0 and 'ovirtmgmt' in out: return 'legacy', '' retcode, out, err = hooking.execCmd(OVS_IFACE_TO_BR, sudo=True) if retcode == 0: return 'ovs', out[0] def main(): domxml = hooking.read_domxml() sys.stderr.write(domxml.toxml()) ovs_device(domxml) hooking.write_domxml(domxml) if __name__ == "__main__": main()