def attach_interface(params): """Attach a interface to domain from xml""" logger = params['logger'] guestname = params['guestname'] macaddr = params['macaddr'] nicdriver = params['nicdriver'] xmlstr = params['xml'] conn = sharedmod.libvirtobj['conn'] domobj = conn.lookupByName(guestname) logger.debug("interface xml:\n%s" % xmlstr) iface_num1 = utils.dev_num(guestname, "interface") logger.debug("original interface number: %s" %iface_num1) # Attach interface to domain try: domobj.attachDeviceFlags(xmlstr, 0) iface_num2 = utils.dev_num(guestname, "interface") logger.debug("update interface number to %s" %iface_num2) if check_attach_interface(iface_num1, iface_num2): logger.info("current interface number: %s" %iface_num2) else: logger.error("fail to attach a interface to guest: %s" %iface_num2) return 1 except libvirtError, e: logger.error("API error message: %s, error code is %s" \ % (e.message, e.get_error_code())) logger.error("attach a interface to guest %s" % guestname) return 1
def detach_interface(params): """Detach a interface to domain from xml""" logger = params['logger'] guestname = params['guestname'] macaddr = params['macaddr'] nicdriver = params['nicdriver'] xmlstr = params['xml'] macs = utils.get_dom_mac_addr(guestname) mac_list = macs.split("\n") logger.debug("mac address: \n%s" % macs) conn = sharedmod.libvirtobj['conn'] domobj = conn.lookupByName(guestname) logger.debug("interface xml:\n%s" % xmlstr) iface_num1 = utils.dev_num(guestname, "interface") logger.debug("original interface number: %s" % iface_num1) try: domobj.detachDevice(xmlstr) iface_num2 = utils.dev_num(guestname, "interface") logger.debug("update interface number to %s" % iface_num2) if check_detach_interface(iface_num1, iface_num2): logger.info("current interface number: %s" % iface_num2) else: logger.error("fail to detach a interface to guest: %s" % iface_num2) return 1 except libvirtError, e: logger.error("API error message: %s, error code is %s" \ % (e.message, e.get_error_code())) logger.error("detach the interface from guest %s" % guestname) return 1
def attach_interface(params): """Attach a interface to domain from xml""" logger = params['logger'] guestname = params['guestname'] macaddr = params['macaddr'] nicdriver = params['nicdriver'] xmlstr = params['xml'] conn = sharedmod.libvirtobj['conn'] domobj = conn.lookupByName(guestname) logger.debug("interface xml:\n%s" % xmlstr) iface_num1 = utils.dev_num(guestname, "interface") logger.debug("original interface number: %s" % iface_num1) # Attach interface to domain try: domobj.attachDeviceFlags(xmlstr, 0) iface_num2 = utils.dev_num(guestname, "interface") logger.debug("update interface number to %s" % iface_num2) if check_attach_interface(iface_num1, iface_num2): logger.info("current interface number: %s" % iface_num2) else: logger.error("fail to attach a interface to guest: %s" % iface_num2) return 1 except libvirtError, e: logger.error("API error message: %s, error code is %s" \ % (e.message, e.get_error_code())) logger.error("attach a interface to guest %s" % guestname) return 1
def attach_disk(params): """Attach a disk to domain from xml""" logger = params['logger'] guestname = params['guestname'] imageformat = params['imageformat'] hddriver = params['hddriver'] xmlstr = params['xml'] imagesize = int(params.get('imagesize', 1)) diskpath = params.get('diskpath', '/var/lib/libvirt/images/attacheddisk') conn = sharedmod.libvirtobj['conn'] # Create image if create_image(diskpath, imagesize, imageformat, logger): logger.error("fail to create a image file") return 1 domobj = conn.lookupByName(guestname) if hddriver == 'virtio': xmlstr = xmlstr.replace('DEV', 'vdb') elif hddriver == 'ide': xmlstr = xmlstr.replace('DEV', 'hdb') elif hddriver == 'scsi': xmlstr = xmlstr.replace('DEV', 'sdb') logger.debug("disk xml:\n%s" % xmlstr) disk_num1 = utils.dev_num(guestname, "disk") logger.debug("original disk number: %s" % disk_num1) # Attach disk to domain try: domobj.attachDevice(xmlstr) disk_num2 = utils.dev_num(guestname, "disk") logger.debug("update disk number to %s" % disk_num2) if check_attach_disk(disk_num1, disk_num2): logger.info("current disk number: %s\n" % disk_num2) else: logger.error("fail to attach a disk to guest: %s\n" % disk_num2) return 1 except libvirtError as e: logger.error("API error message: %s, error code is %s" % (e.message, e.get_error_code())) logger.error("attach %s disk to guest %s" % (diskpath, guestname)) return 1 return 0
def detach_disk(params): """Detach a disk to domain from xml""" logger = params['logger'] guestname = params['guestname'] imageformat = params['imageformat'] hddriver = params['hddriver'] xmlstr = params['xml'] conn = sharedmod.libvirtobj['conn'] domobj = conn.lookupByName(guestname) if hddriver == 'virtio': xmlstr = xmlstr.replace('DEV', 'vdb') elif hddriver == 'ide': xmlstr = xmlstr.replace('DEV', 'hdb') elif hddriver == 'scsi': xmlstr = xmlstr.replace('DEV', 'sdb') logger.debug("disk xml:\n%s" % xmlstr) disk_num1 = utils.dev_num(guestname, "disk") logger.debug("original disk number: %s" % disk_num1) try: domobj.detachDevice(xmlstr) disk_num2 = utils.dev_num(guestname, "disk") logger.debug("update disk number to %s" % disk_num2) if check_detach_disk(disk_num1, disk_num2): logger.info("current disk number: %s\n" % disk_num2) else: logger.error("fail to detach a disk to guest: %s\n" % disk_num2) return 1 except libvirtError as e: logger.error("API error message: %s, error code is %s" % (e.message, e.get_error_code())) logger.error("detach disk from guest %s" % guestname) return 1 return 0
def detach_interface(params): """Detach a interface to domain from xml""" logger = params['logger'] guestname = params['guestname'] macaddr = params['macaddr'] nicdriver = params['nicdriver'] xmlstr = params['xml'] macs = utils.get_dom_mac_addr(guestname) mac_list = macs.split("\n") logger.debug("mac address: \n%s" % macs) conn = sharedmod.libvirtobj['conn'] domobj = conn.lookupByName(guestname) logger.debug("interface xml:\n%s" % xmlstr) iface_num1 = utils.dev_num(guestname, "interface") logger.debug("original interface number: %s" % iface_num1) try: domobj.detachDevice(xmlstr) iface_num2 = utils.dev_num(guestname, "interface") logger.debug("update interface number to %s" % iface_num2) if check_detach_interface(iface_num1, iface_num2): logger.info("current interface number: %s" % iface_num2) else: logger.error("fail to detach a interface to guest: %s" % iface_num2) return 1 except libvirtError as e: logger.error("API error message: %s, error code is %s" % (e.message, e.get_error_code())) logger.error("detach the interface from guest %s" % guestname) return 1 return 0