def action(networkid): from CloudscalerLibcloud.utils.network import Network import libvirt network = Network() try: con = network.libvirtutil.connection bridges = [] networkidHex = "%04x" % int(networkid) name = "routeros_%s" % networkidHex print("CLEANUP: %s/%s" % (networkid, networkidHex)) dom = None try: dom = con.lookupByName(name) network.cleanup_external(dom) network.cleanup_gwmgmt(dom) bridges = list(network.libvirtutil._get_domain_bridges(dom)) dom.destroy() except libvirt.libvirtError: pass if dom is not None: try: dom.undefine() except libvirt.libvirtError: pass network.libvirtutil.cleanupNetwork(networkid, bridges) finally: network.close() destinationfile = "/var/lib/libvirt/images/routeros/{:04x}/routeros.qcow2".format( networkid) if j.system.fs.exists(destinationfile): j.system.fs.remove(destinationfile)
def cleanup(name, networkid): import libvirt from CloudscalerLibcloud.utils.network import Network network = Network() con = network.libvirtutil.connection try: dom = con.lookupByName(name) network.cleanup_external(dom) network.cleanup_gwmgmt(dom) if dom.isActive(): dom.destroy() dom.undefine() except libvirt.libvirtError: pass try: network.libvirt.cleanupNetwork(networkid) except: network.close() destinationfile = "/var/lib/libvirt/images/routeros/{:04x}/routeros.qcow2".format( networkid) if j.system.fs.exists(destinationfile): j.system.fs.remove(destinationfile)
def action(fwobject): import os import libvirt from CloudscalerLibcloud.utils.network import Network, NetworkTool internalip = fwobject['host'] networkid = fwobject['id'] vlan = fwobject['vlan'] netinfo = [{ 'type': 'vlan', 'id': vlan }, { 'type': 'vxlan', 'id': networkid }] def protect_interfaces(network, domain): for publicip in fwobject['pubips']: network.protect_external(domain, publicip) network.protect_gwmgmt(domain, internalip) network = Network() con = network.libvirtutil.connection try: networkidHex = '%04x' % int(networkid) name = 'routeros_%s' % networkidHex try: domain = con.lookupByName(name) if domain.state()[0] == libvirt.VIR_DOMAIN_RUNNING: return True else: with NetworkTool(netinfo, network.libvirtutil): domain.create() protect_interfaces(network, domain) return True except: bridgename = j.system.ovsnetconfig.getVlanBridge(vlan) import jinja2 networkidHex = '%04x' % int(networkid) imagedir = j.system.fs.joinPaths(j.dirs.baseDir, 'apps/routeros/template/') xmltemplate = jinja2.Template( j.system.fs.fileGetContents( j.system.fs.joinPaths(imagedir, 'routeros-template.xml'))) destination = '/var/lib/libvirt/images/routeros/%s' % networkidHex destinationfile = os.path.join(destination, 'routeros.qcow2') xmlsource = xmltemplate.render(networkid=networkidHex, destinationfile=destinationfile, publicbridge=bridgename) with NetworkTool(netinfo, network.libvirtutil): dom = con.defineXML(xmlsource) dom.create() protect_interfaces(network, dom) return True finally: network.close() return True