)]}'
{"os_brick/initiator/connectors/rbd.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae04e803cc612273ed1259c517ad27d321580132","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        mappings \u003d jsonutils.loads(out)"},{"line_number":255,"context_line":"        if isinstance(mappings, dict):"},{"line_number":256,"context_line":"            # yes, we\u0027re losing the ID field but we don\u0027t need it here"},{"line_number":257,"context_line":"            mappings \u003d mappings.values()"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        for mapping in mappings:"},{"line_number":260,"context_line":"            if mapping[\u0027name\u0027] \u003d\u003d volume:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_af46587b","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":40},"updated":"2020-06-18 18:18:38.000000000","message":"vol_id \u003d mappings.keys()[0]\nmappings\u003d mappings.values()\nmappings[\u0027id\u0027] \u003d vol_id\n\nthen you can keep the id","commit_id":"4f94dae2a6d3f87dae58083ea8b85cd95e2ea3ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b72c7bd915622e2474d18acff6d233e46c4f7363","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        mappings \u003d jsonutils.loads(out)"},{"line_number":255,"context_line":"        if isinstance(mappings, dict):"},{"line_number":256,"context_line":"            # yes, we\u0027re losing the ID field but we don\u0027t need it here"},{"line_number":257,"context_line":"            mappings \u003d mappings.values()"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        for mapping in mappings:"},{"line_number":260,"context_line":"            if mapping[\u0027name\u0027] \u003d\u003d volume:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_e28fac20","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":40},"in_reply_to":"bf51134e_af46587b","updated":"2020-06-19 15:19:00.000000000","message":"That would break on Python 3, because keys() doesn\u0027t return a list anymore, and we would also need to do it for all the entries, not just the first one.\n\nI agree with stephenfin, if we don\u0027t use it now, we don\u0027t care about losing that information.","commit_id":"4f94dae2a6d3f87dae58083ea8b85cd95e2ea3ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"248566713ea8cc84c1b66041842caf1a579108ff","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        mappings \u003d jsonutils.loads(out)"},{"line_number":255,"context_line":"        if isinstance(mappings, dict):"},{"line_number":256,"context_line":"            # yes, we\u0027re losing the ID field but we don\u0027t need it here"},{"line_number":257,"context_line":"            mappings \u003d mappings.values()"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        for mapping in mappings:"},{"line_number":260,"context_line":"            if mapping[\u0027name\u0027] \u003d\u003d volume:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_49d03820","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":40},"in_reply_to":"bf51134e_e28fac20","updated":"2020-06-19 22:17:52.000000000","message":"yes i was just pointing out that its not realy hard to capture the keys\n\ni proably would just use a list comprehenat to do this all in one line but if we dont need it and its tempoary then i guess this is fine.","commit_id":"4f94dae2a6d3f87dae58083ea8b85cd95e2ea3ba"}],"os_brick/tests/initiator/connectors/test_rbd.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b72c7bd915622e2474d18acff6d233e46c4f7363","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @mock.patch.object(priv_rootwrap, \u0027execute\u0027, return_value\u003dNone)"},{"line_number":255,"context_line":"    def test_disconnect_local_volume(self, mock_execute):"},{"line_number":256,"context_line":"        \"\"\"Test the disconnect volume case with local attach.\"\"\""},{"line_number":257,"context_line":"        rbd_connector \u003d rbd.RBDConnector(None, do_local_attach\u003dTrue)"},{"line_number":258,"context_line":"        conn \u003d {\u0027name\u0027: \u0027pool/image\u0027,"},{"line_number":259,"context_line":"                \u0027auth_username\u0027: \u0027fake_user\u0027,"},{"line_number":260,"context_line":"                \u0027hosts\u0027: [\u0027192.168.10.2\u0027],"},{"line_number":261,"context_line":"                \u0027ports\u0027: [\u00276789\u0027]}"},{"line_number":262,"context_line":"        mock_execute.side_effect \u003d [(\"\"\""},{"line_number":263,"context_line":"[{\"id\":\"0\",\"pool\":\"pool\",\"device\":\"/dev/rbd0\",\"name\":\"image\"},"},{"line_number":264,"context_line":" {\"id\":\"1\",\"pool\":\"pool\",\"device\":\"/dev/rdb1\",\"name\":\"image_2\"}]\"\"\", None),"},{"line_number":265,"context_line":"                                    (None, None)]"},{"line_number":266,"context_line":"        show_cmd \u003d [\u0027rbd\u0027, \u0027showmapped\u0027, \u0027--format\u003djson\u0027, \u0027--id\u0027, \u0027fake_user\u0027,"},{"line_number":267,"context_line":"                    \u0027--mon_host\u0027, \u0027192.168.10.2:6789\u0027]"},{"line_number":268,"context_line":"        unmap_cmd \u003d [\u0027rbd\u0027, \u0027unmap\u0027, \u0027/dev/rbd0\u0027, \u0027--id\u0027, \u0027fake_user\u0027,"},{"line_number":269,"context_line":"                     \u0027--mon_host\u0027, \u0027192.168.10.2:6789\u0027]"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        rbd_connector.disconnect_volume(conn, None)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        # Assert that showmapped is used before we unmap the root device"},{"line_number":274,"context_line":"        mock_execute.assert_has_calls(["},{"line_number":275,"context_line":"            mock.call(*show_cmd, root_helper\u003dNone, run_as_root\u003dTrue),"},{"line_number":276,"context_line":"            mock.call(*unmap_cmd, root_helper\u003dNone, run_as_root\u003dTrue)])"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    @mock.patch.object(priv_rootwrap, \u0027execute\u0027, return_value\u003dNone)"},{"line_number":279,"context_line":"    def test_disconnect_local_volume_legacy_ceph(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_c2bb88c1","line":276,"range":{"start_line":256,"start_character":0,"end_line":276,"end_character":71},"updated":"2020-06-19 15:19:00.000000000","message":"nit: We could use ddt and have a single test for both inputs, the old and the new one.","commit_id":"4f94dae2a6d3f87dae58083ea8b85cd95e2ea3ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a6d1875a7e68c166099fe03240283bbafd1cb01d","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        self.assertEqual(1, volume_close.call_count)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @ddt.data("},{"line_number":255,"context_line":"        \"\"\""},{"line_number":256,"context_line":"        [{\"id\":\"0\",\"pool\":\"pool\",\"device\":\"/dev/rbd0\",\"name\":\"image\"},"},{"line_number":257,"context_line":"         {\"id\":\"1\",\"pool\":\"pool\",\"device\":\"/dev/rdb1\",\"name\":\"image_2\"}]"},{"line_number":258,"context_line":"        \"\"\",  # new-style output (ceph 13.2.0+)"},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        {\"0\":{\"pool\":\"pool\",\"device\":\"/dev/rbd0\",\"name\":\"image\"},"},{"line_number":261,"context_line":"         \"1\":{\"pool\":\"pool\",\"device\":\"/dev/rdb1\",\"name\":\"image_2\"}}"},{"line_number":262,"context_line":"        \"\"\",  # old-style output"},{"line_number":263,"context_line":"    )"},{"line_number":264,"context_line":"    @mock.patch.object(priv_rootwrap, \u0027execute\u0027, return_value\u003dNone)"},{"line_number":265,"context_line":"    def test_disconnect_local_volume(self, rbd_map_out, mock_execute):"},{"line_number":266,"context_line":"        \"\"\"Test the disconnect volume case with local attach.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_699a5c6e","line":263,"range":{"start_line":254,"start_character":4,"end_line":263,"end_character":5},"updated":"2020-06-19 22:20:13.000000000","message":"nice use of ddt\n\ni much prefer when we do this in file instead  of having seperate data files to drive the tests.","commit_id":"a87ef7bbabc80bf7f2d078764986aea2cbb90aa5"}]}
