def setup_controller_xml(): """ Prepare controller devices of VM XML according to params. """ if cntlr_type is None: type = 'pci' else: type = cntlr_type curcntlr = 0 while curcntlr < cntlr_num: ctrl = Controller(type_name=type) if cntlr_model is not None: ctrl.model = cntlr_model if cntlr_model == 'pci-bridge': ctrl.model_name = {'name': 'pci-bridge'} if cntlr_index is not None: ctrl.index = cntlr_index elif with_index: if cntlr_model is not None and cntlr_model == 'pci-bridge': for i in range(1, int(match_new_addr()['bus'], 16) + 1): vm_xml.add_device(add_device('pci', str(i), 'pci-root')) ctrl.index = str(int(match_new_addr()['bus'], 16) + 1) else: ctrl.index = str(curcntlr) if target_index is not None: ctrl.target = {'index': target_index} elif with_index: if cntlr_model is not None and cntlr_model == 'pci-bridge': ctrl.target = { 'chassisNr': str(int(match_new_addr()['bus'], 16) + 1) } else: ctrl.target = {'index': str(curcntlr)} if addr_str is not None: ctrl.address = ctrl.new_controller_address( attrs=match_new_addr()) logging.debug("Controller XML is:%s", ctrl) vm_xml.add_device(ctrl) curcntlr += 1 if special_num: spe_num = int(special_num) ctrl = Controller(type_name=type) if cntlr_model is not None: ctrl.model = cntlr_model ctrl.index = spe_num ctrl.target = {'index': spe_num} if addr_str is not None: ctrl.address = ctrl.new_controller_address( attrs=match_new_addr()) logging.debug("Controller XML is:%s", ctrl) vm_xml.add_device(ctrl)
def setup_controller(nic_num, controller_index, ctl_models): """ Create controllers bond to numa node in the guest xml :param nic_num: number of nic card bond to numa node :param controller_index: index num used to create controllers :param ctl_models: contoller topo for numa bond """ index = controller_index if nic_num == 2: ctl_models.append('pcie-switch-upstream-port') ctl_models.append('pcie-switch-downstream-port') ctl_models.append('pcie-switch-downstream-port') for i in range(index): controller = Controller("controller") controller.type = "pci" controller.index = i if i == 0: controller.model = 'pcie-root' else: controller.model = 'pcie-root-port' vmxml.add_device(controller) set_address = False for model in ctl_models: controller = Controller("controller") controller.type = "pci" controller.index = index controller.model = model if set_address or model == "pcie-switch-upstream-port": attrs = { 'type': 'pci', 'domain': '0', 'slot': '0', 'bus': index - 1, 'function': '0' } controller.address = controller.new_controller_address( **{"attrs": attrs}) logging.debug(controller) if controller.model == "pcie-expander-bus": controller.node = "0" controller.target = {'busNr': '100'} set_address = True else: set_address = False logging.debug(controller) vmxml.add_device(controller) index += 1 return index - 1
def setup_controller_xml(index, addr_target=None): """ Prepare controller devices of VM XML. :param index: The index of controller :param addr_target: The controller address """ ctrl = Controller(type_name=cntlr_type) if model: ctrl.model = model if pcihole: ctrl.pcihole64 = pcihole if vectors: ctrl.vectors = vectors if index: ctrl.index = index if chassisNr: ctrl.target = {'chassisNr': chassisNr} if model_name: ctrl.model_name = {'name': model_name} if addr_target: match = re.match( r"(?P<bus>[0-9]*):(?P<slot>[0-9a-f]*).(?P<function>[0-9])", addr_target) if match: addr_dict = match.groupdict() addr_dict['bus'] = hex(int(addr_dict['bus'], 16)) addr_dict['slot'] = hex(int(addr_dict['slot'], 16)) addr_dict['function'] = hex(int(addr_dict['function'], 16)) addr_dict['domain'] = '0x0000' ctrl.address = ctrl.new_controller_address(attrs=addr_dict) logging.debug("Controller XML is:%s", ctrl) vm_xml.add_device(ctrl) if cmpnn_cntlr_model is not None: for num in range(int(cmpnn_cntlr_num)): ctrl = Controller(type_name=cntlr_type) ctrl.model = cmpnn_cntlr_model + str(num + 1) ctrl.index = index logging.debug("Controller XML is:%s", ctrl) vm_xml.add_device(ctrl)
def setup_controller(nic_num, controller_index, ctl_models): """ Create controllers bond to numa node in the guest xml :param nic_num: number of nic card bond to numa node :param controller_index: index num used to create controllers :param ctl_models: contoller topo for numa bond """ index = controller_index if nic_num == 2: ctl_models.append('pcie-switch-upstream-port') ctl_models.append('pcie-switch-downstream-port') ctl_models.append('pcie-switch-downstream-port') for i in range(index): controller = Controller("controller") controller.type = "pci" controller.index = i if i == 0: controller.model = 'pcie-root' else: controller.model = 'pcie-root-port' vmxml.add_device(controller) set_address = False for model in ctl_models: controller = Controller("controller") controller.type = "pci" controller.index = index controller.model = model if set_address or model == "pcie-switch-upstream-port": attrs = {'type': 'pci', 'domain': '0', 'slot': '0', 'bus': index - 1, 'function': '0'} controller.address = controller.new_controller_address(**{"attrs": attrs}) logging.debug(controller) if controller.model == "pcie-expander-bus": controller.node = "0" controller.target = {'busNr': '100'} set_address = True else: set_address = False logging.debug(controller) vmxml.add_device(controller) index += 1 return index - 1