)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"599cf8d57434a52e2862054634d9a5c7a1486644","unresolved":false,"context_lines":[{"line_number":20,"context_line":"the exception that was raised from _prep_block_device. Example:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  {\"message\": \"Build of instance 14a8bd27-b7ac-4ddf-a945-8ce949349365"},{"line_number":23,"context_line":"   aborted: Failure prepping block device. The maximum allowed number"},{"line_number":24,"context_line":"   of disk devices to attach to a single instance has been exceeded\","},{"line_number":25,"context_line":"   \"code\": 500, \"created\": \"2018-12-12T23:02:15Z\"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Closes-Bug: #1808248"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_0cb4cb83","line":25,"range":{"start_line":23,"start_character":43,"end_line":25,"end_character":50},"updated":"2018-12-13 02:59:21.000000000","message":"Some question for this particular sample, should we show 500 error to the user? And, is maximum of disk device to a single instance exceeded a 500 error?","commit_id":"6461e701f7038556ed94088a44990d061370d555"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"217edf8cae0016134780516dc7e829e80045458e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"the exception that was raised from _prep_block_device. Example:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  {\"message\": \"Build of instance 14a8bd27-b7ac-4ddf-a945-8ce949349365"},{"line_number":23,"context_line":"   aborted: Failure prepping block device. The maximum allowed number"},{"line_number":24,"context_line":"   of disk devices to attach to a single instance has been exceeded\","},{"line_number":25,"context_line":"   \"code\": 500, \"created\": \"2018-12-12T23:02:15Z\"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Closes-Bug: #1808248"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_9ef0ef62","line":25,"range":{"start_line":23,"start_character":43,"end_line":25,"end_character":50},"in_reply_to":"3f79a3b5_0cb4cb83","updated":"2018-12-13 17:24:49.000000000","message":"This is no change from the current situation (L15) where we are showing 500 to the user. This is just adding a little more information to what we are already doing.\n\nI\u0027m guessing the rationale here is that if anything prevented prep of the block device, it\u0027s an internal server error from nova-compute. The \"maximum devices\" is something new I\u0027m working on for an RFE and I ran into the lack of info in the instance.fault while working on it. It does cause failure to prep the block device, which is currently a 500 error, so AFAIK it would continue to be a 500.\n\nI think, whether or not we should show 500 while prepping block device could be a valid discussion, but a separate one from this change, IMHO.","commit_id":"6461e701f7038556ed94088a44990d061370d555"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61625bccfd04f882e31db127d7e0b64bcadb97b3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"   aborted: Failure prepping block device.\", \"code\": 500, \"created\":"},{"line_number":16,"context_line":"   \"2018-12-12T22:06:22Z\"}"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"In order to provide more information to the user about the failure"},{"line_number":19,"context_line":"during _prep_block_device, we can include the exception message from"},{"line_number":20,"context_line":"the exception that was raised from _prep_block_device. Example:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  {\"message\": \"Build of instance 14a8bd27-b7ac-4ddf-a945-8ce949349365"},{"line_number":23,"context_line":"   aborted: Failure prepping block device. The maximum allowed number"},{"line_number":24,"context_line":"   of disk devices to attach to a single instance has been exceeded\","},{"line_number":25,"context_line":"   \"code\": 500, \"created\": \"2018-12-12T23:02:15Z\"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Closes-Bug: #1808248"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bfdaf3ff_fa222f01","line":25,"range":{"start_line":18,"start_character":0,"end_line":25,"end_character":50},"updated":"2019-01-15 14:59:29.000000000","message":"My only hesitation with this is making sure we don\u0027t leak host-specific information to the user via the fault. The message here in this case seems OK enough, and another one we could commonly hit is boot from volume where nova creates the volume and hitting quota or timeout issues during that process waiting for the volume to be available to attach. I think in either of those cases it\u0027s likely OK to expose as well.\n\nChange I20a5e8e5e10dd505c1b24c208f919c6550e9d1a4 is a good example of trying to make this more serviceable to end users and operators by getting details in the fault message, which is done via the InvalidBDM exception being explicitly handled in _build_resources when raising BuildAbortException.","commit_id":"8f328c03b266b0d17da2f0e92ad319aa603c8e41"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61625bccfd04f882e31db127d7e0b64bcadb97b3","unresolved":false,"context_lines":[{"line_number":2317,"context_line":"                                                           network_info)"},{"line_number":2318,"context_line":"                self.driver.failed_spawn_cleanup(instance)"},{"line_number":2319,"context_line":"        except (exception.UnexpectedTaskStateError,"},{"line_number":2320,"context_line":"                exception.OverQuota, exception.InvalidBDM) as e:"},{"line_number":2321,"context_line":"            # Make sure the async call finishes"},{"line_number":2322,"context_line":"            if network_info is not None:"},{"line_number":2323,"context_line":"                network_info.wait(do_raise\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_da6c0b38","line":2320,"range":{"start_line":2320,"start_character":37,"end_line":2320,"end_character":57},"updated":"2019-01-15 14:59:29.000000000","message":"This is what I was mentioning from change I20a5e8e5e10dd505c1b24c208f919c6550e9d1a4 to get a more specific error message into the fault.","commit_id":"8f328c03b266b0d17da2f0e92ad319aa603c8e41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61625bccfd04f882e31db127d7e0b64bcadb97b3","unresolved":false,"context_lines":[{"line_number":2323,"context_line":"                network_info.wait(do_raise\u003dFalse)"},{"line_number":2324,"context_line":"                self.driver.clean_networks_preparation(instance, network_info)"},{"line_number":2325,"context_line":"            self.driver.failed_spawn_cleanup(instance)"},{"line_number":2326,"context_line":"            raise exception.BuildAbortException(instance_uuid\u003dinstance.uuid,"},{"line_number":2327,"context_line":"                    reason\u003de.format_message())"},{"line_number":2328,"context_line":"        except Exception as e:"},{"line_number":2329,"context_line":"            LOG.exception(\u0027Failure prepping block device\u0027,"},{"line_number":2330,"context_line":"                          instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_fa678f50","line":2327,"range":{"start_line":2326,"start_character":12,"end_line":2327,"end_character":46},"updated":"2019-01-15 14:59:29.000000000","message":"here","commit_id":"8f328c03b266b0d17da2f0e92ad319aa603c8e41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61625bccfd04f882e31db127d7e0b64bcadb97b3","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"                network_info.wait(do_raise\u003dFalse)"},{"line_number":2334,"context_line":"                self.driver.clean_networks_preparation(instance, network_info)"},{"line_number":2335,"context_line":"            self.driver.failed_spawn_cleanup(instance)"},{"line_number":2336,"context_line":"            msg \u003d _(\u0027Failure prepping block device. %s\u0027) % six.text_type(e)"},{"line_number":2337,"context_line":"            raise exception.BuildAbortException(instance_uuid\u003dinstance.uuid,"},{"line_number":2338,"context_line":"                    reason\u003dmsg)"},{"line_number":2339,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_5ac7bb13","line":2336,"updated":"2019-01-15 14:59:29.000000000","message":"nit: might be worthwhile adding a comment here to remind developers to avoid leaking any host-specific details in the fault message; that\u0027s the main concern I have with including any and all exception messages here which aren\u0027t handled explicitly above, but I might be over-thinking this.\n\nThe alternative to this would be raising InvalidBDM from _prep_block_device or a new exception type for the max devices and then handling it in the block above since then we have more or less a whitelist of exceptions we know are OK to include in the fault message.","commit_id":"8f328c03b266b0d17da2f0e92ad319aa603c8e41"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0733e3191e3250da5ab9a77ae6a78c5694b8ec4c","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"                network_info.wait(do_raise\u003dFalse)"},{"line_number":2334,"context_line":"                self.driver.clean_networks_preparation(instance, network_info)"},{"line_number":2335,"context_line":"            self.driver.failed_spawn_cleanup(instance)"},{"line_number":2336,"context_line":"            msg \u003d _(\u0027Failure prepping block device. %s\u0027) % six.text_type(e)"},{"line_number":2337,"context_line":"            raise exception.BuildAbortException(instance_uuid\u003dinstance.uuid,"},{"line_number":2338,"context_line":"                    reason\u003dmsg)"},{"line_number":2339,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_9477323b","line":2336,"in_reply_to":"bfdaf3ff_5ac7bb13","updated":"2019-01-15 18:33:45.000000000","message":"I think your concern is valid and agree the whitelist approach would be safer here. Thanks for showing the example. I\u0027m going to respin this.","commit_id":"8f328c03b266b0d17da2f0e92ad319aa603c8e41"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0983e044f7058b0289f646b1c4ccab162ac26358","unresolved":false,"context_lines":[{"line_number":6002,"context_line":"                pass"},{"line_number":6003,"context_line":"        except Exception as e:"},{"line_number":6004,"context_line":"            self.assertIsInstance(e, exception.BuildAbortException)"},{"line_number":6005,"context_line":"            expected \u003d (\u0027Build of instance %s aborted: Failure prepping block \u0027"},{"line_number":6006,"context_line":"                        \u0027device. oops!\u0027 % self.instance.uuid)"},{"line_number":6007,"context_line":"            self.assertEqual(expected, six.text_type(e))"},{"line_number":6008,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f460a2a1","line":6005,"updated":"2018-12-20 14:27:25.000000000","message":"What about just search for \u0027oops\u0027, something like self.assertTrue(\u0027oops\u0027 in six.test_type(e)) that\u0027s to avoid any fail is the tests for localization issues.","commit_id":"a19e109d85aa8f68aedf76ce61e69c02bbd19ecb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1643e18a99bb57e7a21316826017191e72350ce5","unresolved":false,"context_lines":[{"line_number":6002,"context_line":"                pass"},{"line_number":6003,"context_line":"        except Exception as e:"},{"line_number":6004,"context_line":"            self.assertIsInstance(e, exception.BuildAbortException)"},{"line_number":6005,"context_line":"            expected \u003d (\u0027Build of instance %s aborted: Failure prepping block \u0027"},{"line_number":6006,"context_line":"                        \u0027device. oops!\u0027 % self.instance.uuid)"},{"line_number":6007,"context_line":"            self.assertEqual(expected, six.text_type(e))"},{"line_number":6008,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_38f0db67","line":6005,"in_reply_to":"3f79a3b5_f460a2a1","updated":"2019-01-14 14:01:54.000000000","message":"\u003e What about just search for \u0027oops\u0027, something like self.assertTrue(\u0027oops\u0027\n \u003e in six.test_type(e)) that\u0027s to avoid any fail is the tests for\n \u003e localization issues.\n\nself.assertIn(\u0027oops\u0027, six.text_type(e))","commit_id":"a19e109d85aa8f68aedf76ce61e69c02bbd19ecb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a57ea7e8962e0d3ee40800279f7d2363a81993ee","unresolved":false,"context_lines":[{"line_number":6002,"context_line":"                pass"},{"line_number":6003,"context_line":"        except Exception as e:"},{"line_number":6004,"context_line":"            self.assertIsInstance(e, exception.BuildAbortException)"},{"line_number":6005,"context_line":"            expected \u003d (\u0027Build of instance %s aborted: Failure prepping block \u0027"},{"line_number":6006,"context_line":"                        \u0027device. oops!\u0027 % self.instance.uuid)"},{"line_number":6007,"context_line":"            self.assertEqual(expected, six.text_type(e))"},{"line_number":6008,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dfd5e7cf_a03a5be4","line":6005,"in_reply_to":"3f79a3b5_f460a2a1","updated":"2019-01-08 16:15:33.000000000","message":"Do we run unit test with localization?","commit_id":"a19e109d85aa8f68aedf76ce61e69c02bbd19ecb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"40194b4b3d63e229501deae8431a0ac32335156e","unresolved":false,"context_lines":[{"line_number":6002,"context_line":"                pass"},{"line_number":6003,"context_line":"        except Exception as e:"},{"line_number":6004,"context_line":"            self.assertIsInstance(e, exception.BuildAbortException)"},{"line_number":6005,"context_line":"            expected \u003d (\u0027Build of instance %s aborted: Failure prepping block \u0027"},{"line_number":6006,"context_line":"                        \u0027device. oops!\u0027 % self.instance.uuid)"},{"line_number":6007,"context_line":"            self.assertEqual(expected, six.text_type(e))"},{"line_number":6008,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_625a22f4","line":6005,"in_reply_to":"bfdaf3ff_38f0db67","updated":"2019-01-15 04:47:51.000000000","message":"Sure, will change this.","commit_id":"a19e109d85aa8f68aedf76ce61e69c02bbd19ecb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1643e18a99bb57e7a21316826017191e72350ce5","unresolved":false,"context_lines":[{"line_number":6002,"context_line":"                pass"},{"line_number":6003,"context_line":"        except Exception as e:"},{"line_number":6004,"context_line":"            self.assertIsInstance(e, exception.BuildAbortException)"},{"line_number":6005,"context_line":"            expected \u003d (\u0027Build of instance %s aborted: Failure prepping block \u0027"},{"line_number":6006,"context_line":"                        \u0027device. oops!\u0027 % self.instance.uuid)"},{"line_number":6007,"context_line":"            self.assertEqual(expected, six.text_type(e))"},{"line_number":6008,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_18ef1785","line":6005,"in_reply_to":"dfd5e7cf_a03a5be4","updated":"2019-01-14 14:01:54.000000000","message":"\u003e Do we run unit test with localization?\n\nAre you asking why six.text_type is used? It\u0027s just what we\u0027ve used everywhere in case of localization.","commit_id":"a19e109d85aa8f68aedf76ce61e69c02bbd19ecb"}]}
