)]}'
{"nova/tests/unit/virt/disk/test_inject.py":[{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        diskapi._inject_key_into_fs(\"mysshkey\", vfs)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertIn(\"/root/.ssh\", vfs.handle.files)"},{"line_number":75,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh\"],"},{"line_number":76,"context_line":"                         {\u0027isdir\u0027: True, \u0027gid\u0027: 0, \u0027uid\u0027: 0, \u0027mode\u0027: 0o700})"},{"line_number":77,"context_line":"        self.assertIn(\"/root/.ssh/authorized_keys\", vfs.handle.files)"},{"line_number":78,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh/authorized_keys\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_e9a819de","line":75,"updated":"2016-06-02 09:34:01.000000000","message":"Wrong order of params of assertEqual(). Please fix that.","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh\"],"},{"line_number":76,"context_line":"                         {\u0027isdir\u0027: True, \u0027gid\u0027: 0, \u0027uid\u0027: 0, \u0027mode\u0027: 0o700})"},{"line_number":77,"context_line":"        self.assertIn(\"/root/.ssh/authorized_keys\", vfs.handle.files)"},{"line_number":78,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh/authorized_keys\"],"},{"line_number":79,"context_line":"                         {\u0027isdir\u0027: False,"},{"line_number":80,"context_line":"                          \u0027content\u0027: \"Hello World\\n# The following ssh \" +"},{"line_number":81,"context_line":"                                     \"key was injected by Nova\\nmysshkey\\n\","}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_69b54930","line":78,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto.","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        diskapi._inject_key_into_fs(\"mysshkey\", vfs)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assertIn(\"/etc/rc.d/rc.local\", vfs.handle.files)"},{"line_number":98,"context_line":"        self.assertEqual(vfs.handle.files[\"/etc/rc.d/rc.local\"],"},{"line_number":99,"context_line":"                         {\u0027isdir\u0027: False,"},{"line_number":100,"context_line":"                          \u0027content\u0027: \"Hello World#!/bin/sh\\n# Added by \" +"},{"line_number":101,"context_line":"                                     \"Nova to ensure injected ssh keys \" +"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_299221a0","line":98,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                          \u0027mode\u0027: 0o700})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        self.assertIn(\"/root/.ssh\", vfs.handle.files)"},{"line_number":109,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh\"],"},{"line_number":110,"context_line":"                         {\u0027isdir\u0027: True, \u0027gid\u0027: 0, \u0027uid\u0027: 0, \u0027mode\u0027: 0o700})"},{"line_number":111,"context_line":"        self.assertIn(\"/root/.ssh/authorized_keys\", vfs.handle.files)"},{"line_number":112,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh/authorized_keys\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_898fcd74","line":109,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh\"],"},{"line_number":110,"context_line":"                         {\u0027isdir\u0027: True, \u0027gid\u0027: 0, \u0027uid\u0027: 0, \u0027mode\u0027: 0o700})"},{"line_number":111,"context_line":"        self.assertIn(\"/root/.ssh/authorized_keys\", vfs.handle.files)"},{"line_number":112,"context_line":"        self.assertEqual(vfs.handle.files[\"/root/.ssh/authorized_keys\"],"},{"line_number":113,"context_line":"                         {\u0027isdir\u0027: False,"},{"line_number":114,"context_line":"                          \u0027content\u0027: \"Hello World\\n# The following ssh \" +"},{"line_number":115,"context_line":"                                     \"key was injected by Nova\\nmysshkey\\n\","}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_698c2980","line":112,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        diskapi._inject_key_into_fs(\"mysshkey\", vfs)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.assertIn(\"/etc/rc.d/rc.local\", vfs.handle.files)"},{"line_number":133,"context_line":"        self.assertEqual(vfs.handle.files[\"/etc/rc.d/rc.local\"],"},{"line_number":134,"context_line":"                {\u0027isdir\u0027: False,"},{"line_number":135,"context_line":"                 \u0027content\u0027: \"#!/bin/sh\\necho done\\n# Added \""},{"line_number":136,"context_line":"                            \"by Nova to ensure injected ssh keys have \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_09f2bd06","line":133,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        diskapi._inject_net_into_fs(\"mynetconfig\", vfs)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        self.assertIn(\"/etc/network/interfaces\", vfs.handle.files)"},{"line_number":152,"context_line":"        self.assertEqual(vfs.handle.files[\"/etc/network/interfaces\"],"},{"line_number":153,"context_line":"                         {\u0027content\u0027: \u0027mynetconfig\u0027,"},{"line_number":154,"context_line":"                          \u0027gid\u0027: 100,"},{"line_number":155,"context_line":"                          \u0027isdir\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_e9f659f8","line":152,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        diskapi._inject_admin_password_into_fs(\"123456\", vfs)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        self.assertEqual(vfs.handle.files[\"/etc/passwd\"],"},{"line_number":199,"context_line":"                         {\u0027content\u0027: \"root:x:0:0:root:/root:/bin/bash\\n\" +"},{"line_number":200,"context_line":"                                     \"bin:x:1:1:bin:/bin:/sbin/nologin\\n\" +"},{"line_number":201,"context_line":"                                     \"daemon:x:2:2:daemon:/sbin:\" +"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_89e6ad42","line":198,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        # if the encrypted password is only 13 characters long, then"},{"line_number":210,"context_line":"        # nova.virt.disk.api:_set_password fell back to DES."},{"line_number":211,"context_line":"        if len(shadow[\u0027content\u0027]) \u003d\u003d 91:"},{"line_number":212,"context_line":"            self.assertEqual(shadow,"},{"line_number":213,"context_line":"                             {\u0027content\u0027: \"root:12tir.zIbWQ3c\" +"},{"line_number":214,"context_line":"                                         \":14917:0:99999:7:::\\n\" +"},{"line_number":215,"context_line":"                                         \"bin:*:14495:0:99999:7:::\\n\" +"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_09c91dad","line":212,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                              \u0027mode\u0027: 0o700,"},{"line_number":220,"context_line":"                              \u0027uid\u0027: 100})"},{"line_number":221,"context_line":"        else:"},{"line_number":222,"context_line":"            self.assertEqual(shadow,"},{"line_number":223,"context_line":"                             {\u0027content\u0027: \"root:$1$12345678$a4ge4d5iJ5vw\" +"},{"line_number":224,"context_line":"                                         \"vbFS88TEN0:14917:0:99999:7:::\\n\" +"},{"line_number":225,"context_line":"                                         \"bin:*:14495:0:99999:7:::\\n\" +"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_e9cdb9b8","line":222,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        self.assertIn(\"/path/to/not/exists\", vfs.handle.files)"},{"line_number":242,"context_line":"        shadow_dir \u003d vfs.handle.files[\"/path/to/not/exists\"]"},{"line_number":243,"context_line":"        self.assertEqual(shadow_dir,"},{"line_number":244,"context_line":"                         {\"isdir\": True,"},{"line_number":245,"context_line":"                          \"gid\": 0,"},{"line_number":246,"context_line":"                          \"uid\": 0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_29c0617c","line":243,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                          \"mode\": 0o744})"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        shadow_file \u003d vfs.handle.files[\"/path/to/not/exists/file\"]"},{"line_number":250,"context_line":"        self.assertEqual(shadow_file,"},{"line_number":251,"context_line":"                         {\"isdir\": False,"},{"line_number":252,"context_line":"                          \"content\": \"inject-file-contents\","},{"line_number":253,"context_line":"                          \"gid\": 100,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_89bd0d05","line":250,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"}],"nova/tests/unit/virt/disk/vfs/test_guestfs.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"df454fb31a37a2d4a7b68787ddf4a77f290f6de0","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.assertIsNone(vfs.handle.backend_settings)"},{"line_number":113,"context_line":"        with mock.patch.object(vfs.handle, \u0027inspect_os\u0027, return_value\u003d[]):"},{"line_number":114,"context_line":"            self.assertRaises(exception.NovaException, vfs.setup_os_inspect)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_appliance_setup_inspect_multi_boots_raises(self):"},{"line_number":117,"context_line":"        vfs \u003d vfsimpl.VFSGuestFS(self.qcowfile,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a77a97e_b9cad06c","line":114,"range":{"start_line":114,"start_character":75,"end_line":114,"end_character":76},"updated":"2016-11-16 06:45:20.000000000","message":"we should check call also with assert_called_once_with","commit_id":"26f3cc324486778352c064171dc7a070124fac92"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a100c509cf606eac06bd71f7c5ce8f11098ef05b","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.assertIsNone(vfs.handle.backend_settings)"},{"line_number":113,"context_line":"        with mock.patch.object(vfs.handle, \u0027inspect_os\u0027, return_value\u003d[]):"},{"line_number":114,"context_line":"            self.assertRaises(exception.NovaException, vfs.setup_os_inspect)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_appliance_setup_inspect_multi_boots_raises(self):"},{"line_number":117,"context_line":"        vfs \u003d vfsimpl.VFSGuestFS(self.qcowfile,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a77a97e_b1b5c732","line":114,"range":{"start_line":114,"start_character":75,"end_line":114,"end_character":76},"in_reply_to":"7a77a97e_b9cad06c","updated":"2016-11-21 11:41:55.000000000","message":"Done","commit_id":"26f3cc324486778352c064171dc7a070124fac92"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"df454fb31a37a2d4a7b68787ddf4a77f290f6de0","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        with mock.patch.object(vfs.handle, \u0027inspect_os\u0027,"},{"line_number":125,"context_line":"                               return_value\u003d[\u0027fake1\u0027, \u0027fake2\u0027]):"},{"line_number":126,"context_line":"            self.assertRaises(exception.NovaException, vfs.setup_os_inspect)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def test_appliance_setup_static_nopart(self):"},{"line_number":129,"context_line":"        vfs \u003d vfsimpl.VFSGuestFS(self.qcowfile,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a77a97e_d9c94c7a","line":126,"range":{"start_line":126,"start_character":75,"end_line":126,"end_character":76},"updated":"2016-11-16 06:45:20.000000000","message":"ditto","commit_id":"26f3cc324486778352c064171dc7a070124fac92"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a100c509cf606eac06bd71f7c5ce8f11098ef05b","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        with mock.patch.object(vfs.handle, \u0027inspect_os\u0027,"},{"line_number":125,"context_line":"                               return_value\u003d[\u0027fake1\u0027, \u0027fake2\u0027]):"},{"line_number":126,"context_line":"            self.assertRaises(exception.NovaException, vfs.setup_os_inspect)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def test_appliance_setup_static_nopart(self):"},{"line_number":129,"context_line":"        vfs \u003d vfsimpl.VFSGuestFS(self.qcowfile,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a77a97e_d180834c","line":126,"range":{"start_line":126,"start_character":75,"end_line":126,"end_character":76},"in_reply_to":"7a77a97e_d9c94c7a","updated":"2016-11-21 11:41:55.000000000","message":"Done","commit_id":"26f3cc324486778352c064171dc7a070124fac92"}],"nova/tests/unit/virt/disk/vfs/test_localfs.py":[{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        vfs \u003d vfsimpl.VFSLocalFS(self.rawfile)"},{"line_number":143,"context_line":"        vfs.imgdir \u003d \"/foo\""},{"line_number":144,"context_line":"        ret \u003d vfs._canonical_path(\u0027etc/something.conf\u0027)"},{"line_number":145,"context_line":"        self.assertEqual(ret, \u0027/foo/etc/something.conf\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_check_unsafe_path(self):"},{"line_number":148,"context_line":"        if not tests_utils.coreutils_readlink_available():"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_a9d61125","line":145,"updated":"2016-06-02 09:34:01.000000000","message":"Wrong order of params for assertEqual(). Please fix that.","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        vfs.make_path(\"/some/dir\")"},{"line_number":175,"context_line":"        vfs.make_path(\"/other/dir\")"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        self.assertEqual(dirs,"},{"line_number":178,"context_line":"                         [\"/scratch/dir/some/dir\", \"/scratch/dir/other/dir\"]),"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_49e68517","line":177,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                         [\"/scratch/dir/some/dir\", \"/scratch/dir/other/dir\"]),"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":181,"context_line":"        self.assertEqual(commands,"},{"line_number":182,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":183,"context_line":"                                    \u0027/scratch/dir/some/dir\u0027),"},{"line_number":184,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_89f06dcb","line":181,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        vfs.append_file(\"/some/file\", \" Goodbye\")"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.assertIn(\"/scratch/dir/some/file\", files)"},{"line_number":210,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"content\"],"},{"line_number":211,"context_line":"                         \"Hello World Goodbye\")"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_29ca216f","line":210,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                         \"Hello World Goodbye\")"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":214,"context_line":"        self.assertEqual(commands,"},{"line_number":215,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":216,"context_line":"                                    \u0027/scratch/dir/some/file\u0027),"},{"line_number":217,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_09aabd85","line":214,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        vfs.replace_file(\"/some/file\", \"Goodbye\")"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self.assertIn(\"/scratch/dir/some/file\", files)"},{"line_number":236,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"content\"],"},{"line_number":237,"context_line":"                         \"Goodbye\")"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_e9ae5997","line":236,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                         \"Goodbye\")"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":240,"context_line":"        self.assertEqual(commands,"},{"line_number":241,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":242,"context_line":"                                    \u0027/scratch/dir/some/file\u0027),"},{"line_number":243,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_899ead61","line":240,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        vfs \u003d vfsimpl.VFSLocalFS(self.qcowfile)"},{"line_number":257,"context_line":"        vfs.imgdir \u003d \"/scratch/dir\""},{"line_number":258,"context_line":"        self.assertEqual(vfs.read_file(\"/some/file\"), \"Hello World\")"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":261,"context_line":"        self.assertEqual(commands,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_c986f515","line":258,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        self.assertEqual(vfs.read_file(\"/some/file\"), \"Hello World\")"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":261,"context_line":"        self.assertEqual(commands,"},{"line_number":262,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":263,"context_line":"                                    \u0027/scratch/dir/some/file\u0027),"},{"line_number":264,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_a98bb11d","line":261,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        self.assertFalse(vfs.has_file(\"/other/file\"))"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":284,"context_line":"        self.assertEqual(commands,"},{"line_number":285,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":286,"context_line":"                                    \u0027/scratch/dir/some/file\u0027),"},{"line_number":287,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_09811dfc","line":284,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        vfs.read_file(\"/some/file\")"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        vfs.set_permissions(\"/some/file\", 0o777)"},{"line_number":321,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"mode\"], 0o777)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":324,"context_line":"        self.assertEqual(commands,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_497b252a","line":321,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"mode\"], 0o777)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":324,"context_line":"        self.assertEqual(commands,"},{"line_number":325,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":326,"context_line":"                                    \u0027/scratch/dir/some/file\u0027),"},{"line_number":327,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_89750d34","line":324,"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cf9b09344c1f2c6b43cc2ceaeab58b1bee420a6c","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        vfs.imgdir \u003d \"/scratch/dir\""},{"line_number":349,"context_line":"        vfs.read_file(\"/some/file\")"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"uid\"], 100)"},{"line_number":352,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"gid\"], 100)"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        vfs.set_ownership(\"/some/file\", \"fred\", None)"},{"line_number":355,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"uid\"], 105)"},{"line_number":356,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"gid\"], 100)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        vfs.set_ownership(\"/some/file\", None, \"users\")"},{"line_number":359,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"uid\"], 105)"},{"line_number":360,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"gid\"], 500)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        vfs.set_ownership(\"/some/file\", \"joe\", \"admins\")"},{"line_number":363,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"uid\"], 110)"},{"line_number":364,"context_line":"        self.assertEqual(files[\"/scratch/dir/some/file\"][\"gid\"], 600)"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        root_helper \u003d nova.utils.get_root_helper()"},{"line_number":367,"context_line":"        self.assertEqual(commands,"},{"line_number":368,"context_line":"                         [{\u0027args\u0027: (\u0027readlink\u0027, \u0027-nm\u0027,"},{"line_number":369,"context_line":"                                    \u0027/scratch/dir/some/file\u0027),"},{"line_number":370,"context_line":"                           \u0027kwargs\u0027: {\u0027run_as_root\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_299fc151","line":367,"range":{"start_line":351,"start_character":0,"end_line":367,"end_character":34},"updated":"2016-06-02 09:34:01.000000000","message":"Ditto","commit_id":"9d262c6748ab6f917d398ec58437d70a0e46a25f"}]}
