)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a248a38053b308b9f897192a64ca56b68e01915","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Try to find partition 3 times"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patchx may return 0 code in case of failure. Thus"},{"line_number":10,"context_line":"utils.execute could not detect failure and 2+ call attempts"},{"line_number":11,"context_line":"are note performed."},{"line_number":12,"context_line":"Proposed changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9f91af0f_dcffcea8","line":9,"range":{"start_line":9,"start_character":3,"end_line":9,"end_character":10},"updated":"2018-01-09 15:42:29.000000000","message":"s/patchx/partx/","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"d203d9e9c7ed07353e998b77a810d38086c54919","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Try to find partition 3 times"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patchx may return 0 code in case of failure. Thus"},{"line_number":10,"context_line":"utils.execute could not detect failure and 2+ call attempts"},{"line_number":11,"context_line":"are note performed."},{"line_number":12,"context_line":"Proposed changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f96bb07_458159c3","line":9,"range":{"start_line":9,"start_character":3,"end_line":9,"end_character":10},"in_reply_to":"9f91af0f_dcffcea8","updated":"2018-01-19 13:12:24.000000000","message":"Done","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"}],"ironic_python_agent/extensions/image.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c03c588ca3ca88a314beab3c0e9b134d91ef6064","unresolved":false,"context_lines":[{"line_number":40,"context_line":"              {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    try:"},{"line_number":43,"context_line":"        for i in range(3):"},{"line_number":44,"context_line":"            # Try to tell the kernel to re-read the partition table"},{"line_number":45,"context_line":"            try:"},{"line_number":46,"context_line":"                utils.execute(\u0027partx\u0027, \u0027-u\u0027, device)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_6131a00b","line":43,"updated":"2017-12-05 17:41:29.000000000","message":"let\u0027s make this value configurable please","commit_id":"9c7bde39c15209097d205216f8651cd5af8332b6"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"917fcd745fed896d38df890426a78986d4f212f2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"              {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    try:"},{"line_number":43,"context_line":"        for i in range(3):"},{"line_number":44,"context_line":"            # Try to tell the kernel to re-read the partition table"},{"line_number":45,"context_line":"            try:"},{"line_number":46,"context_line":"                utils.execute(\u0027partx\u0027, \u0027-u\u0027, device)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_52ed3923","line":43,"in_reply_to":"df87a7cf_6131a00b","updated":"2017-12-06 11:34:40.000000000","message":"Ok! I will do that. Could you suggest parameter name for it and \"time.sleep\" below. What is the most appropriate name for ironic point of view? Would you like me to put it in CONF?","commit_id":"9c7bde39c15209097d205216f8651cd5af8332b6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c03c588ca3ca88a314beab3c0e9b134d91ef6064","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    LOG.debug(\"Partition %(uuid)s found on device \""},{"line_number":65,"context_line":"                              \"%(dev)s\", {\u0027uuid\u0027: uuid, \u0027dev\u0027: device})"},{"line_number":66,"context_line":"                    return \u0027/dev/\u0027 + part.get(\u0027KNAME\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"            time.sleep(1)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            error_msg \u003d (\"No partition with UUID %(uuid)s found on \""}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_8134e4fc","line":67,"updated":"2017-12-05 17:41:29.000000000","message":"this needs LOG.debug about retrying","commit_id":"9c7bde39c15209097d205216f8651cd5af8332b6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c03c588ca3ca88a314beab3c0e9b134d91ef6064","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                              \"%(dev)s\", {\u0027uuid\u0027: uuid, \u0027dev\u0027: device})"},{"line_number":66,"context_line":"                    return \u0027/dev/\u0027 + part.get(\u0027KNAME\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"            time.sleep(1)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            error_msg \u003d (\"No partition with UUID %(uuid)s found on \""},{"line_number":71,"context_line":"                         \"device %(dev)s\" % {\u0027uuid\u0027: uuid, \u0027dev\u0027: device})"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_213b98eb","line":68,"updated":"2017-12-05 17:41:29.000000000","message":"let\u0027s make \"1\" configurable too","commit_id":"9c7bde39c15209097d205216f8651cd5af8332b6"},{"author":{"_account_id":6620,"name":"Abishek Subramanian","email":"absubram@cisco.com","username":"absubram"},"change_message_id":"2580c426ed8d9db06e97f3aeaba58b7ab613e33b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                    return \u0027/dev/\u0027 + part.get(\u0027KNAME\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            LOG.debug(\"No partition with UUID %(uuid)s found, \""},{"line_number":74,"context_line":"                      \"retrying ...\" % {\u0027uuid\u0027: uuid})"},{"line_number":75,"context_line":"            time.sleep(GET_PARTITION_WAIT_RETRY)"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            error_msg \u003d (\"No partition with UUID %(uuid)s found on \""}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_665ec346","line":74,"updated":"2017-12-14 02:29:29.000000000","message":"I think pep8 is complaining about the usage of \u0027%\u0027 here. Need to change it to \u0027,\u0027 like in the line before this.","commit_id":"d8f34584868044c123e145ca56fa27cafc07d70c"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"3ab93d5d66cc7045788481fa4a7b405abaf4ef3b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                    return \u0027/dev/\u0027 + part.get(\u0027KNAME\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            LOG.debug(\"No partition with UUID %(uuid)s found, \""},{"line_number":74,"context_line":"                      \"retrying ...\" % {\u0027uuid\u0027: uuid})"},{"line_number":75,"context_line":"            time.sleep(GET_PARTITION_WAIT_RETRY)"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            error_msg \u003d (\"No partition with UUID %(uuid)s found on \""}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_50e01197","line":74,"in_reply_to":"df87a7cf_665ec346","updated":"2017-12-14 08:46:30.000000000","message":"Done","commit_id":"d8f34584868044c123e145ca56fa27cafc07d70c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a248a38053b308b9f897192a64ca56b68e01915","unresolved":false,"context_lines":[{"line_number":36,"context_line":"# Time to wait before trying to get partition once again"},{"line_number":37,"context_line":"GET_PARTITION_WAIT_RETRY \u003d 1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"GET_PARTITION_ATTEMPTS \u003d 3"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _get_partition(device, uuid):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f91af0f_1ce8d6df","line":39,"updated":"2018-01-09 15:42:29.000000000","message":"I configurable via the config file or tftp command line parameters might be what is preferred, but I also think that can be a follow-up patch.","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"577f0a7f9b83a1680f6d79d6aaee6afd4c3a4cff","unresolved":false,"context_lines":[{"line_number":36,"context_line":"# Time to wait before trying to get partition once again"},{"line_number":37,"context_line":"GET_PARTITION_WAIT_RETRY \u003d 1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"GET_PARTITION_ATTEMPTS \u003d 3"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _get_partition(device, uuid):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f91af0f_da734e15","line":39,"in_reply_to":"9f91af0f_1ce8d6df","updated":"2018-01-09 16:59:47.000000000","message":"Ok.","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0939671bfb8f9655be499b8f7c40c1ed3ca76441","unresolved":false,"context_lines":[{"line_number":36,"context_line":"# Time to wait before trying to get partition once again"},{"line_number":37,"context_line":"GET_PARTITION_WAIT_RETRY \u003d 1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"GET_PARTITION_ATTEMPTS \u003d 3"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _get_partition(device, uuid):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f96bb07_b7091332","line":39,"in_reply_to":"9f91af0f_da734e15","updated":"2018-01-15 13:37:10.000000000","message":"s/I configurable/I think configurable/.  *hangs head in shame for not proof reading comments*","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"577f0a7f9b83a1680f6d79d6aaee6afd4c3a4cff","unresolved":false,"context_lines":[{"line_number":39,"context_line":"GET_PARTITION_ATTEMPTS \u003d 3"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _get_partition(device, uuid):"},{"line_number":43,"context_line":"    \"\"\"Find the partition of a given device.\"\"\""},{"line_number":44,"context_line":"    LOG.debug(\"Find the partition %(uuid)s on device %(dev)s\","},{"line_number":45,"context_line":"              {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f91af0f_da56ee2a","line":42,"updated":"2018-01-09 16:59:47.000000000","message":"By the way, would you like to make GET_PARTITION_ATTEMPTS to be  a third parameter of the function. \nI do not like that the whole (at least meaningful lines) function body is put inside for loop. What if turn it into recursion? ex: _get_partition will call itself for GET_PARTITION_ATTEMPTS attempts.","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0939671bfb8f9655be499b8f7c40c1ed3ca76441","unresolved":false,"context_lines":[{"line_number":39,"context_line":"GET_PARTITION_ATTEMPTS \u003d 3"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _get_partition(device, uuid):"},{"line_number":43,"context_line":"    \"\"\"Find the partition of a given device.\"\"\""},{"line_number":44,"context_line":"    LOG.debug(\"Find the partition %(uuid)s on device %(dev)s\","},{"line_number":45,"context_line":"              {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f96bb07_373503f8","line":42,"in_reply_to":"9f91af0f_da56ee2a","updated":"2018-01-15 13:37:10.000000000","message":"I like the idea, but I think we would need to see the code to know for sure.","commit_id":"fc6e2c0252657019a2de1fa021a3bbe1ce932a87"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"00df239b93104aa96a37a85b986b2caaa90c2d80","unresolved":false,"context_lines":[{"line_number":37,"context_line":"GET_PARTITION_WAIT_RETRY \u003d 1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _get_partition(device, uuid, attempts\u003d3):"},{"line_number":41,"context_line":"    \"\"\"Find the partition of a given device.\"\"\""},{"line_number":42,"context_line":"    LOG.debug(\"Find the partition %(uuid)s on device %(dev)s\","},{"line_number":43,"context_line":"              {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_24507d5e","line":40,"updated":"2018-01-23 11:07:40.000000000","message":"nit: I\u0027d prefer we use the retrying library instead..","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9198c26b201f09f760fcc16eaa2fe41abb904272","unresolved":false,"context_lines":[{"line_number":34,"context_line":"BIND_MOUNTS \u003d (\u0027/dev\u0027, \u0027/proc\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# Time to wait before trying to get partition once again"},{"line_number":37,"context_line":"GET_PARTITION_WAIT_RETRY \u003d 1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _get_partition(device, uuid, attempts\u003d3):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_445474ff","line":37,"updated":"2018-02-09 09:48:46.000000000","message":"I have a feeling that 1 second (3 seconds in total) can be too little. In any case, I\u0027d prefer to see both this value and \"3\" below to be configurable in https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/config.py similar to disk_wait_delay/disk_wait_attempts","commit_id":"24e1572637c28d1790e7f489c8efc3bf6b79f2f9"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"b68207e5583a0faebebbabef56cf9e8483bc5c56","unresolved":false,"context_lines":[{"line_number":34,"context_line":"BIND_MOUNTS \u003d (\u0027/dev\u0027, \u0027/proc\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# Time to wait before trying to get partition once again"},{"line_number":37,"context_line":"GET_PARTITION_WAIT_RETRY \u003d 1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _get_partition(device, uuid, attempts\u003d3):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_a543efae","line":37,"in_reply_to":"3fa0c359_445474ff","updated":"2018-02-09 14:18:53.000000000","message":"1 second because this is roughly a mode value in a range [0.02; 2] seconds used inside oslo.concurrency. \nhttps://github.com/openstack/oslo.concurrency/blob/master/oslo_concurrency/processutils.py#L463\n\nYes, maybe it is better to make it be configurable in config file.","commit_id":"24e1572637c28d1790e7f489c8efc3bf6b79f2f9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9198c26b201f09f760fcc16eaa2fe41abb904272","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            # NOTE(nfedotov): The partx may return 0 code in case of failure"},{"line_number":49,"context_line":"            # therefore \u0027attempts\u0027 parameter of \u0027utils.execute\u0027"},{"line_number":50,"context_line":"            # method is not set. utils.execute\u0027s retry mechanism"},{"line_number":51,"context_line":"            # may no detect failure."},{"line_number":52,"context_line":"            utils.execute(\u0027partx\u0027, \u0027-u\u0027, device)"},{"line_number":53,"context_line":"            utils.execute(\u0027udevadm\u0027, \u0027settle\u0027)"},{"line_number":54,"context_line":"        except processutils.ProcessExecutionError:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_e454a000","line":51,"updated":"2018-02-09 09:48:46.000000000","message":"\"will not detect the failure in this case.\"","commit_id":"24e1572637c28d1790e7f489c8efc3bf6b79f2f9"}],"ironic_python_agent/tests/unit/extensions/test_image.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"00df239b93104aa96a37a85b986b2caaa90c2d80","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from ironic_python_agent.tests.unit import base"},{"line_number":28,"context_line":"from ironic_python_agent import utils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@mock.patch.object(hardware, \u0027dispatch_to_managers\u0027, autospec\u003dTrue)"},{"line_number":32,"context_line":"@mock.patch.object(utils, \u0027execute\u0027, autospec\u003dTrue)"},{"line_number":33,"context_line":"@mock.patch.object(tempfile, \u0027mkdtemp\u0027, lambda *_: \u0027/tmp/fake-dir\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_445b4986","line":30,"updated":"2018-01-23 11:07:40.000000000","message":"I suspect you want to mock time.sleep here to prevent tests from taking longer\n\n @mock.patch(\u0027time.sleep\u0027, lambda _s: None)","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"f0504a563dd90cf19208a0a6e2df316e382d2c2f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from ironic_python_agent.tests.unit import base"},{"line_number":28,"context_line":"from ironic_python_agent import utils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@mock.patch.object(hardware, \u0027dispatch_to_managers\u0027, autospec\u003dTrue)"},{"line_number":32,"context_line":"@mock.patch.object(utils, \u0027execute\u0027, autospec\u003dTrue)"},{"line_number":33,"context_line":"@mock.patch.object(tempfile, \u0027mkdtemp\u0027, lambda *_: \u0027/tmp/fake-dir\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa0c359_8d608303","line":30,"in_reply_to":"7f96bb07_445b4986","updated":"2018-02-08 12:06:51.000000000","message":"Done","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"00df239b93104aa96a37a85b986b2caaa90c2d80","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        expected \u003d [mock.call(\u0027partx\u0027, \u0027-u\u0027, self.fake_dev),"},{"line_number":282,"context_line":"                    mock.call(\u0027udevadm\u0027, \u0027settle\u0027),"},{"line_number":283,"context_line":"                    mock.call(\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,TYPE\u0027, self.fake_dev)]"},{"line_number":284,"context_line":"        mock_execute.assert_has_calls(expected)"},{"line_number":285,"context_line":"        self.assertFalse(mock_dispatch.called)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def test__get_partition_command_fail(self, mock_execute,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_645e8577","line":284,"updated":"2018-01-23 11:07:40.000000000","message":"please make sure that everything in \"expected\" was called three times","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"f0504a563dd90cf19208a0a6e2df316e382d2c2f","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        expected \u003d [mock.call(\u0027partx\u0027, \u0027-u\u0027, self.fake_dev),"},{"line_number":282,"context_line":"                    mock.call(\u0027udevadm\u0027, \u0027settle\u0027),"},{"line_number":283,"context_line":"                    mock.call(\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,TYPE\u0027, self.fake_dev)]"},{"line_number":284,"context_line":"        mock_execute.assert_has_calls(expected)"},{"line_number":285,"context_line":"        self.assertFalse(mock_dispatch.called)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def test__get_partition_command_fail(self, mock_execute,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa0c359_ad721fe2","line":284,"in_reply_to":"7f96bb07_645e8577","updated":"2018-02-08 12:06:51.000000000","message":"Done","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"00df239b93104aa96a37a85b986b2caaa90c2d80","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        expected \u003d [mock.call(\u0027partx\u0027, \u0027-u\u0027, self.fake_dev),"},{"line_number":296,"context_line":"                    mock.call(\u0027udevadm\u0027, \u0027settle\u0027),"},{"line_number":297,"context_line":"                    mock.call(\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,TYPE\u0027, self.fake_dev)]"},{"line_number":298,"context_line":"        mock_execute.assert_has_calls(expected)"},{"line_number":299,"context_line":"        self.assertFalse(mock_dispatch.called)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_04554150","line":298,"updated":"2018-01-23 11:07:40.000000000","message":"ditto, we need to check that 3 attempts were made","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"f0504a563dd90cf19208a0a6e2df316e382d2c2f","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        expected \u003d [mock.call(\u0027partx\u0027, \u0027-u\u0027, self.fake_dev),"},{"line_number":296,"context_line":"                    mock.call(\u0027udevadm\u0027, \u0027settle\u0027),"},{"line_number":297,"context_line":"                    mock.call(\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,TYPE\u0027, self.fake_dev)]"},{"line_number":298,"context_line":"        mock_execute.assert_has_calls(expected)"},{"line_number":299,"context_line":"        self.assertFalse(mock_dispatch.called)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa0c359_8d7723d5","line":298,"in_reply_to":"7f96bb07_04554150","updated":"2018-02-08 12:06:51.000000000","message":"1 attempt here because the test simulates execution error ProcessExecutionError(\u0027boom\u0027)","commit_id":"322bd23462af7fc1dd4875d907a995fc4517b794"}],"releasenotes/notes/ignore-partx-return-code-60b45e2ec9e4b376.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9198c26b201f09f760fcc16eaa2fe41abb904272","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Ignores return code of the partx command while trying"},{"line_number":4,"context_line":"    to get partition path by UUID. Repeats calls until"},{"line_number":5,"context_line":"    partition is found or timeout exceeded."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa0c359_244fe86b","line":5,"updated":"2018-02-09 09:48:46.000000000","message":"I\u0027d reorder this to something like \"The ``image`` extension now tries to find a partition 3 times with 1 second delay before giving up.\" The note about the partx command is IMO too tied to the implementation details.","commit_id":"24e1572637c28d1790e7f489c8efc3bf6b79f2f9"},{"author":{"_account_id":8767,"name":"Nikolay Fedotov","email":"nfedotov@cisco.com","username":"nfedotov"},"change_message_id":"b68207e5583a0faebebbabef56cf9e8483bc5c56","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Ignores return code of the partx command while trying"},{"line_number":4,"context_line":"    to get partition path by UUID. Repeats calls until"},{"line_number":5,"context_line":"    partition is found or timeout exceeded."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa0c359_2586ffdc","line":5,"in_reply_to":"3fa0c359_244fe86b","updated":"2018-02-09 14:18:53.000000000","message":"Ok. That sounds more deployers friendly.","commit_id":"24e1572637c28d1790e7f489c8efc3bf6b79f2f9"}]}
