)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"206fabe30f3afbce44283defa8393e2b40204452","unresolved":false,"context_lines":[{"line_number":11,"context_line":"confounded by Image.cache(), which doesn\u0027t call the given callback"},{"line_number":12,"context_line":"(_create_ephemeral in this case), if the target already exists."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Resolves-Bug: #1648109"},{"line_number":15,"context_line":"Co-authored-by: Feodor Tersin \u003cftersin@hotmail.com\u003e"},{"line_number":16,"context_line":"Change-Id: Ic9178d6c013670611e63d54a7669f35dc9770e91"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a71b18c_09ed6f25","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":8},"updated":"2016-12-07 17:06:07.000000000","message":"Closes?","commit_id":"80154586689c23900d9f6bd58ad49b3b41d2360a"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"5dd90958f27ff22b0c87682eba7b97384bb8b430","unresolved":false,"context_lines":[{"line_number":11,"context_line":"confounded by Image.cache(), which doesn\u0027t call the given callback"},{"line_number":12,"context_line":"(_create_ephemeral in this case), if the target already exists."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Resolves-Bug: #1648109"},{"line_number":15,"context_line":"Co-authored-by: Feodor Tersin \u003cftersin@hotmail.com\u003e"},{"line_number":16,"context_line":"Change-Id: Ic9178d6c013670611e63d54a7669f35dc9770e91"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a71b18c_69f8a3c5","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":8},"in_reply_to":"3a71b18c_09ed6f25","updated":"2016-12-07 17:08:43.000000000","message":"I think you might be right, but it seemed to end up in launchpad automatically so I guess they\u0027re both supported?","commit_id":"80154586689c23900d9f6bd58ad49b3b41d2360a"}],"nova/tests/unit/virt/libvirt/test_imagebackend.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"62db1791a41be851b913cb574013755b786249d2","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        # Fake create_volume causes exists to return true for the volume"},{"line_number":760,"context_line":"        def fake_create_volume(vg, lv, size, sparse\u003dFalse):"},{"line_number":761,"context_line":"            exists.add(os.path.join(\u0027/dev\u0027, vg, lv))"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        mock_lvm.create_volume.side_effect \u003d fake_create_volume"},{"line_number":764,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_4594ad43","line":761,"updated":"2016-12-07 16:17:08.000000000","message":"hmm... in lvm\u0027s constructor there is:\n\n    self.lv_path \u003d os.path.join(\u0027/dev\u0027, self.vg, self.lv)\n    path \u003d \u0027/dev/mapper/\u0027 + dmcrypt.volume_name(self.lv)\n    super(Lvm, self).__init__(path, \"block\", \"raw\", is_block_dev\u003dTrue)\n\nin lvm\u0027s create_image there is\n\n    prepare_template(target\u003dself.path, *args, **kwargs)\n\niianm this means that fetch_func_sync is called with /dev/maper/xxx\n\nThis does not break the test, but makes it not so real...","commit_id":"80154586689c23900d9f6bd58ad49b3b41d2360a"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"71ebf099b89520a2030c6bafbbefe3b69f0d9f2c","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        # Fake create_volume causes exists to return true for the volume"},{"line_number":760,"context_line":"        def fake_create_volume(vg, lv, size, sparse\u003dFalse):"},{"line_number":761,"context_line":"            exists.add(os.path.join(\u0027/dev\u0027, vg, lv))"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        mock_lvm.create_volume.side_effect \u003d fake_create_volume"},{"line_number":764,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_e0ecc72b","line":761,"in_reply_to":"3a71b18c_4594ad43","updated":"2016-12-07 16:29:00.000000000","message":"It does:\n\n  if self.ephemeral_key_uuid is None:\n      path \u003d os.path.join(\u0027/dev\u0027, self.vg, self.lv)\n\nWe don\u0027t set ephemeral_key_uuid in this test, so I think this is ok.","commit_id":"80154586689c23900d9f6bd58ad49b3b41d2360a"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"c48834b19ad22f17c7647848ce06e7da838e57bc","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        # Fake create_volume causes exists to return true for the volume"},{"line_number":760,"context_line":"        def fake_create_volume(vg, lv, size, sparse\u003dFalse):"},{"line_number":761,"context_line":"            exists.add(os.path.join(\u0027/dev\u0027, vg, lv))"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        mock_lvm.create_volume.side_effect \u003d fake_create_volume"},{"line_number":764,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_0040e306","line":761,"in_reply_to":"3a71b18c_e0ecc72b","updated":"2016-12-07 16:31:24.000000000","message":"ahh, ok","commit_id":"80154586689c23900d9f6bd58ad49b3b41d2360a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"32a7de2e3b3fde5fc2e030b0ea50b05e34b1bc25","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                    fn(*wargs, **wkwargs)"},{"line_number":744,"context_line":"                return wrapper"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"            return outer"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        mock_synchronized.side_effect \u003d fake_synchronized"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_0388b521","line":746,"updated":"2016-12-08 17:32:59.000000000","message":"Might be worth a quick code comment above to indicate that the reason you are mocking out synchronized is because synchronized calls os.path.exists() on the lockfile and would mess with the mock on os.path.exists() below.","commit_id":"de5bb0c3fe9e86166e81aa2465a8e7791f64ba39"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"f936d3a89c10ed7f7d4ec8ada026944bb8b9e841","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                    fn(*wargs, **wkwargs)"},{"line_number":744,"context_line":"                return wrapper"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"            return outer"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        mock_synchronized.side_effect \u003d fake_synchronized"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_f5e0aefc","line":746,"in_reply_to":"3a71b18c_0388b521","updated":"2016-12-09 10:14:19.000000000","message":"That was probably why I did it :) This feels like something which could be moved into a utils fixture. I suspect synchronized is just noise in the context of most unit tests.\n\nI\u0027ll add a comment if I respin.","commit_id":"de5bb0c3fe9e86166e81aa2465a8e7791f64ba39"}]}
