)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f43c8c8f13940ef8052384fc3e4bf039caed4890","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"lxc: make use of filter python3 compatiable"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This replace the implict use of the filter builtin"},{"line_number":10,"context_line":"under python 2 with an import of six.moves.filter"},{"line_number":11,"context_line":"to allow python3 compatablity. This change also"},{"line_number":12,"context_line":"converts the result of filter to a list to preserve"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_83de0dd8","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":12},"updated":"2019-08-13 18:43:38.000000000","message":"replaces","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"528101d343aa525de8151837af550aab2de7f984","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"lxc: make use of filter python3 compatiable"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This replace the implict use of the filter builtin"},{"line_number":10,"context_line":"under python 2 with an import of six.moves.filter"},{"line_number":11,"context_line":"to allow python3 compatablity. This change also"},{"line_number":12,"context_line":"converts the result of filter to a list to preserve"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_9e68a6ba","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":12},"in_reply_to":"7faddb67_83de0dd8","updated":"2019-08-13 18:58:01.000000000","message":"Done","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f43c8c8f13940ef8052384fc3e4bf039caed4890","unresolved":false,"context_lines":[{"line_number":12,"context_line":"converts the result of filter to a list to preserve"},{"line_number":13,"context_line":"python2 behavior."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Close-Bug: #1840068"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I25616c5761ea625a15d725777ae58175651558f8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_c3d405be","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":5},"updated":"2019-08-13 18:43:38.000000000","message":"Closes","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"528101d343aa525de8151837af550aab2de7f984","unresolved":false,"context_lines":[{"line_number":12,"context_line":"converts the result of filter to a list to preserve"},{"line_number":13,"context_line":"python2 behavior."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Close-Bug: #1840068"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I25616c5761ea625a15d725777ae58175651558f8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_be6322dd","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":5},"in_reply_to":"7faddb67_c3d405be","updated":"2019-08-13 18:58:01.000000000","message":"Done","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58daebb5e9051fb5ab497e040502bdb961bcdca0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-08-13 19:56:53 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"lxc: make use of filter python3 compatiable"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This replaces the implict use of the filter builtin"},{"line_number":10,"context_line":"under python 2 with an import of six.moves.filter"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_be59e25b","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":43},"updated":"2019-08-13 19:51:16.000000000","message":"compatible","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58daebb5e9051fb5ab497e040502bdb961bcdca0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"lxc: make use of filter python3 compatiable"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This replaces the implict use of the filter builtin"},{"line_number":10,"context_line":"under python 2 with an import of six.moves.filter"},{"line_number":11,"context_line":"to allow python3 compatablity. This change also"},{"line_number":12,"context_line":"converts the result of filter to a list to preserve"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_1e303607","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":25},"updated":"2019-08-13 19:51:16.000000000","message":"implicit","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f14c73aae9982b06eef5b83e30bad2a2cc3ec0e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This replaces the implict use of the filter builtin"},{"line_number":10,"context_line":"under python 2 with an import of six.moves.filter"},{"line_number":11,"context_line":"to allow python3 compatablity. This change also"},{"line_number":12,"context_line":"converts the result of filter to a list to preserve"},{"line_number":13,"context_line":"python2 behavior."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_fe851a08","line":11,"range":{"start_line":11,"start_character":17,"end_line":11,"end_character":29},"updated":"2019-08-13 19:25:33.000000000","message":"compatibility","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"674e4f67087769bb9458c2ac8026ede177efadff","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"lxc: make use of filter python3 compatible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"_detect_nbd_devices useses the filter"},{"line_number":10,"context_line":"builtin internally to filter valid devices."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In python 2, filter returns a list. In python 3,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_4347b2bd","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":26},"updated":"2019-08-13 22:29:51.000000000","message":"uses","commit_id":"51c29dff1856fe95be81cdb071054f9828953dc1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"674e4f67087769bb9458c2ac8026ede177efadff","unresolved":false,"context_lines":[{"line_number":12,"context_line":"In python 2, filter returns a list. In python 3,"},{"line_number":13,"context_line":"filter returns an iterable or generator function."},{"line_number":14,"context_line":"This change eagerly converts the result of calling filter"},{"line_number":15,"context_line":"to a list to preserve the python 2 behaviour under python 3."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1840068"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_0313fab9","line":15,"range":{"start_line":15,"start_character":42,"end_line":15,"end_character":43},"updated":"2019-08-13 22:29:51.000000000","message":"You just couldn\u0027t stand the behavior huh? :)","commit_id":"51c29dff1856fe95be81cdb071054f9828953dc1"}],"nova/tests/unit/virt/disk/mount/test_nbd.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f43c8c8f13940ef8052384fc3e4bf039caed4890","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def setUp(self):"},{"line_number":69,"context_line":"        super(NbdTestCaseNoStub, self).setUp()"},{"line_number":70,"context_line":"        self.file \u003d imgmodel.LocalFileImage("},{"line_number":71,"context_line":"            \"/some/file.qcow2\", imgmodel.FORMAT_QCOW2)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":74,"context_line":"    def test_detect_nbd_devices(self, list_dir_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_83f7ed59","line":71,"range":{"start_line":70,"start_character":8,"end_line":71,"end_character":54},"updated":"2019-08-13 18:43:38.000000000","message":"We don\u0027t need all of this if you just make _detect_nbd_devices a staticmethod.","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"528101d343aa525de8151837af550aab2de7f984","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def setUp(self):"},{"line_number":69,"context_line":"        super(NbdTestCaseNoStub, self).setUp()"},{"line_number":70,"context_line":"        self.file \u003d imgmodel.LocalFileImage("},{"line_number":71,"context_line":"            \"/some/file.qcow2\", imgmodel.FORMAT_QCOW2)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":74,"context_line":"    def test_detect_nbd_devices(self, list_dir_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_9e3f46b4","line":71,"range":{"start_line":70,"start_character":8,"end_line":71,"end_character":54},"in_reply_to":"7faddb67_83f7ed59","updated":"2019-08-13 18:58:01.000000000","message":"Done","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"511799c92bc06f2e5a2a595a0f866910d4799310","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":86,"context_line":"    def test_detect_nbd_devices_empty(self, list_dir_mock):"},{"line_number":87,"context_line":"        list_dir_mock.return_value \u003d [\"fake1\", \"fake2\"]"},{"line_number":88,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"},{"line_number":89,"context_line":"        mount \u003d nbd.NbdMount(self.file, tempdir)"},{"line_number":90,"context_line":"        result \u003d mount._detect_nbd_devices()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_c382c5a5","line":87,"range":{"start_line":87,"start_character":37,"end_line":87,"end_character":55},"updated":"2019-08-13 18:45:25.000000000","message":"Another good one would be something like nbdz.","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"528101d343aa525de8151837af550aab2de7f984","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":86,"context_line":"    def test_detect_nbd_devices_empty(self, list_dir_mock):"},{"line_number":87,"context_line":"        list_dir_mock.return_value \u003d [\"fake1\", \"fake2\"]"},{"line_number":88,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"},{"line_number":89,"context_line":"        mount \u003d nbd.NbdMount(self.file, tempdir)"},{"line_number":90,"context_line":"        result \u003d mount._detect_nbd_devices()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_de6e1ec8","line":87,"range":{"start_line":87,"start_character":37,"end_line":87,"end_character":55},"in_reply_to":"7faddb67_c382c5a5","updated":"2019-08-13 18:58:01.000000000","message":"yep ill add that","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8328e1a98b9f94e1172181da92ec805d103a005","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    @mock.patch(\u0027os.listdir\u0027)"},{"line_number":69,"context_line":"    def test_detect_nbd_devices(self, list_dir_mock):"},{"line_number":70,"context_line":"        list_dir_mock.return_value \u003d _fake_detect_nbd_devices()"},{"line_number":71,"context_line":"        mount \u003d nbd.NbdMount"},{"line_number":72,"context_line":"        result \u003d mount._detect_nbd_devices()"},{"line_number":73,"context_line":"        self.assertIsNotNone(result)"},{"line_number":74,"context_line":"        self.assertIsInstance(result, list)"},{"line_number":75,"context_line":"        self.assertEqual(len(list_dir_mock.return_value), len(result))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_be1b221a","line":72,"range":{"start_line":71,"start_character":8,"end_line":72,"end_character":44},"updated":"2019-08-13 19:15:55.000000000","message":"This could be a single line I think.","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8328e1a98b9f94e1172181da92ec805d103a005","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def test_detect_nbd_devices_empty(self, list_dir_mock):"},{"line_number":81,"context_line":"        list_dir_mock.return_value \u003d ["},{"line_number":82,"context_line":"            \"nbdz\", \"fake0\", \"not-nbd1\"]"},{"line_number":83,"context_line":"        mount \u003d nbd.NbdMount"},{"line_number":84,"context_line":"        result \u003d mount._detect_nbd_devices()"},{"line_number":85,"context_line":"        self.assertIsNotNone(result)"},{"line_number":86,"context_line":"        self.assertIsInstance(result, list)"},{"line_number":87,"context_line":"        self.assertEqual(0, len(result))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_5e1a2e17","line":84,"range":{"start_line":83,"start_character":8,"end_line":84,"end_character":44},"updated":"2019-08-13 19:15:55.000000000","message":"same","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"}],"nova/virt/disk/mount/nbd.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f43c8c8f13940ef8052384fc3e4bf039caed4890","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \"\"\"qemu-nbd support disk images.\"\"\""},{"line_number":41,"context_line":"    mode \u003d \u0027nbd\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _detect_nbd_devices(self):"},{"line_number":44,"context_line":"        \"\"\"Detect nbd device files.\"\"\""},{"line_number":45,"context_line":"        return list("},{"line_number":46,"context_line":"            filter_func(NBD_DEVICE_RE.match, os.listdir(\u0027/sys/block/\u0027)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_c3fde53b","line":43,"updated":"2019-08-13 18:43:38.000000000","message":"Make this a staticmethod and then the test setup is much simpler.","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"528101d343aa525de8151837af550aab2de7f984","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \"\"\"qemu-nbd support disk images.\"\"\""},{"line_number":41,"context_line":"    mode \u003d \u0027nbd\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _detect_nbd_devices(self):"},{"line_number":44,"context_line":"        \"\"\"Detect nbd device files.\"\"\""},{"line_number":45,"context_line":"        return list("},{"line_number":46,"context_line":"            filter_func(NBD_DEVICE_RE.match, os.listdir(\u0027/sys/block/\u0027)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_de55befb","line":43,"in_reply_to":"7faddb67_c3fde53b","updated":"2019-08-13 18:58:01.000000000","message":"Done","commit_id":"f35761e25a6570434297f9e869deae943c735a55"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f14c73aae9982b06eef5b83e30bad2a2cc3ec0e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def _detect_nbd_devices():"},{"line_number":45,"context_line":"        \"\"\"Detect nbd device files.\"\"\""},{"line_number":46,"context_line":"        return list("},{"line_number":47,"context_line":"            filter_func(NBD_DEVICE_RE.match, os.listdir(\u0027/sys/block/\u0027)))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _find_unused(self, devices):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_be77a23b","line":46,"range":{"start_line":46,"start_character":15,"end_line":46,"end_character":20},"updated":"2019-08-13 19:25:33.000000000","message":"Seems like this would be enough to fix it on its own, no?","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f4266bc3775512e654743ec56c831501a2a4f71e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def _detect_nbd_devices():"},{"line_number":45,"context_line":"        \"\"\"Detect nbd device files.\"\"\""},{"line_number":46,"context_line":"        return list("},{"line_number":47,"context_line":"            filter_func(NBD_DEVICE_RE.match, os.listdir(\u0027/sys/block/\u0027)))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _find_unused(self, devices):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_63166e4c","line":46,"range":{"start_line":46,"start_character":15,"end_line":46,"end_character":20},"in_reply_to":"7faddb67_204e2c96","updated":"2019-08-13 21:30:48.000000000","message":"Yup, in this case since we\u0027re getting rid of py2 very soon, I don\u0027t care about the duplication of the list.\n\nBut I\u0027m fine either way.","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58daebb5e9051fb5ab497e040502bdb961bcdca0","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def _detect_nbd_devices():"},{"line_number":45,"context_line":"        \"\"\"Detect nbd device files.\"\"\""},{"line_number":46,"context_line":"        return list("},{"line_number":47,"context_line":"            filter_func(NBD_DEVICE_RE.match, os.listdir(\u0027/sys/block/\u0027)))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _find_unused(self, devices):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_e02334a6","line":46,"range":{"start_line":46,"start_character":15,"end_line":46,"end_character":20},"in_reply_to":"7faddb67_be77a23b","updated":"2019-08-13 19:51:16.000000000","message":"agree","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"234907df8278686ed8cb55daf3c3ca6d06650ea3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def _detect_nbd_devices():"},{"line_number":45,"context_line":"        \"\"\"Detect nbd device files.\"\"\""},{"line_number":46,"context_line":"        return list("},{"line_number":47,"context_line":"            filter_func(NBD_DEVICE_RE.match, os.listdir(\u0027/sys/block/\u0027)))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _find_unused(self, devices):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_204e2c96","line":46,"range":{"start_line":46,"start_character":15,"end_line":46,"end_character":20},"in_reply_to":"7faddb67_e02334a6","updated":"2019-08-13 21:23:24.000000000","message":"as i siad on irc technically yes but you would have sligly different behavior on python2 vs python3\n\nsix.moves.filter is returns an iterator/generator just as filter on python3 does\n\nif we just use filter on python 2 then filter returns a list which we then consturt a new list form so its less efficent\nsince we build the list twice.\n\nit shoudl be fairly cheap so maybe we dont care but this is more correct.","commit_id":"33c1c0e556ad678d3e8bd6e183b2d2b60bfe4185"}]}
