def _test_add_vnic(self, mock_mo, mock_handle, pxe=False): with task_manager.acquire(self.context, self.node.uuid, shared=False) as task: with mock_handle(task) as handle: first_mock = mock.MagicMock() second_mock = mock.MagicMock() mock_mo.side_effect = [first_mock, second_mock] mo = handle.get_imc_managedobject.return_value mo.__getitem__.return_value.Dn = "DN" handle.xml_query.return_value.error_code = None dn = "DN/host-eth-name" common.add_vnic(task, "name", "mac_address", 600, pxe) mock_mo.assert_any_call("adaptorEthGenProfile") mock_mo.assert_any_call("adaptorHostEthIf") first_mock.set_attr.assert_any_call("name", "name") first_mock.set_attr.assert_any_call("mtu", "1500") first_mock.set_attr.assert_any_call( "pxeBoot", "enabled" if pxe else "disabled") first_mock.set_attr.assert_any_call("Dn", dn) first_mock.set_attr.assert_any_call("mac", "mac_address") first_mock.set_attr.assert_any_call("uplinkPort", "1") second_mock.set_attr.assert_any_call("vlanMode", "ACCESS") second_mock.set_attr.assert_any_call("vlan", "600") second_mock.set_attr.assert_any_call("Dn", dn) handle.xml_query.assert_called_once_with( imcsdk.ImcCore.ExternalMethod.return_value, imcsdk.WriteXmlOption.DIRTY)
def _plug_provisioning(self, task, **kwargs): LOG.debug("Plugging the provisioning!") if task.node.power_state != states.POWER_ON: manager_utils.node_power_action(task, states.REBOOT) client = neutron._build_client(task.context.auth_token) port = client.create_port({ 'port': { "network_id": CONF.neutron.cleaning_network_uuid, "extra_dhcp_opts": pxe_utils.dhcp_options_for_instance(task), } }) name = port['port']['id'] network = client.show_network(port['port']['network_id']) seg_id = network['network']['provider:segmentation_id'] try: common.add_vnic( task, name, port['port']['mac_address'], seg_id, True) except imcsdk.ImcException: client.delete_port(name) raise new_port = objects.Port( task.context, node_id=task.node.id, address=port['port']['mac_address'], extra={"vif_port_id": port['port']['id'], "type": "deploy", "state": "ACTIVE"}) new_port.create() return port['port']['fixed_ips'][0]['ip_address']
def test_add_vnic_long_name(self, mock_mo, mock_handle): with task_manager.acquire(self.context, self.node.uuid, shared=False) as task: with mock_handle(task) as handle: mo = handle.get_imc_managedobject.return_value mo.__getitem__.return_value.Dn = "DN" handle.xml_query.return_value.error_code = None dn = "DN/host-eth-namenamenamenamenamenamenamenam" common.add_vnic( task, "namenamenamenamenamenamenamenamename", "mac_address", 600) mock_mo.return_value.set_attr.assert_any_call("Dn", dn)
def _plug_tenant_networks(self, task, **kwargs): ports = objects.Port.list_by_node_id(task.context, task.node.id) for port in ports: pargs = port['extra'] if pargs.get('type') == "tenant" and pargs['state'] == "DOWN": try: common.add_vnic( task, pargs['vif_port_id'], port['address'], pargs['seg_id'], pargs['pxe']) except imcsdk.ImcException: port.extra = {x: pargs[x] for x in pargs} port.extra['state'] = "ERROR" LOG.error("ADDING VNIC FAILED") else: port.extra = {x: pargs[x] for x in pargs} port.extra['state'] = "UP" LOG.info("ADDING VNIC SUCCESSFUL") port.save()