Fix error in delete_composednode
Cureently delete_composednode method doesn't work because it call a url like '/redfish/v1/Nodes101'. Change-Id: Ib2a961f3f97de028018ff8e5269f875eae329d01 Closes-Bug: #1652784
This commit is contained in:
parent
e32e99f254
commit
978dff9fbe
@ -328,10 +328,13 @@ def compose_node(request_body):
|
|||||||
|
|
||||||
def delete_composednode(nodeid):
|
def delete_composednode(nodeid):
|
||||||
nodes_url = get_base_resource_url("Nodes")
|
nodes_url = get_base_resource_url("Nodes")
|
||||||
delete_url = nodes_url + str(nodeid)
|
delete_url = nodes_url + '/' + str(nodeid)
|
||||||
resp = send_request(delete_url, "DELETE")
|
resp = send_request(delete_url, "DELETE")
|
||||||
if resp.status_code == http_client.NO_CONTENT:
|
if resp.status_code == http_client.NO_CONTENT:
|
||||||
return exception.confirmation("", "DELETED"), resp.status_code
|
# we should return 200 status code instead of 204, because 204 means
|
||||||
|
# 'No Content', the message in resp_dict will be ignored in that way
|
||||||
|
resp_dict = exception.confirmation(confirm_detail="DELETED")
|
||||||
|
return utils.make_response(http_client.OK, resp_dict)
|
||||||
else:
|
else:
|
||||||
raise exception.RedfishException(resp.json(),
|
raise exception.RedfishException(resp.json(),
|
||||||
status_code=resp.status_code)
|
status_code=resp.status_code)
|
||||||
|
@ -145,3 +145,21 @@ def fake_system_ethernet_interfaces():
|
|||||||
{"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces/2"}
|
{"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces/2"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def fake_delete_composednode_ok():
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def fake_delete_composednode_fail():
|
||||||
|
return {
|
||||||
|
"error": {
|
||||||
|
"code": "Base.1.0.UnknownException",
|
||||||
|
"message": "The specified node could not be disassembled",
|
||||||
|
"@Message.ExtendedInfo": [{
|
||||||
|
"Message": "Disassembly failed: Could not power off composed "
|
||||||
|
"node: ComputerSystem 33 reset action"
|
||||||
|
"(GracefulShutdown) failed"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -16,6 +16,7 @@ import mock
|
|||||||
from requests.compat import urljoin
|
from requests.compat import urljoin
|
||||||
from six.moves import http_client
|
from six.moves import http_client
|
||||||
|
|
||||||
|
from valence.common import exception
|
||||||
from valence import config as cfg
|
from valence import config as cfg
|
||||||
from valence.redfish import redfish
|
from valence.redfish import redfish
|
||||||
from valence.tests.unit.fakes import redfish_fakes as fakes
|
from valence.tests.unit.fakes import redfish_fakes as fakes
|
||||||
@ -184,3 +185,36 @@ class TestRedfish(TestCase):
|
|||||||
expected = '600'
|
expected = '600'
|
||||||
result = redfish.system_storage_details("/redfish/v1/Systems/test")
|
result = redfish.system_storage_details("/redfish/v1/Systems/test")
|
||||||
self.assertEqual(expected, result)
|
self.assertEqual(expected, result)
|
||||||
|
|
||||||
|
@mock.patch('valence.common.utils.make_response')
|
||||||
|
@mock.patch('valence.redfish.redfish.get_base_resource_url')
|
||||||
|
@mock.patch('valence.redfish.redfish.send_request')
|
||||||
|
def test_delete_composednode_ok(self, mock_request, mock_get_url,
|
||||||
|
mock_make_response):
|
||||||
|
mock_get_url.return_value = '/redfish/v1/Nodes'
|
||||||
|
delete_result = fakes.fake_delete_composednode_ok()
|
||||||
|
fake_delete_resopnse = fakes.mock_request_get(delete_result,
|
||||||
|
http_client.NO_CONTENT)
|
||||||
|
mock_request.return_value = fake_delete_resopnse
|
||||||
|
redfish.delete_composednode(101)
|
||||||
|
mock_request.assert_called_with('/redfish/v1/Nodes/101', 'DELETE')
|
||||||
|
expected_content = {
|
||||||
|
"code": "",
|
||||||
|
"detail": "DELETED",
|
||||||
|
"request_id": exception.FAKE_REQUEST_ID,
|
||||||
|
}
|
||||||
|
mock_make_response.assert_called_with(http_client.OK, expected_content)
|
||||||
|
|
||||||
|
@mock.patch('valence.common.utils.make_response')
|
||||||
|
@mock.patch('valence.redfish.redfish.get_base_resource_url')
|
||||||
|
@mock.patch('valence.redfish.redfish.send_request')
|
||||||
|
def test_delete_composednode_fail(self, mock_request, mock_get_url,
|
||||||
|
mock_make_response):
|
||||||
|
mock_get_url.return_value = '/redfish/v1/Nodes'
|
||||||
|
delete_result = fakes.fake_delete_composednode_fail()
|
||||||
|
fake_resp = fakes.mock_request_get(delete_result,
|
||||||
|
http_client.INTERNAL_SERVER_ERROR)
|
||||||
|
mock_request.return_value = fake_resp
|
||||||
|
self.assertRaises(exception.RedfishException,
|
||||||
|
redfish.delete_composednode, 101)
|
||||||
|
self.assertFalse(mock_make_response.called)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user