)]}'
{"etc/nova/nova.conf.sample":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":2385,"context_line":"# The number of times to retry requesting data via WMI. (integer value)"},{"line_number":2386,"context_line":"#wmi_query_retry_count\u003d10"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"# Interval between attempted WMI queries. (integer value)"},{"line_number":2389,"context_line":"# #wmi_query_retry_interval\u003d5"},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"[zookeeper]"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAATn%2F%2FO30%3D","line":2388,"updated":"2013-11-12 14:43:56.000000000","message":"What\u0027s the time unit? Seconds?","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":2386,"context_line":"#wmi_query_retry_count\u003d10"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"# Interval between attempted WMI queries. (integer value)"},{"line_number":2389,"context_line":"# #wmi_query_retry_interval\u003d5"},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"[zookeeper]"},{"line_number":2392,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAATn%2F%2FO4M%3D","line":2389,"updated":"2013-11-12 14:43:56.000000000","message":"Why the double # here?","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"}],"nova/tests/virt/hyperv/test_hypervapi.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"790eda85c39629cb499bbf8de756d0caac14f436","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from nova.virt.hyperv import utilsfactory"},{"line_number":58,"context_line":"from nova.virt.hyperv import vhdutils"},{"line_number":59,"context_line":"from nova.virt.hyperv import vhdutilsv2"},{"line_number":60,"context_line":"from nova.virt.hyperv import volumeops"},{"line_number":61,"context_line":"from nova.virt.hyperv import vmutils"},{"line_number":62,"context_line":"from nova.virt.hyperv import vmutilsv2"},{"line_number":63,"context_line":"from nova.virt.hyperv import volumeutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FRJU%3D","line":60,"updated":"2013-11-12 01:14:32.000000000","message":"nit: The alphabetical order is wrong, line 60 should go to line 63.","commit_id":"0c81469ae4afca8d6e19da678ac275e0a6efd702"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"75dab98286b22a2665c1b154aaddde6b4b257fd3","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from nova.virt.hyperv import utilsfactory"},{"line_number":58,"context_line":"from nova.virt.hyperv import vhdutils"},{"line_number":59,"context_line":"from nova.virt.hyperv import vhdutilsv2"},{"line_number":60,"context_line":"from nova.virt.hyperv import volumeops"},{"line_number":61,"context_line":"from nova.virt.hyperv import vmutils"},{"line_number":62,"context_line":"from nova.virt.hyperv import vmutilsv2"},{"line_number":63,"context_line":"from nova.virt.hyperv import volumeutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPCk%3D","line":60,"in_reply_to":"AAAATn%2F%2FRJU%3D","updated":"2013-11-12 16:15:19.000000000","message":"Done","commit_id":"0c81469ae4afca8d6e19da678ac275e0a6efd702"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        target_iqn \u003d data[\u0027target_iqn\u0027]"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        self._volumeops \u003d volumeops.VolumeOps()"},{"line_number":1357,"context_line":"        self._mox.ReplayAll()"},{"line_number":1358,"context_line":"        disk \u003d self._volumeops._get_mounted_disk_from_lun(target_iqn,"},{"line_number":1359,"context_line":"                                                          target_lun)"},{"line_number":1360,"context_line":"        self._mox.VerifyAll()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FO10%3D","line":1357,"updated":"2013-11-12 14:43:56.000000000","message":"New tests should be using mock over mox for python 3 support.","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        self._volumeops \u003d volumeops.VolumeOps()"},{"line_number":1357,"context_line":"        self._mox.ReplayAll()"},{"line_number":1358,"context_line":"        disk \u003d self._volumeops._get_mounted_disk_from_lun(target_iqn,"},{"line_number":1359,"context_line":"                                                          target_lun)"},{"line_number":1360,"context_line":"        self._mox.VerifyAll()"},{"line_number":1361,"context_line":"        self.stubs.UnsetAll()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FO1s%3D","line":1358,"updated":"2013-11-12 14:43:56.000000000","message":"Shouldn\u0027t you assert the disk variable against an expected value?","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":1377,"context_line":"        target_iqn \u003d data[\u0027target_iqn\u0027]"},{"line_number":1378,"context_line":""},{"line_number":1379,"context_line":"        self._volumeops \u003d volumeops.VolumeOps()"},{"line_number":1380,"context_line":"        self._mox.ReplayAll()"},{"line_number":1381,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":1382,"context_line":"                          self._volumeops._get_mounted_disk_from_lun,"},{"line_number":1383,"context_line":"                          target_iqn, target_lun)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FO1g%3D","line":1380,"updated":"2013-11-12 14:43:56.000000000","message":"Should be using mock for new tests.","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c6181e484c480484e23ed89f541ca36bb1d5ff","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import contextlib"},{"line_number":22,"context_line":"import io"},{"line_number":23,"context_line":"import mox"},{"line_number":24,"context_line":"import os"},{"line_number":25,"context_line":"import platform"},{"line_number":26,"context_line":"import shutil"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FMpA%3D","line":23,"updated":"2013-11-13 03:05:32.000000000","message":"Not part of your patch, but this is a 3rd party lib so it should got into the second group, just note to self.","commit_id":"5da48117558684ef60acb28a849811d3bba875ed"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c6181e484c480484e23ed89f541ca36bb1d5ff","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                                                             target_lun)"},{"line_number":1662,"context_line":"            self.assertEqual(disk, \u0027disk_path\u0027)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_get_mounted_disk_from_lun_failure(self):"},{"line_number":1665,"context_line":"        with mock.patch.object(self.volumeops._volutils,"},{"line_number":1666,"context_line":"                               \u0027get_device_number_for_target\u0027) as m_device_num:"},{"line_number":1667,"context_line":"            m_device_num.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FMoA%3D","line":1664,"updated":"2013-11-13 03:05:32.000000000","message":"How long does this test case take to run? Unless I\u0027m missing something, it\u0027s going to retry 10 times and sleep 5 seconds, so is it taking 50 seconds before it exits the retry loop and raises the NotFound?  We should override wmi_query_retry_interval for the test to be in milliseconds and maybe change the retry count to 2 so we know it loops at least once.","commit_id":"5da48117558684ef60acb28a849811d3bba875ed"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46b5f2038e65996afeab0071da9d13bd7d63d545","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                                                             target_lun)"},{"line_number":1662,"context_line":"            self.assertEqual(disk, \u0027disk_path\u0027)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_get_mounted_disk_from_lun_failure(self):"},{"line_number":1665,"context_line":"        with mock.patch.object(self.volumeops._volutils,"},{"line_number":1666,"context_line":"                               \u0027get_device_number_for_target\u0027) as m_device_num:"},{"line_number":1667,"context_line":"            m_device_num.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FJJU%3D","line":1664,"in_reply_to":"AAAATn%2F%2FJQs%3D","updated":"2013-11-13 21:26:41.000000000","message":"Ah, OK, I didn\u0027t know they were stubbing out time.sleep, tricky.  And since this test class extends the parent test class that is calling _setup_stubs as part of it\u0027s setup, you get the time.sleep stub to just pass and there is no time impact.  Gotcha.","commit_id":"5da48117558684ef60acb28a849811d3bba875ed"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"28cedfdc534542c221cb649749e15ebe5728283a","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                                                             target_lun)"},{"line_number":1662,"context_line":"            self.assertEqual(disk, \u0027disk_path\u0027)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_get_mounted_disk_from_lun_failure(self):"},{"line_number":1665,"context_line":"        with mock.patch.object(self.volumeops._volutils,"},{"line_number":1666,"context_line":"                               \u0027get_device_number_for_target\u0027) as m_device_num:"},{"line_number":1667,"context_line":"            m_device_num.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FJQs%3D","line":1664,"in_reply_to":"AAAATn%2F%2FMoA%3D","updated":"2013-11-13 20:56:25.000000000","message":"Matt, the test case runs very quickly.  Made me concerned that it wasn\u0027t actually iterating but I instrumented the code and can see that it is going through 10 iterations.  I believe this is because sleep is stubbed out in setUp at the top of the file.  So, I don\u0027t think there are additional changes here.  I would have already investigated something else if this were taking 50 seconds to run.  :-)","commit_id":"5da48117558684ef60acb28a849811d3bba875ed"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"350b9e59a606192d5891370d8b4507218d4bb3b9","unresolved":false,"context_lines":[{"line_number":1637,"context_line":"        super(VolumeOpsTestCase, self).setUp()"},{"line_number":1638,"context_line":"        self.volumeops \u003d volumeops.VolumeOps()"},{"line_number":1639,"context_line":""},{"line_number":1640,"context_line":"    def test_get_mounted_disk_from_lun(self):"},{"line_number":1641,"context_line":"        with contextlib.nested("},{"line_number":1642,"context_line":"            mock.patch.object(self.volumeops._volutils,"},{"line_number":1643,"context_line":"                              \u0027get_device_number_for_target\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHKg%3D","line":1640,"updated":"2013-11-14 09:55:23.000000000","message":"This test is in the wrong place. We test *utils classes here, not *ops","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"83ff2004ba9a3e3ee27f9b6163ed1096b388b650","unresolved":false,"context_lines":[{"line_number":1637,"context_line":"        super(VolumeOpsTestCase, self).setUp()"},{"line_number":1638,"context_line":"        self.volumeops \u003d volumeops.VolumeOps()"},{"line_number":1639,"context_line":""},{"line_number":1640,"context_line":"    def test_get_mounted_disk_from_lun(self):"},{"line_number":1641,"context_line":"        with contextlib.nested("},{"line_number":1642,"context_line":"            mock.patch.object(self.volumeops._volutils,"},{"line_number":1643,"context_line":"                              \u0027get_device_number_for_target\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHI4%3D","line":1640,"in_reply_to":"AAAATn%2F%2FHKg%3D","updated":"2013-11-14 09:58:46.000000000","message":"Sorry, please ignore the previous comment. The test is ok.","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"350b9e59a606192d5891370d8b4507218d4bb3b9","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                                                             target_lun)"},{"line_number":1662,"context_line":"            self.assertEqual(disk, \u0027disk_path\u0027)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_get_mounted_disk_from_lun_failure(self):"},{"line_number":1665,"context_line":"        with mock.patch.object(self.volumeops._volutils,"},{"line_number":1666,"context_line":"                               \u0027get_device_number_for_target\u0027) as m_device_num:"},{"line_number":1667,"context_line":"            m_device_num.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHKU%3D","line":1664,"updated":"2013-11-14 09:55:23.000000000","message":"Ditto.","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"83ff2004ba9a3e3ee27f9b6163ed1096b388b650","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                                                             target_lun)"},{"line_number":1662,"context_line":"            self.assertEqual(disk, \u0027disk_path\u0027)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def test_get_mounted_disk_from_lun_failure(self):"},{"line_number":1665,"context_line":"        with mock.patch.object(self.volumeops._volutils,"},{"line_number":1666,"context_line":"                               \u0027get_device_number_for_target\u0027) as m_device_num:"},{"line_number":1667,"context_line":"            m_device_num.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHIo%3D","line":1664,"in_reply_to":"AAAATn%2F%2FHKU%3D","updated":"2013-11-14 09:58:46.000000000","message":"Please ignore this one as well.","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"}],"nova/virt/hyperv/basevolumeutils.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d95875725f9990127cf90e5f17d6317295601407","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        devices \u003d initiator_sessions[0].Devices"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if not devices:"},{"line_number":132,"context_line":"            return None"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        for device in devices:"},{"line_number":135,"context_line":"            if device.ScsiLun \u003d\u003d target_lun:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F8tLo%3D","line":132,"updated":"2013-12-22 09:05:57.000000000","message":"by default None is returned you do not need to specifically state None","commit_id":"5e849362b6b6be13d9252894647c4c2ec1dd0f8b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1f0176ef140eff57f9b926393129a612a5353378","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        devices \u003d initiator_sessions[0].Devices"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if not devices:"},{"line_number":132,"context_line":"            return None"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        for device in devices:"},{"line_number":135,"context_line":"            if device.ScsiLun \u003d\u003d target_lun:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2FlIs%3D","line":132,"in_reply_to":"AAAATn%2F8tCE%3D","updated":"2014-01-10 20:05:27.000000000","message":"Yeah, my general rule is, if any code path in a function returns a non-None value, I like to see explicit values in all returns…","commit_id":"5e849362b6b6be13d9252894647c4c2ec1dd0f8b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2893dccdfaa1fbbd041a7574178b440796a986fe","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        devices \u003d initiator_sessions[0].Devices"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if not devices:"},{"line_number":132,"context_line":"            return None"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        for device in devices:"},{"line_number":135,"context_line":"            if device.ScsiLun \u003d\u003d target_lun:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F8tCE%3D","line":132,"in_reply_to":"AAAATn%2F8tLo%3D","updated":"2013-12-22 13:41:22.000000000","message":"Meh, note the existing code already returns None if initiator_sessions does not evaluate to True, so I\u0027d leave this for consistency.","commit_id":"5e849362b6b6be13d9252894647c4c2ec1dd0f8b"}],"nova/virt/hyperv/volumeops.py":[{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"8a19cd63580918a94a9fe127003f1860c43ef23d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        # The WMI query in get_device_number_for_target can incorrectly"},{"line_number":199,"context_line":"        # return no data when the system is under load.  This issue can"},{"line_number":200,"context_line":"        # be avoided by adding a retry."},{"line_number":201,"context_line":"        while device_number is None and retries \u003c 10:"},{"line_number":202,"context_line":"            device_number \u003d self._volutils.get_device_number_for_target("},{"line_number":203,"context_line":"                            target_iqn, target_lun)"},{"line_number":204,"context_line":"            if device_number is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FZvc%3D","line":201,"updated":"2013-11-07 06:21:05.000000000","message":"What\u0027s the justification of the number 10?  Has this been discovered experimentally, or is it a best guess?  Why shouldn\u0027t this number be 3 or 1000?\n\nShould the number of retries be specified in configuration rather than as a literal in the middle of the code?","commit_id":"c96db995122bfe38b34bbf3152866e74215695d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"df83970e1f85b66cc087dc966f80207d1d53b7f6","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        # The WMI query in get_device_number_for_target can incorrectly"},{"line_number":199,"context_line":"        # return no data when the system is under load.  This issue can"},{"line_number":200,"context_line":"        # be avoided by adding a retry."},{"line_number":201,"context_line":"        while device_number is None and retries \u003c 10:"},{"line_number":202,"context_line":"            device_number \u003d self._volutils.get_device_number_for_target("},{"line_number":203,"context_line":"                            target_iqn, target_lun)"},{"line_number":204,"context_line":"            if device_number is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FRas%3D","line":201,"in_reply_to":"AAAATn%2F%2FZvc%3D","updated":"2013-11-11 23:19:13.000000000","message":"Done","commit_id":"c96db995122bfe38b34bbf3152866e74215695d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"60b4ac69e954406a40d06a522b910943f0ba4fa8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        # The WMI query in get_device_number_for_target can incorrectly"},{"line_number":199,"context_line":"        # return no data when the system is under load.  This issue can"},{"line_number":200,"context_line":"        # be avoided by adding a retry."},{"line_number":201,"context_line":"        while device_number is None and retries \u003c 10:"},{"line_number":202,"context_line":"            device_number \u003d self._volutils.get_device_number_for_target("},{"line_number":203,"context_line":"                            target_iqn, target_lun)"},{"line_number":204,"context_line":"            if device_number is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FYvI%3D","line":201,"in_reply_to":"AAAATn%2F%2FZvc%3D","updated":"2013-11-07 14:59:33.000000000","message":"The number was discovered experimentally.  I wasn\u0027t sure how adding another configuration option would be received.  I could, however, add the option if it is deemed necessary.","commit_id":"c96db995122bfe38b34bbf3152866e74215695d1"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"790eda85c39629cb499bbf8de756d0caac14f436","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                            target_iqn, target_lun)"},{"line_number":211,"context_line":"            if device_number is None:"},{"line_number":212,"context_line":"                retries \u003d retries + 1"},{"line_number":213,"context_line":"                LOG.debug(\"Try %d to get device_number \""},{"line_number":214,"context_line":"                          \"from get_device_number_for_target failed.\""},{"line_number":215,"context_line":"                          \" Retrying...\" % retries)"},{"line_number":216,"context_line":"                time.sleep(CONF.hyperv.wmi_query_retry_interval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FRIM%3D","line":213,"updated":"2013-11-12 01:14:32.000000000","message":"message should be translated by _ for i18n, see line 191.","commit_id":"0c81469ae4afca8d6e19da678ac275e0a6efd702"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"4a3611691d6f9a83edeb04f063c53947a4d48588","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            if device_number is None:"},{"line_number":212,"context_line":"                retries \u003d retries + 1"},{"line_number":213,"context_line":"                LOG.debug(\"Try %d to get device_number \""},{"line_number":214,"context_line":"                          \"from get_device_number_for_target failed.\""},{"line_number":215,"context_line":"                          \" Retrying...\" % retries)"},{"line_number":216,"context_line":"                time.sleep(CONF.hyperv.wmi_query_retry_interval)"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FQDw%3D","line":214,"updated":"2013-11-12 08:51:04.000000000","message":"Agree with GuoHui that this needs internationalizing.","commit_id":"0c81469ae4afca8d6e19da678ac275e0a6efd702"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"75dab98286b22a2665c1b154aaddde6b4b257fd3","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            if device_number is None:"},{"line_number":212,"context_line":"                retries \u003d retries + 1"},{"line_number":213,"context_line":"                LOG.debug(\"Try %d to get device_number \""},{"line_number":214,"context_line":"                          \"from get_device_number_for_target failed.\""},{"line_number":215,"context_line":"                          \" Retrying...\" % retries)"},{"line_number":216,"context_line":"                time.sleep(CONF.hyperv.wmi_query_retry_interval)"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FOcQ%3D","line":214,"in_reply_to":"AAAATn%2F%2FQDw%3D","updated":"2013-11-12 16:15:19.000000000","message":"Done","commit_id":"0c81469ae4afca8d6e19da678ac275e0a6efd702"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"},{"line_number":46,"context_line":"               default\u003d5,"},{"line_number":47,"context_line":"               help\u003d\u0027Interval between attempted WMI queries.\u0027),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FO3w%3D","line":47,"updated":"2013-11-12 14:43:56.000000000","message":"Add the time unit to the help.","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8dc9bda44535486217f0ce5569eedc4d8b4bdc85","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        # The WMI query in get_device_number_for_target can incorrectly"},{"line_number":205,"context_line":"        # return no data when the system is under load.  This issue can"},{"line_number":206,"context_line":"        # be avoided by adding a retry."},{"line_number":207,"context_line":"        while (device_number is None and"},{"line_number":208,"context_line":"               retries \u003c CONF.hyperv.wmi_query_retry_count):"},{"line_number":209,"context_line":"            device_number \u003d self._volutils.get_device_number_for_target("},{"line_number":210,"context_line":"                            target_iqn, target_lun)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FO3I%3D","line":207,"updated":"2013-11-12 14:43:56.000000000","message":"An example of an existing retry loop in this code is on line 225, might be worth being consistent, but just a thought.","commit_id":"243134f93fdd049089cbec135ef7d6fe8707a3aa"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"e814e1b8c3d001783bd6b378dae0fecbed3672c2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"},{"line_number":46,"context_line":"               default\u003d5,"},{"line_number":47,"context_line":"               help\u003d\u0027Interval between attempted WMI queries.\u0027),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FNGM%3D","line":47,"updated":"2013-11-12 23:15:10.000000000","message":"probably good to mention that this is time in seconds. right?","commit_id":"7f8a1c64e23a69e91ec65ea98644002a1ad9359c"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"bf499eb0840e87b8aea3b025f473860955cc176a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"},{"line_number":46,"context_line":"               default\u003d5,"},{"line_number":47,"context_line":"               help\u003d\u0027Interval between attempted WMI queries.\u0027),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FM%2Fc%3D","line":47,"in_reply_to":"AAAATn%2F%2FNGM%3D","updated":"2013-11-12 23:54:56.000000000","message":"Done","commit_id":"7f8a1c64e23a69e91ec65ea98644002a1ad9359c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c6181e484c480484e23ed89f541ca36bb1d5ff","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                            target_iqn, target_lun)"},{"line_number":207,"context_line":"            if device_number is None:"},{"line_number":208,"context_line":"                attempt \u003d i + 1"},{"line_number":209,"context_line":"                LOG.debug(_(\u0027Try %d to get device_number \u0027"},{"line_number":210,"context_line":"                          \u0027from get_device_number_for_target failed. \u0027"},{"line_number":211,"context_line":"                          \u0027Retrying...\u0027) % attempt)"},{"line_number":212,"context_line":"                time.sleep(CONF.hyperv.wmi_query_retry_interval)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FMqE%3D","line":209,"updated":"2013-11-13 03:05:32.000000000","message":"Suggest changing \u0027Try\u0027 to \u0027Attempt\u0027 in this message. It seems to flow better if you read it with the actual number in context.","commit_id":"5da48117558684ef60acb28a849811d3bba875ed"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"28cedfdc534542c221cb649749e15ebe5728283a","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                            target_iqn, target_lun)"},{"line_number":207,"context_line":"            if device_number is None:"},{"line_number":208,"context_line":"                attempt \u003d i + 1"},{"line_number":209,"context_line":"                LOG.debug(_(\u0027Try %d to get device_number \u0027"},{"line_number":210,"context_line":"                          \u0027from get_device_number_for_target failed. \u0027"},{"line_number":211,"context_line":"                          \u0027Retrying...\u0027) % attempt)"},{"line_number":212,"context_line":"                time.sleep(CONF.hyperv.wmi_query_retry_interval)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FJSQ%3D","line":209,"in_reply_to":"AAAATn%2F%2FMqE%3D","updated":"2013-11-13 20:56:25.000000000","message":"Done","commit_id":"5da48117558684ef60acb28a849811d3bba875ed"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"350b9e59a606192d5891370d8b4507218d4bb3b9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    cfg.IntOpt(\u0027volume_attach_retry_interval\u0027,"},{"line_number":40,"context_line":"               default\u003d5,"},{"line_number":41,"context_line":"               help\u003d\u0027Interval between volume attachment attempts, in seconds\u0027),"},{"line_number":42,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_count\u0027,"},{"line_number":43,"context_line":"               default\u003d10,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHLM%3D","line":42,"updated":"2013-11-14 09:55:23.000000000","message":"The option name is misleading, as this applies to a specific case, not to every WMI query.\n\nAn alternative could be: mounted_disk_query_retry_count","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"060ea07b89e93bf03d6f8d7a6077baad894e08af","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    cfg.IntOpt(\u0027volume_attach_retry_interval\u0027,"},{"line_number":40,"context_line":"               default\u003d5,"},{"line_number":41,"context_line":"               help\u003d\u0027Interval between volume attachment attempts, in seconds\u0027),"},{"line_number":42,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_count\u0027,"},{"line_number":43,"context_line":"               default\u003d10,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FFH8%3D","line":42,"in_reply_to":"AAAATn%2F%2FHLM%3D","updated":"2013-11-14 17:22:08.000000000","message":"Done","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"350b9e59a606192d5891370d8b4507218d4bb3b9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_count\u0027,"},{"line_number":43,"context_line":"               default\u003d10,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"},{"line_number":46,"context_line":"               default\u003d5,"},{"line_number":47,"context_line":"               help\u003d\u0027Interval between attempted WMI queries, in seconds.\u0027),"},{"line_number":48,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHK0%3D","line":45,"updated":"2013-11-14 09:55:23.000000000","message":"Ditto\n\nAlternative: mounted_disk_query_retry_interval","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"060ea07b89e93bf03d6f8d7a6077baad894e08af","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_count\u0027,"},{"line_number":43,"context_line":"               default\u003d10,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of times to retry requesting data via WMI.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027wmi_query_retry_interval\u0027,"},{"line_number":46,"context_line":"               default\u003d5,"},{"line_number":47,"context_line":"               help\u003d\u0027Interval between attempted WMI queries, in seconds.\u0027),"},{"line_number":48,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FFIA%3D","line":45,"in_reply_to":"AAAATn%2F%2FHK0%3D","updated":"2013-11-14 17:22:08.000000000","message":"Done","commit_id":"bafb386e643c773df7131a12cdb81a4863be568d"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"163cf554e360fb2d7438d990c487bdeff7eaf302","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        # The WMI query in get_device_number_for_target can incorrectly"},{"line_number":204,"context_line":"        # return no data when the system is under load.  This issue can"},{"line_number":205,"context_line":"        # be avoided by adding a retry."},{"line_number":206,"context_line":"        for i in range(0, CONF.hyperv.mounted_disk_query_retry_count):"},{"line_number":207,"context_line":"            device_number \u003d self._volutils.get_device_number_for_target("},{"line_number":208,"context_line":"                            target_iqn, target_lun)"},{"line_number":209,"context_line":"            if device_number is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F85bU%3D","line":206,"updated":"2013-12-19 02:07:07.000000000","message":"xrange() technically better, just in case someone sets retry_count to a huge number\n\nYou also don\u0027t need the 0 part","commit_id":"f2cf3265e8b9e939cad29f5a5e0e92f3aae18827"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c829543efe6e677b043f3bfc1d2ac14e4804bc5e","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        # The WMI query in get_device_number_for_target can incorrectly"},{"line_number":204,"context_line":"        # return no data when the system is under load.  This issue can"},{"line_number":205,"context_line":"        # be avoided by adding a retry."},{"line_number":206,"context_line":"        for i in range(0, CONF.hyperv.mounted_disk_query_retry_count):"},{"line_number":207,"context_line":"            device_number \u003d self._volutils.get_device_number_for_target("},{"line_number":208,"context_line":"                            target_iqn, target_lun)"},{"line_number":209,"context_line":"            if device_number is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F811w%3D","line":206,"in_reply_to":"AAAATn%2F85bU%3D","updated":"2013-12-19 16:59:31.000000000","message":"Done","commit_id":"f2cf3265e8b9e939cad29f5a5e0e92f3aae18827"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d95875725f9990127cf90e5f17d6317295601407","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                attempt \u003d i + 1"},{"line_number":211,"context_line":"                LOG.debug(_(\u0027Attempt %d to get device_number \u0027"},{"line_number":212,"context_line":"                          \u0027from get_device_number_for_target failed. \u0027"},{"line_number":213,"context_line":"                          \u0027Retrying...\u0027) % attempt)"},{"line_number":214,"context_line":"                time.sleep(CONF.hyperv.mounted_disk_query_retry_interval)"},{"line_number":215,"context_line":"            else:"},{"line_number":216,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F8tLs%3D","line":213,"updated":"2013-12-22 09:05:57.000000000","message":"please use a , instead of a %","commit_id":"5e849362b6b6be13d9252894647c4c2ec1dd0f8b"}]}
