)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"810bf5624ea6b878d4a6159e213a00ceddd96dd8","unresolved":false,"context_lines":[{"line_number":3329,"context_line":"        image \u003d self.image_backend.image(instance,"},{"line_number":3330,"context_line":"                                         name,"},{"line_number":3331,"context_line":"                                         image_type)"},{"line_number":3332,"context_line":"        if(name \u003d\u003d \u0027disk.config\u0027 and image_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":3333,"context_line":"                not image.check_image_exists()):"},{"line_number":3334,"context_line":"            # This is likely an older config drive that has not been migrated"},{"line_number":3335,"context_line":"            # to rbd yet. Try to fall back on \u0027raw\u0027 image type."}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6107f61c","line":3332,"range":{"start_line":3332,"start_character":10,"end_line":3332,"end_character":11},"updated":"2016-05-18 17:27:43.000000000","message":"s/(/ (/","commit_id":"df3e1ae26d1c8c85eb773421a2b72e14cfacfa25"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"0593cdf686269c56b8e5ec954880d661f5b5d992","unresolved":false,"context_lines":[{"line_number":3330,"context_line":"                                         name,"},{"line_number":3331,"context_line":"                                         image_type)"},{"line_number":3332,"context_line":"        if (name \u003d\u003d \u0027disk.config\u0027 and image_type \u003d\u003d \u0027rbd\u0027 and"},{"line_number":3333,"context_line":"                not image.check_image_exists()):"},{"line_number":3334,"context_line":"            # This is likely an older config drive that has not been migrated"},{"line_number":3335,"context_line":"            # to rbd yet. Try to fall back on \u0027raw\u0027 image type."},{"line_number":3336,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_35af182d","line":3333,"updated":"2016-06-02 08:34:57.000000000","message":"This now requires at least the minimal change I mention below check_image_exists-\u003eexists, because that change merged.\n\nI\u0027m ok with either migrate now or migrate later.","commit_id":"e1ce3c15efd4bb99cd54b30bbffe9f9b236c1266"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"df7f4cf49c7c5e5668b27c2b5b903a822f941394","unresolved":false,"context_lines":[{"line_number":3335,"context_line":"            # to rbd yet. Try to fall back on \u0027raw\u0027 image type."},{"line_number":3336,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3337,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3338,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027raw\u0027)"},{"line_number":3339,"context_line":"        disk_info \u003d disk_mapping[name]"},{"line_number":3340,"context_line":"        return image.libvirt_info(disk_info[\u0027bus\u0027],"},{"line_number":3341,"context_line":"                                  disk_info[\u0027dev\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7b14164c","line":3338,"updated":"2016-05-23 10:23:50.000000000","message":"I really want to put this in imagebackend.Backend.image(), but that\u0027s messy right now due to the way we create config disks. Lets leave it here for now and we\u0027ll move it when we do the other cleanup.\n\nHowever, why not just do the migration now? It\u0027s pretty simple, should be something like:\n\nflat \u003d self.image_backend.image(instance, name, \u0027flat\u0027)\nif flat.exists():\n  image.import_file(instance, flat.path, name)\n  os.unlink(flat.path)\n\nNote that the check_image_exists() -\u003e exists() change depends on https://review.openstack.org/#/c/270998/, which I need to cleanup a bit but should hopefully merge before too long. Up to you whether to go before or after that. If you\u0027re targetting backports I\u0027d guess before, and also continue to use \u0027raw\u0027 instead of \u0027flat\u0027 above.\n\nN.B. Potential wart with moving the config disk as described above: live migration. This would be called from post_live_migration_at_destination(), in which case we\u0027d be unlinking a config disk which is in use by qemu. I don\u0027t actually think this would be a problem in practise because the running qemu would continue to use the deleted file, and if you rebooted it, it would get the copy from rbd.","commit_id":"e1ce3c15efd4bb99cd54b30bbffe9f9b236c1266"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a37280ebb2634dc79790bff02d80d218734014b8","unresolved":false,"context_lines":[{"line_number":3335,"context_line":"            # to rbd yet. Try to fall back on \u0027raw\u0027 image type."},{"line_number":3336,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3337,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3338,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027raw\u0027)"},{"line_number":3339,"context_line":"        disk_info \u003d disk_mapping[name]"},{"line_number":3340,"context_line":"        return image.libvirt_info(disk_info[\u0027bus\u0027],"},{"line_number":3341,"context_line":"                                  disk_info[\u0027dev\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_65ad85e8","line":3338,"in_reply_to":"bab6814e_7b14164c","updated":"2016-05-23 14:10:32.000000000","message":"I was kinda thinking we\u0027d put the minimal fix in so that we can backport that, and then land a migration patch in master. Seems safer to let that bake there a bit instead of pushing something to the stable people that will start moving things.","commit_id":"e1ce3c15efd4bb99cd54b30bbffe9f9b236c1266"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c695cb336f645ce22c19cf918540b17737d1af4","unresolved":false,"context_lines":[{"line_number":3333,"context_line":"            # to rbd yet. Try to fall back on \u0027flat\u0027 image type."},{"line_number":3334,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3335,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"        disk_info \u003d disk_mapping[name]"},{"line_number":3338,"context_line":"        return image.libvirt_info(disk_info[\u0027bus\u0027],"},{"line_number":3339,"context_line":"                                  disk_info[\u0027dev\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_a3c0c97d","line":3336,"updated":"2016-06-02 20:12:17.000000000","message":"I\u0027d probably debug log something in this case in case it still fails, because it could be weird.","commit_id":"a9bf83006f0147465d2efdd1643fbb9681e2022c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84a541c514430f2881b6b366981b21ae4194bc1a","unresolved":false,"context_lines":[{"line_number":3333,"context_line":"            # to rbd yet. Try to fall back on \u0027flat\u0027 image type."},{"line_number":3334,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3335,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"        disk_info \u003d disk_mapping[name]"},{"line_number":3338,"context_line":"        return image.libvirt_info(disk_info[\u0027bus\u0027],"},{"line_number":3339,"context_line":"                                  disk_info[\u0027dev\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_192ae27e","line":3336,"in_reply_to":"9abb7d3a_a3c0c97d","updated":"2016-06-02 20:47:05.000000000","message":"Done","commit_id":"a9bf83006f0147465d2efdd1643fbb9681e2022c"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ef965da13cc8047af336423f4b6f07d824526954","unresolved":false,"context_lines":[{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"            if not image.exists():"},{"line_number":3338,"context_line":"                LOG.debug(\u0027Config drive not found in RBD or the instance \u0027"},{"line_number":3339,"context_line":"                          \u0027directory\u0027, instance\u003dinstance)"},{"line_number":3340,"context_line":"        disk_info \u003d disk_mapping[name]"},{"line_number":3341,"context_line":"        return image.libvirt_info(disk_info[\u0027bus\u0027],"},{"line_number":3342,"context_line":"                                  disk_info[\u0027dev\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_46574f02","line":3339,"updated":"2016-06-03 09:03:45.000000000","message":"I don\u0027t think this is what Matt meant. I think he was talking about an unconditional debug message here to provide hints in case \u0027config drive is in a legacy place\u0027 produces weirdness later. If it doesn\u0027t exist at all we\u0027re going to write a libvirt config pointing at a non-existent location and the guest isn\u0027t going to start at all. We\u0027d be as well raising an exception, but that would apply equally to all disks. (I\u0027m not suggesting you do that.)","commit_id":"f73ea24fc72ee9357ecc1e64b37dcaf51410aa99"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"427d9eecc4cf793c3c5056b5fb9b9e4bc0beaeff","unresolved":false,"context_lines":[{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"            if not image.exists():"},{"line_number":3338,"context_line":"                LOG.debug(\u0027Config drive not found in RBD or the instance \u0027"},{"line_number":3339,"context_line":"                          \u0027directory\u0027, instance\u003dinstance)"},{"line_number":3340,"context_line":"        disk_info \u003d disk_mapping[name]"},{"line_number":3341,"context_line":"        return image.libvirt_info(disk_info[\u0027bus\u0027],"},{"line_number":3342,"context_line":"                                  disk_info[\u0027dev\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_2cff73ab","line":3339,"in_reply_to":"9abb7d3a_46574f02","updated":"2016-06-03 15:21:23.000000000","message":"Oops, thanks. I\u0027ll change it to an unconditional message","commit_id":"f73ea24fc72ee9357ecc1e64b37dcaf51410aa99"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fa273fe1d5dc565b958eabc7f33409bbfc84e7af","unresolved":false,"context_lines":[{"line_number":3333,"context_line":"            # to rbd yet. Try to fall back on \u0027flat\u0027 image type."},{"line_number":3334,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3335,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"            LOG.debug(\u0027Config drive not found in RBD, falling back to the \u0027"},{"line_number":3338,"context_line":"                      \u0027instance directory\u0027, instance\u003dinstance)"},{"line_number":3339,"context_line":"        disk_info \u003d disk_mapping[name]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_521b6e1b","line":3336,"range":{"start_line":3336,"start_character":61,"end_line":3336,"end_character":67},"updated":"2016-06-03 15:58:12.000000000","message":"Small note on this - I believe this bug was found when upgrading from kilo to liberty since kilo is now EOL so people are moving up (I think TimeWarner hit this).\n\nI think we intend on backporting this change - and \u0027flat\u0027 didn\u0027t existing the stable branches. So would \u0027default\u0027 be more appropriate so it uses \u0027flat\u0027 in master and \u0027raw\u0027 in stable? I guess we could just adjust that in the backport also and note it as a conflict.","commit_id":"f5c9ebd56075f8eb04f9f0e683f85bacdcd68c38"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"04fb96e7c4f11a14ee2b82146b72c780614f66b9","unresolved":false,"context_lines":[{"line_number":3333,"context_line":"            # to rbd yet. Try to fall back on \u0027flat\u0027 image type."},{"line_number":3334,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3335,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"            LOG.debug(\u0027Config drive not found in RBD, falling back to the \u0027"},{"line_number":3338,"context_line":"                      \u0027instance directory\u0027, instance\u003dinstance)"},{"line_number":3339,"context_line":"        disk_info \u003d disk_mapping[name]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_b2ebba77","line":3336,"range":{"start_line":3336,"start_character":61,"end_line":3336,"end_character":67},"in_reply_to":"9abb7d3a_521b6e1b","updated":"2016-06-03 16:02:33.000000000","message":"Gah, I changed it recently at the same time as the \u0027image.exists()\u0027 change to be more proper with the current code. \u0027raw\u0027 will still work and I probably should have left it that way for the sake of the backport. But at the least we\u0027ll have to s/image.exists()/image.check_image_exists()/ in the backport","commit_id":"f5c9ebd56075f8eb04f9f0e683f85bacdcd68c38"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9667e496b45ddf8481fc0550ffde4757d26ca3f2","unresolved":false,"context_lines":[{"line_number":3333,"context_line":"            # to rbd yet. Try to fall back on \u0027flat\u0027 image type."},{"line_number":3334,"context_line":"            # TODO(melwitt): Add online migration of some sort so we can"},{"line_number":3335,"context_line":"            # remove this fall back once we know all config drives are in rbd."},{"line_number":3336,"context_line":"            image \u003d self.image_backend.image(instance, name, \u0027flat\u0027)"},{"line_number":3337,"context_line":"            LOG.debug(\u0027Config drive not found in RBD, falling back to the \u0027"},{"line_number":3338,"context_line":"                      \u0027instance directory\u0027, instance\u003dinstance)"},{"line_number":3339,"context_line":"        disk_info \u003d disk_mapping[name]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_32734a17","line":3336,"range":{"start_line":3336,"start_character":61,"end_line":3336,"end_character":67},"in_reply_to":"9abb7d3a_521b6e1b","updated":"2016-06-03 16:05:30.000000000","message":"Looking at the image backend code you\u0027d omit the image_type to get the default, which would be cow by default, which isn\u0027t what we want. Specifying \u0027raw\u0027 would work in master too, but goes against the push to use \u0027flat\u0027. So yeah, probably just best to use flat in master and raw in the backport.","commit_id":"f5c9ebd56075f8eb04f9f0e683f85bacdcd68c38"}]}
