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(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(): """ Prepare controller devices of VM XML according to params. """ if cntlr_type is None: type = 'pci' else: type = cntlr_type curcntlr = cntlr_cur while curcntlr < cntlr_num: ctrl = Controller(type_name=type) if cntlr_node: ctrl.node = cntlr_node if cntlr_model: 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 == 'pci-bridge': for i in range( 1, int(match_new_addr(addr_str[curcntlr])['bus'], 16) + 1): vm_xml.add_device(add_device('pci', str(i), 'pci-root')) ctrl.index = str( int(match_new_addr(addr_str[curcntlr])['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 == 'pci-bridge': ctrl.target = { 'chassisNr': str( int(match_new_addr(addr_str[curcntlr])['bus'], 16) + 1) } else: ctrl.target = {'index': str(curcntlr)} if addr_str is not None: for address in addr_str: ctrl.address = ctrl.new_controller_address( attrs=match_new_addr(address)) 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: ctrl.model = cntlr_model ctrl.index = spe_num ctrl.target = {'index': spe_num} if addr_str is not None and cntlr_model != 'pci-root': for address in addr_str: ctrl.address = ctrl.new_controller_address( attrs=match_new_addr(address)) logging.debug("Controller XML is:%s", ctrl) vm_xml.add_device(ctrl)