)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"960132041e7056fde40443e2a29e84dc14d6d6e7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ScalityVolume:fix how remote FS mount is detected"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new version of Scality Ring doesn\u0027t have a \u0027sys\" directory at the"},{"line_number":10,"context_line":"root level of the Scality (distributed) filesystem. But the"},{"line_number":11,"context_line":"LibvirtScalityVolumeDriver in Nova relies on the presence of this"},{"line_number":12,"context_line":"\u0027sys\u0027 directory to detect whether the Scality Filesystem has been"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a4dcd0f_b45d487b","line":9,"updated":"2015-08-14 13:32:20.000000000","message":"s/\"\"/\u0027/","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"960132041e7056fde40443e2a29e84dc14d6d6e7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"root level of the Scality (distributed) filesystem. But the"},{"line_number":11,"context_line":"LibvirtScalityVolumeDriver in Nova relies on the presence of this"},{"line_number":12,"context_line":"\u0027sys\u0027 directory to detect whether the Scality Filesystem has been"},{"line_number":13,"context_line":"properly mounted. This means that LibvirtScalityVolumeDriver doesn\"t"},{"line_number":14,"context_line":"detect that the filesystem was already mounted."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Fix this be introducing a more robust way to detect that the remote"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a4dcd0f_7450205f","line":13,"updated":"2015-08-14 13:32:20.000000000","message":"s/\"\"/\u0027/","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"}],"nova/tests/unit/virt/libvirt/volume/test_scality.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"57e5c611cb9709643fb68e6712fdaca4ea1cf16a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.drv \u003d scality.LibvirtScalityVolumeDriver(self.fake_conn)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @mock.patch(\u0027six.moves.urllib.request.urlopen\u0027, mock.Mock())"},{"line_number":37,"context_line":"    def test_connect_volume(self):"},{"line_number":38,"context_line":"        TEST_VOLDIR \u003d \u0027volumes\u0027"},{"line_number":39,"context_line":"        TEST_VOLNAME \u003d \u0027volume_name\u0027"},{"line_number":40,"context_line":"        TEST_CONN_INFO \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_d7d44f48","line":37,"updated":"2015-09-15 21:30:50.000000000","message":"hm, I haven\u0027t seen something like this before. it looks a bit weird and I\u0027m a little bit surprised it worked.\n\nanyways, according to the mock.patch documentation, the created mock is passed as an argument if the \u0027new\u0027 patch argument is ommited:\n\n    patch(target, new\u003dsentinel.DEFAULT, spec\u003dNone, create\u003dFalse, spec_set\u003dNone, autospec\u003dNone, new_callable\u003dNone, **kwargs)\n\n    If `new` is omitted, then the target is replaced with a\n    `MagicMock`. If `patch` is used as a decorator and `new` is\n    omitted, the created mock is passed in as an extra argument to the\n    decorated function. If `patch` is used as a context manager the created\n    mock is returned by the context manager.","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"59608e59cd271b319b84beee467b37b8d1737ac4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.drv \u003d scality.LibvirtScalityVolumeDriver(self.fake_conn)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @mock.patch(\u0027six.moves.urllib.request.urlopen\u0027, mock.Mock())"},{"line_number":37,"context_line":"    def test_connect_volume(self):"},{"line_number":38,"context_line":"        TEST_VOLDIR \u003d \u0027volumes\u0027"},{"line_number":39,"context_line":"        TEST_VOLNAME \u003d \u0027volume_name\u0027"},{"line_number":40,"context_line":"        TEST_CONN_INFO \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_32a173aa","line":37,"in_reply_to":"ba15a1d1_d7d44f48","updated":"2015-11-09 03:52:51.000000000","message":"Yeah, nice point.\n\nAs Claudiu said, this pattern doesn\u0027t exist in nova unit tests now:\n\n $ grep \"@mock.patch(\" * -R | grep mock.Mock\n $\n\nbetter to remove mock.Mock()","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9343720660d8b67d720aeda04e149e916f8d7fe1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.drv \u003d scality.LibvirtScalityVolumeDriver(self.fake_conn)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @mock.patch(\u0027six.moves.urllib.request.urlopen\u0027, mock.Mock())"},{"line_number":37,"context_line":"    def test_connect_volume(self):"},{"line_number":38,"context_line":"        TEST_VOLDIR \u003d \u0027volumes\u0027"},{"line_number":39,"context_line":"        TEST_VOLNAME \u003d \u0027volume_name\u0027"},{"line_number":40,"context_line":"        TEST_CONN_INFO \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_22db587e","line":37,"in_reply_to":"da85f559_32a173aa","updated":"2015-11-09 09:31:51.000000000","message":"Done","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"57e5c611cb9709643fb68e6712fdaca4ea1cf16a","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assertEqual(2, m_is_mounted.call_count)"},{"line_number":98,"context_line":"        self.assertEqual(2, mock_execute.call_count)"},{"line_number":99,"context_line":"        expected_call \u003d mock.call(\u0027mount\u0027, \u0027-t\u0027, \u0027sofs\u0027,"},{"line_number":100,"context_line":"                                  self.scality_sofs_config,"},{"line_number":101,"context_line":"                                  self.scality_sofs_mount_point,"},{"line_number":102,"context_line":"                                  run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_f7c95379","line":99,"updated":"2015-09-15 21:30:50.000000000","message":"you could include the other call as well.","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9343720660d8b67d720aeda04e149e916f8d7fe1","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assertEqual(2, m_is_mounted.call_count)"},{"line_number":98,"context_line":"        self.assertEqual(2, mock_execute.call_count)"},{"line_number":99,"context_line":"        expected_call \u003d mock.call(\u0027mount\u0027, \u0027-t\u0027, \u0027sofs\u0027,"},{"line_number":100,"context_line":"                                  self.scality_sofs_config,"},{"line_number":101,"context_line":"                                  self.scality_sofs_mount_point,"},{"line_number":102,"context_line":"                                  run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_82d00455","line":99,"in_reply_to":"ba15a1d1_f7c95379","updated":"2015-11-09 09:31:51.000000000","message":"Done","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"57e5c611cb9709643fb68e6712fdaca4ea1cf16a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                  self.scality_sofs_config,"},{"line_number":101,"context_line":"                                  self.scality_sofs_mount_point,"},{"line_number":102,"context_line":"                                  run_as_root\u003dTrue)"},{"line_number":103,"context_line":"        self.assertEqual(mock_execute.mock_calls[1], expected_call)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def test_sofs_is_mounted_when_sofs_is_not_mounted(self):"},{"line_number":106,"context_line":"        mock_open \u003d mock.mock_open(read_data\u003d\u0027tmpfs /dev/shm\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_37e90be7","line":103,"updated":"2015-09-15 21:30:50.000000000","message":"expected should be first.\n\nbut i\u0027d prefer it so:\n\n    mock_execute.assert_has_calls(expected_calls)","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9343720660d8b67d720aeda04e149e916f8d7fe1","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                  self.scality_sofs_config,"},{"line_number":101,"context_line":"                                  self.scality_sofs_mount_point,"},{"line_number":102,"context_line":"                                  run_as_root\u003dTrue)"},{"line_number":103,"context_line":"        self.assertEqual(mock_execute.mock_calls[1], expected_call)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def test_sofs_is_mounted_when_sofs_is_not_mounted(self):"},{"line_number":106,"context_line":"        mock_open \u003d mock.mock_open(read_data\u003d\u0027tmpfs /dev/shm\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_a2d50844","line":103,"in_reply_to":"ba15a1d1_37e90be7","updated":"2015-11-09 09:31:51.000000000","message":"Done","commit_id":"accd7b89d4393531aa8237ea0c8ce74ca3d0ae10"}],"nova/virt/libvirt/volume/scality.py":[{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"9a4a3f14e9469c2491b863b9c1ee9940126df2a5","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if not self._sofs_is_mounted():"},{"line_number":122,"context_line":"            utils.execute(\u0027mount\u0027, \u0027-t\u0027, \u0027sofs\u0027, config, mount_path,"},{"line_number":123,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":124,"context_line":"        if not self._sofs_is_mounted():"},{"line_number":125,"context_line":"            msg \u003d _(\"Cannot mount Scality SOFS, check syslog for errors\")"},{"line_number":126,"context_line":"            LOG.warn(msg)"},{"line_number":127,"context_line":"            raise exception.NovaException(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_e3d4eae9","line":124,"updated":"2015-08-12 14:52:05.000000000","message":"I don\u0027t understand why there is two same selections here.","commit_id":"d069f4508cd49983a6384e8977fefa9e42b576a3"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5e52ff1c198f33b5eff8a0774e1bf94be7c870e7","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if not self._sofs_is_mounted():"},{"line_number":122,"context_line":"            utils.execute(\u0027mount\u0027, \u0027-t\u0027, \u0027sofs\u0027, config, mount_path,"},{"line_number":123,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":124,"context_line":"        if not self._sofs_is_mounted():"},{"line_number":125,"context_line":"            msg \u003d _(\"Cannot mount Scality SOFS, check syslog for errors\")"},{"line_number":126,"context_line":"            LOG.warn(msg)"},{"line_number":127,"context_line":"            raise exception.NovaException(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_869df4bd","line":124,"in_reply_to":"1a4dcd0f_e3d4eae9","updated":"2015-08-12 15:00:00.000000000","message":"Good point, will fix. Thanks","commit_id":"d069f4508cd49983a6384e8977fefa9e42b576a3"}]}
