)]}'
{"nova/hacking/checks.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"14255730a1a457db3265d56c0756930bceac40fd","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    # Ignore things we mis-detect as virt drivers in the regex"},{"line_number":197,"context_line":"    if driver in [\"test_virt_drivers\", \"driver\", \"firewall\","},{"line_number":198,"context_line":"                  \"disk\", \"api\", \"imagecache\", \"cpu\", \"hardware\","},{"line_number":199,"context_line":"                  \"image\"]:"},{"line_number":200,"context_line":"        return None"},{"line_number":201,"context_line":"    return driver"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_61d318d6","line":199,"updated":"2015-05-21 16:10:13.000000000","message":"hmmm how come this is not needed in the first patch?","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"679d131fa7e5b554a7c626619d81f0ad55c3bacb","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    # Ignore things we mis-detect as virt drivers in the regex"},{"line_number":197,"context_line":"    if driver in [\"test_virt_drivers\", \"driver\", \"firewall\","},{"line_number":198,"context_line":"                  \"disk\", \"api\", \"imagecache\", \"cpu\", \"hardware\","},{"line_number":199,"context_line":"                  \"image\"]:"},{"line_number":200,"context_line":"        return None"},{"line_number":201,"context_line":"    return driver"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_846ce208","line":199,"in_reply_to":"7a016987_61d318d6","updated":"2015-05-21 16:39:20.000000000","message":"Nothing was importing the new files in the first patch.","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"}],"nova/tests/unit/virt/disk/test_inject.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"470b38e5812ede1380c6be9d4a4fa4a356cf8ea4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def test_inject_data_key(self):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        vfs \u003d vfsguestfs.VFSGuestFS("},{"line_number":58,"context_line":"            imgmodel.LocalFileImage(\"/some/file\", imgmodel.FORMAT_QCOW2))"},{"line_number":59,"context_line":"        vfs.setup()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        diskapi._inject_key_into_fs(\"mysshkey\", vfs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_f4b31208","line":58,"updated":"2014-11-19 12:56:52.000000000","message":"Could you move the common code to the setUp of the test class?","commit_id":"2bceb5c77d5988d6da22cca89b8d07c316bd51c5"}],"nova/tests/unit/virt/disk/vfs/test_guestfs.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"470b38e5812ede1380c6be9d4a4fa4a356cf8ea4","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        self._do_test_appliance_setup_inspect(image, drives, True)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_appliance_setup_inspect_no_root_raises(self):"},{"line_number":107,"context_line":"        vfs \u003d vfsimpl.VFSGuestFS("},{"line_number":108,"context_line":"            imgmodel.LocalFileImage(\"/dummy.qcow2\","},{"line_number":109,"context_line":"                                    imgmodel.FORMAT_QCOW2),"},{"line_number":110,"context_line":"            partition\u003d-1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_3494ba43","line":107,"updated":"2014-11-19 12:56:52.000000000","message":"Could you move the common code to the setUp?","commit_id":"2bceb5c77d5988d6da22cca89b8d07c316bd51c5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d5ee1def70a279114f727ce2709450cc1279edea","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                                               imgmodel.FORMAT_RAW)"},{"line_number":36,"context_line":"        self.lvmfile \u003d imgmodel.LocalBlockImage(\"/dev/volgroup/myvol\")"},{"line_number":37,"context_line":"        self.rbdfile \u003d imgmodel.RBDImage(\"myvol\", \"mypool\","},{"line_number":38,"context_line":"                                         \"cthulu\","},{"line_number":39,"context_line":"                                         \"arrrrrgh\","},{"line_number":40,"context_line":"                                         [\"server1:123\", \"server2:123\"])"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3afb71cf_68dbc27c","line":38,"updated":"2015-06-11 12:41:40.000000000","message":"Hmm, interesting. There\u0027s another h in Cthulhu, BTW ;)","commit_id":"356e0651a676e3c43983a6f2848a79975f609f34"}],"nova/tests/unit/virt/disk/vfs/test_localfs.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"470b38e5812ede1380c6be9d4a4fa4a356cf8ea4","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        self.stubs.Set(processutils, \u0027execute\u0027, fake_execute)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        vfs \u003d vfsimpl.VFSLocalFS("},{"line_number":200,"context_line":"            imgmodel.LocalFileImage(\"/dummy.qcow2\","},{"line_number":201,"context_line":"                                    imgmodel.FORMAT_QCOW2))"},{"line_number":202,"context_line":"        vfs.imgdir \u003d \"/scratch/dir\""},{"line_number":203,"context_line":"        vfs.append_file(\"/some/file\", \" Goodbye\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_f498726c","line":200,"updated":"2014-11-19 12:56:52.000000000","message":"Could you move the common code to the setUp?","commit_id":"2bceb5c77d5988d6da22cca89b8d07c316bd51c5"}],"nova/virt/disk/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"169a51a423283f0e10226a91645201dea259cd81","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"def is_image_partitionless(image, use_cow\u003dFalse):"},{"line_number":211,"context_line":"    \"\"\"Check whether we can resize contained file system."},{"line_number":212,"context_line":"    :param image: the local file path"},{"line_number":213,"context_line":"    :param use_cow: whether the image is in qcow2 format"},{"line_number":214,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_4d69b28b","line":211,"updated":"2015-01-12 13:12:46.000000000","message":"new line","commit_id":"6a6a48e19b71062752ddbd7739efea2432903184"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d5ee1def70a279114f727ce2709450cc1279edea","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    :param files: the files to copy into the image"},{"line_number":395,"context_line":"    :param partition: the partition number to access"},{"line_number":396,"context_line":"    :param use_cow: whether the image is in qcow2 format"},{"line_number":397,"context_line":"    :param mandatory: the list of parameters which must not fail to inject"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    If an item name is not specified in the MANDATORY iterable, then a warning"},{"line_number":400,"context_line":"    is logged on failure to inject that item, rather than raising an exception."}],"source_content_type":"text/x-python","patch_set":27,"id":"3afb71cf_284f0a35","line":397,"updated":"2015-06-11 12:41:40.000000000","message":"Thank you for docstrings!","commit_id":"356e0651a676e3c43983a6f2848a79975f609f34"}],"nova/virt/disk/vfs/guestfs.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"470b38e5812ede1380c6be9d4a4fa4a356cf8ea4","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            elif isinstance(self.image, imgmodel.LocalBlockImage):"},{"line_number":208,"context_line":"                self.handle.add_drive_opts(self.image.path,"},{"line_number":209,"context_line":"                                           format\u003dimgmodel.FORMAT_RAW)"},{"line_number":210,"context_line":"            elif isinstance(self.image, imgmodel.RBDImage):"},{"line_number":211,"context_line":"                self.handle.add_drive_opts(\"%s/%s\" % (self.image.pool,"},{"line_number":212,"context_line":"                                                      self.image.name),"},{"line_number":213,"context_line":"                                           protocol\u003d\"rbd\","}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_f434f24b","line":210,"updated":"2014-11-19 12:56:52.000000000","message":"For me it seems that this code can be moved inside every imgmodel class instead of using isinstance calls","commit_id":"2bceb5c77d5988d6da22cca89b8d07c316bd51c5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"cd45de84a315260d8c895a710106ad9c25b03e10","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                           format\u003dself.image.format)"},{"line_number":208,"context_line":"            elif isinstance(self.image, imgmodel.LocalBlockImage):"},{"line_number":209,"context_line":"                self.handle.add_drive_opts(self.image.path,"},{"line_number":210,"context_line":"                                           format\u003dimgmodel.FORMAT_RAW)"},{"line_number":211,"context_line":"            elif isinstance(self.image, imgmodel.RBDImage):"},{"line_number":212,"context_line":"                self.handle.add_drive_opts(\"%s/%s\" % (self.image.pool,"},{"line_number":213,"context_line":"                                                      self.image.name),"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_c4089adc","line":210,"updated":"2015-05-21 16:34:05.000000000","message":"Hmmm I wonder why this stuff isn\u0027t an attribute on the class itself even for LocalBlockImage","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fbf9911fa24b1ad4299c8bd5fa54ab1d70cf818e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                           format\u003dself.image.format)"},{"line_number":208,"context_line":"            elif isinstance(self.image, imgmodel.LocalBlockImage):"},{"line_number":209,"context_line":"                self.handle.add_drive_opts(self.image.path,"},{"line_number":210,"context_line":"                                           format\u003dimgmodel.FORMAT_RAW)"},{"line_number":211,"context_line":"            elif isinstance(self.image, imgmodel.RBDImage):"},{"line_number":212,"context_line":"                self.handle.add_drive_opts(\"%s/%s\" % (self.image.pool,"},{"line_number":213,"context_line":"                                                      self.image.name),"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_8743c46b","line":210,"in_reply_to":"7a016987_a705a011","updated":"2015-05-21 17:17:38.000000000","message":"See comment on the first patch in the series","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"679d131fa7e5b554a7c626619d81f0ad55c3bacb","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                           format\u003dself.image.format)"},{"line_number":208,"context_line":"            elif isinstance(self.image, imgmodel.LocalBlockImage):"},{"line_number":209,"context_line":"                self.handle.add_drive_opts(self.image.path,"},{"line_number":210,"context_line":"                                           format\u003dimgmodel.FORMAT_RAW)"},{"line_number":211,"context_line":"            elif isinstance(self.image, imgmodel.RBDImage):"},{"line_number":212,"context_line":"                self.handle.add_drive_opts(\"%s/%s\" % (self.image.pool,"},{"line_number":213,"context_line":"                                                      self.image.name),"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_a705a011","line":210,"in_reply_to":"7a016987_c4089adc","updated":"2015-05-21 16:39:20.000000000","message":"Now sure what you mean here ? Which stuff do you expect to be an attribute on the class ?","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"}],"nova/virt/disk/vfs/localfs.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"cd45de84a315260d8c895a710106ad9c25b03e10","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def setup(self, mount\u003dTrue):"},{"line_number":70,"context_line":"        self.imgdir \u003d tempfile.mkdtemp(prefix\u003d\"openstack-vfs-localfs\")"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            mnt \u003d mount_api.Mount.instance_for_format(self.image,"},{"line_number":73,"context_line":"                                                      self.imgdir,"},{"line_number":74,"context_line":"                                                      self.partition)"},{"line_number":75,"context_line":"            if mount:"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_044912d0","line":72,"updated":"2015-05-21 16:34:05.000000000","message":"So this will now blow up for RBD for example (according to the previous patch) even though it could work in theory. Localfs is obviously meant to be used for non-prod use cases but rbd would still not work without guestfs installed.\n\nThat\u0027s just user hostility IMHO.\n\nI don\u0027t want to block this on it and asking you to implement the mount for RBD seems like a waste of time. Not sure what is the reason for not requiring libguestfs at all times, but that would be the best option I think.\n\nSo the current situation is not really a reason to block the series, but not amazing either :/","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"679d131fa7e5b554a7c626619d81f0ad55c3bacb","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def setup(self, mount\u003dTrue):"},{"line_number":70,"context_line":"        self.imgdir \u003d tempfile.mkdtemp(prefix\u003d\"openstack-vfs-localfs\")"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            mnt \u003d mount_api.Mount.instance_for_format(self.image,"},{"line_number":73,"context_line":"                                                      self.imgdir,"},{"line_number":74,"context_line":"                                                      self.partition)"},{"line_number":75,"context_line":"            if mount:"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_8411825f","line":72,"in_reply_to":"7a016987_044912d0","updated":"2015-05-21 16:39:20.000000000","message":"The localfs impl is needed for Xen and basically any non-KVM/QEMU libvirt driver, as libguestfs required KVM/QEMU.\n\nWe could raise a clear exception here though, so users don\u0027t see a nasty crash.","commit_id":"891f277c8b431bc2366a6bac2fdc1fd2e61e2c81"}],"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"4726ba91672d5ae6f194ebea33be85b550469dba","unresolved":false,"context_lines":[{"line_number":2468,"context_line":"                    # the mount/unmount logic here either, when the"},{"line_number":2469,"context_line":"                    # VFSLocalFS impl has direct support for mount"},{"line_number":2470,"context_line":"                    # and unmount handling if it were passed a"},{"line_number":2471,"context_line":"                    # non-None filename"},{"line_number":2472,"context_line":"                    vfs \u003d vfsimpl.VFSLocalFS("},{"line_number":2473,"context_line":"                        imgmodel.LocalFileImage(None, imgmodel.FORMAT_RAW),"},{"line_number":2474,"context_line":"                        imgdir\u003dtmpdir)"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba7be1f8_3f455bb3","line":2471,"updated":"2015-02-23 02:25:36.000000000","message":"I\u0027m not certain what this comment means.  I *think* you\u0027re saying:\nPassing in a None filename is rather dubious. We shouldn\u0027t be re-implementing the mount/unmount logic here either.  Instead we should teach VFSLocalFS to do the mount/unmount itself when passed a non-None filename.","commit_id":"71e6518fad338b5ce04c216a0bd29762e7547dfa"}]}
