def _check_completion_code(self, xml_response): try: et = ElementTree.fromstring(xml_response) except ElementTree.ParseError as ex: LOG.exception(_LE("XML parsing failed: %s"), ex) raise exception.MSFTOCSClientApiException( _("Invalid XML: %s") % xml_response) item = et.find("./n:completionCode", namespaces={'n': WCSNS}) if item is None or item.text != COMPLETION_CODE_SUCCESS: raise exception.MSFTOCSClientApiException( _("Operation failed: %s") % xml_response) return et
def test_reboot_fail(self, mock_gci): with task_manager.acquire(self.context, self.node.uuid, shared=False) as task: mock_c = mock.MagicMock(spec=msftocsclient.MSFTOCSClientApi) blade_id = task.node.driver_info['msftocs_blade_id'] mock_gci.return_value = (mock_c, blade_id) ex = exception.MSFTOCSClientApiException('x') mock_c.set_blade_power_cycle.side_effect = ex self.assertRaises(exception.PowerStateFailure, task.driver.power.reboot, task) mock_gci.assert_called_once_with(task.node.driver_info) mock_c.set_blade_power_cycle.assert_called_once_with(blade_id)
def _exec_cmd(self, rel_url): """Executes a command by calling the chassis manager API.""" url = posixpath.join(self._base_url, rel_url) try: response = requests.get(url, auth=auth.HTTPBasicAuth( self._username, self._password)) response.raise_for_status() except requests_exceptions.RequestException as ex: msg = _("HTTP call failed: %s") % ex LOG.exception(msg) raise exception.MSFTOCSClientApiException(msg) xml_response = response.text LOG.debug("Call to %(url)s got response: %(xml_response)s", { "url": url, "xml_response": xml_response }) return xml_response