Also retry inspection on HTTP CONFLICT
The new implementation can return it when unable to lock the node. Other possible errors are 400 and 404 (should not be retried), as well as 5xx (already retried). Change-Id: I74c2f54a624dc47e8e2d1e67ae4c6a6078e01d2f
This commit is contained in:
parent
1e107bd625
commit
0010f5c11a
@ -13,6 +13,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from http import client as http_client
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
@ -165,7 +166,8 @@ def call_inspector(data, failures):
|
||||
else:
|
||||
break
|
||||
|
||||
if inspector_resp.status_code >= 500:
|
||||
if (inspector_resp.status_code >= 500
|
||||
or inspector_resp.status_code == http_client.CONFLICT):
|
||||
raise requests.exceptions.HTTPError(response=inspector_resp)
|
||||
|
||||
return inspector_resp
|
||||
|
@ -236,7 +236,7 @@ class TestCallInspector(base.IronicAgentTest):
|
||||
@mock.patch.object(inspector, '_RETRY_ATTEMPTS', 3)
|
||||
def test_inspector_retries_on_50X_error(self, mock_post):
|
||||
mock_post.side_effect = [mock.Mock(status_code=500),
|
||||
mock.Mock(status_code=501),
|
||||
mock.Mock(status_code=409),
|
||||
mock.Mock(status_code=502)]
|
||||
failures = utils.AccumulatedFailures()
|
||||
data = collections.OrderedDict(data=42)
|
||||
@ -247,15 +247,16 @@ class TestCallInspector(base.IronicAgentTest):
|
||||
|
||||
@mock.patch.object(inspector, '_RETRY_WAIT', 0.01)
|
||||
@mock.patch.object(inspector, '_RETRY_WAIT_MAX', 1)
|
||||
@mock.patch.object(inspector, '_RETRY_ATTEMPTS', 2)
|
||||
@mock.patch.object(inspector, '_RETRY_ATTEMPTS', 3)
|
||||
def test_inspector_retry_on_50X_and_succeed(self, mock_post):
|
||||
mock_post.side_effect = [mock.Mock(status_code=503),
|
||||
mock.Mock(status_code=409),
|
||||
mock.Mock(status_code=200)]
|
||||
|
||||
failures = utils.AccumulatedFailures()
|
||||
data = collections.OrderedDict(data=42)
|
||||
inspector.call_inspector(data, failures)
|
||||
self.assertEqual(2, mock_post.call_count)
|
||||
self.assertEqual(3, mock_post.call_count)
|
||||
mock_post.assert_called_with('url',
|
||||
cert=None, verify=True,
|
||||
data='{"data": 42, "error": null}',
|
||||
|
5
releasenotes/notes/inspection-409-69d5bd6c2a49d2ec.yaml
Normal file
5
releasenotes/notes/inspection-409-69d5bd6c2a49d2ec.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Inspection is now retried on HTTP 409 (conflict), which can be returned
|
||||
by the new implementation in Ironic.
|
Loading…
Reference in New Issue
Block a user