)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eacb2ac2a21c6af914e2434b72dbe31f81b6e484","unresolved":false,"context_lines":[{"line_number":7731,"context_line":""},{"line_number":7732,"context_line":""},{"line_number":7733,"context_line":"class _ComputeV4Proxy(object):"},{"line_number":7734,"context_line":"    target \u003d messaging.Target(version\u003d\u00275.0\u0027)"},{"line_number":7735,"context_line":""},{"line_number":7736,"context_line":"    def __init__(self, manager):"},{"line_number":7737,"context_line":"        self.manager \u003d manager"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_1b14e94d","line":7734,"range":{"start_line":7734,"start_character":39,"end_line":7734,"end_character":42},"updated":"2018-02-06 14:53:36.000000000","message":"le whoops","commit_id":"f57066323018beb3cb99269459a102bd6ba51406"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7704563e47b782be11de07f92a5aefd902e2f57","unresolved":false,"context_lines":[{"line_number":2802,"context_line":"    @wrap_instance_fault"},{"line_number":2803,"context_line":"    def rebuild_instance(self, context, instance, orig_image_ref, image_ref,"},{"line_number":2804,"context_line":"                         injected_files, new_pass, orig_sys_metadata,"},{"line_number":2805,"context_line":"                         bdms, recreate, on_shared_storage\u003dNone,"},{"line_number":2806,"context_line":"                         preserve_ephemeral\u003dFalse, migration\u003dNone,"},{"line_number":2807,"context_line":"                         scheduled_node\u003dNone, limits\u003dNone, request_spec\u003dNone):"},{"line_number":2808,"context_line":"        \"\"\"Destroy and re-make this instance."},{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        A \u0027rebuild\u0027 effectively purges all existing data from the system and"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_5fef79af","side":"PARENT","line":2807,"range":{"start_line":2805,"start_character":41,"end_line":2807,"end_character":76},"updated":"2018-02-08 15:43:08.000000000","message":"So the defaults on all of these are removed because the rpc client is always sending a default value? Because something like on_shared_storage is definitely optional. And request_spec didn\u0027t start getting passed until a couple of days ago.","commit_id":"3bb7c8dd61298088e253d6e95a7c26d12f802593"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":2802,"context_line":"    @wrap_instance_fault"},{"line_number":2803,"context_line":"    def rebuild_instance(self, context, instance, orig_image_ref, image_ref,"},{"line_number":2804,"context_line":"                         injected_files, new_pass, orig_sys_metadata,"},{"line_number":2805,"context_line":"                         bdms, recreate, on_shared_storage\u003dNone,"},{"line_number":2806,"context_line":"                         preserve_ephemeral\u003dFalse, migration\u003dNone,"},{"line_number":2807,"context_line":"                         scheduled_node\u003dNone, limits\u003dNone, request_spec\u003dNone):"},{"line_number":2808,"context_line":"        \"\"\"Destroy and re-make this instance."},{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        A \u0027rebuild\u0027 effectively purges all existing data from the system and"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_4a31f6eb","side":"PARENT","line":2807,"range":{"start_line":2805,"start_character":41,"end_line":2807,"end_character":76},"in_reply_to":"3fa0c359_5fef79af","updated":"2018-02-08 17:29:01.000000000","message":"There\u0027s nothing optional on the RPC wire. These get added as optional so that if an older client doesn\u0027t pass it, we will have a default on the server side.\n\nAnd yes, request_spec was added as optional a few days ago in 4.x, but as codified in 5.0, it\u0027s required.","commit_id":"3bb7c8dd61298088e253d6e95a7c26d12f802593"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7704563e47b782be11de07f92a5aefd902e2f57","unresolved":false,"context_lines":[{"line_number":5214,"context_line":"    @reverts_task_state"},{"line_number":5215,"context_line":"    @wrap_instance_fault"},{"line_number":5216,"context_line":"    def reserve_block_device_name(self, context, instance, device,"},{"line_number":5217,"context_line":"                                  volume_id, disk_bus, device_type, tag\u003dNone,"},{"line_number":5218,"context_line":"                                  multiattach\u003dFalse):"},{"line_number":5219,"context_line":"        if (tag and not"},{"line_number":5220,"context_line":"                self.driver.capabilities.get(\u0027supports_tagged_attach_volume\u0027,"},{"line_number":5221,"context_line":"                                             False)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_7f04b54a","side":"PARENT","line":5218,"range":{"start_line":5217,"start_character":68,"end_line":5218,"end_character":53},"updated":"2018-02-08 15:43:08.000000000","message":"I will say that I think this makes it harder to know what the defaults on these are going to be when the defaults are now defined elsewhere. It also likely makes unit tests more of a pain in the ass.","commit_id":"3bb7c8dd61298088e253d6e95a7c26d12f802593"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":5214,"context_line":"    @reverts_task_state"},{"line_number":5215,"context_line":"    @wrap_instance_fault"},{"line_number":5216,"context_line":"    def reserve_block_device_name(self, context, instance, device,"},{"line_number":5217,"context_line":"                                  volume_id, disk_bus, device_type, tag\u003dNone,"},{"line_number":5218,"context_line":"                                  multiattach\u003dFalse):"},{"line_number":5219,"context_line":"        if (tag and not"},{"line_number":5220,"context_line":"                self.driver.capabilities.get(\u0027supports_tagged_attach_volume\u0027,"},{"line_number":5221,"context_line":"                                             False)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_aa70baa6","side":"PARENT","line":5218,"range":{"start_line":5217,"start_character":68,"end_line":5218,"end_character":53},"in_reply_to":"3fa0c359_7f04b54a","updated":"2018-02-08 17:29:01.000000000","message":"It does, but the number of unit tests not passing values for things added two years ago is also pretty scary. We add these things defaulted to None so that we trigger compat code deep in these methods if a thing wasn\u0027t passed. So, when we do that, all existing unit tests end up passing basically the old version of the rpc call because they take all the defaults, which means we trigger code paths that aren\u0027t actually used if everything is current. It\u0027s a pretty big liability.\n\nTBH, I wish we would be as detailed on the server side as we are on the client side when it comes to iterative changes, so that we can actually remove that compat code when it comes time to do this. Otherwise, we have things buried deep in these server methods that still tolerate dict-like instances and such. If we called out all those conversions and defaults at the top of these methods, then we could go hack them out when we bump. Making these all not default forever is a small step in that direction.","commit_id":"3bb7c8dd61298088e253d6e95a7c26d12f802593"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"eddc01b7b7c4aad78106cad1622a1d6e900ca81c","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"},{"line_number":4208,"context_line":"    @wrap_instance_fault"},{"line_number":4209,"context_line":"    def resize_instance(self, context, instance, image,"},{"line_number":4210,"context_line":"                        migration, instance_type, clean_shutdown):"},{"line_number":4211,"context_line":"        \"\"\"Starts the migration of a running instance to another host."},{"line_number":4212,"context_line":""},{"line_number":4213,"context_line":"        This is initiated from the destination host\u0027s ``prep_resize`` routine"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_5931d9eb","line":4210,"updated":"2018-02-08 14:25:30.000000000","message":"nit: I know it would make the diff a little bigger, but it would read better if these param lists were re-wrapped to 79 chars.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"01cec85852ecda3726170e00deb63d447c5eb8a2","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"},{"line_number":4208,"context_line":"    @wrap_instance_fault"},{"line_number":4209,"context_line":"    def resize_instance(self, context, instance, image,"},{"line_number":4210,"context_line":"                        migration, instance_type, clean_shutdown):"},{"line_number":4211,"context_line":"        \"\"\"Starts the migration of a running instance to another host."},{"line_number":4212,"context_line":""},{"line_number":4213,"context_line":"        This is initiated from the destination host\u0027s ``prep_resize`` routine"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_44f49086","line":4210,"in_reply_to":"3fa0c359_5931d9eb","updated":"2018-02-08 14:56:18.000000000","message":"I didn\u0027t do it for diff size so much as sanity when eye-diffing things as I was going through. I think we could go back and re-wrap things like this as a cleanup to make it bisectably different from the functional change.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3741f5548d012fa5fb6873feeefbaee8d6e6a1d","unresolved":false,"context_lines":[{"line_number":7751,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7752,"context_line":""},{"line_number":7753,"context_line":""},{"line_number":7754,"context_line":"class _ComputeV4Proxy(object):"},{"line_number":7755,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.22\u0027)"},{"line_number":7756,"context_line":""},{"line_number":7757,"context_line":"    def __init__(self, manager):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_7f2595c1","line":7754,"range":{"start_line":7754,"start_character":0,"end_line":7754,"end_character":30},"updated":"2018-02-08 15:42:02.000000000","message":"Would it be possible to get a docstring explaining what this is doing, in brief? Would help mightily for those of us that aren\u0027t familiar with all this stuff. I\u0027m guessing this can be dropped after 6.0 or two releases (I\u0027m not sure which)","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"344ba4c5f9c207b3220023d34a100c226ef35e7d","unresolved":false,"context_lines":[{"line_number":7751,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7752,"context_line":""},{"line_number":7753,"context_line":""},{"line_number":7754,"context_line":"class _ComputeV4Proxy(object):"},{"line_number":7755,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.22\u0027)"},{"line_number":7756,"context_line":""},{"line_number":7757,"context_line":"    def __init__(self, manager):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_d144dd1d","line":7754,"range":{"start_line":7754,"start_character":0,"end_line":7754,"end_character":30},"in_reply_to":"3fa0c359_7f2595c1","updated":"2018-02-08 15:44:49.000000000","message":"This will actually get dropped early in Rocky, so a docstring now probably isn\u0027t very helpful. A docs patch on how this is done would probably be more useful long-term, with a link to this patch as an example.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":7751,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7752,"context_line":""},{"line_number":7753,"context_line":""},{"line_number":7754,"context_line":"class _ComputeV4Proxy(object):"},{"line_number":7755,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.22\u0027)"},{"line_number":7756,"context_line":""},{"line_number":7757,"context_line":"    def __init__(self, manager):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_0a88ce6e","line":7754,"range":{"start_line":7754,"start_character":0,"end_line":7754,"end_character":30},"in_reply_to":"3fa0c359_d144dd1d","updated":"2018-02-08 17:29:01.000000000","message":"Sure, but if I\u0027m going to rebase I can throw a \"remove this in rocky\" comment at least.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3741f5548d012fa5fb6873feeefbaee8d6e6a1d","unresolved":false,"context_lines":[{"line_number":7767,"context_line":"                                             port_id, requested_ip, tag)"},{"line_number":7768,"context_line":""},{"line_number":7769,"context_line":"    def check_can_live_migrate_source(self, ctxt, instance, dest_check_data):"},{"line_number":7770,"context_line":"        # TODO(tdurakov): remove dict to object conversion once RPC API version"},{"line_number":7771,"context_line":"        # is bumped to 5.x"},{"line_number":7772,"context_line":"        got_migrate_data_object \u003d isinstance(dest_check_data,"},{"line_number":7773,"context_line":"                                             migrate_data_obj.LiveMigrateData)"},{"line_number":7774,"context_line":"        if not got_migrate_data_object:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_9f20a1b2","line":7771,"range":{"start_line":7770,"start_character":0,"end_line":7771,"end_character":26},"updated":"2018-02-08 15:42:02.000000000","message":"Could you drop this. It\u0027s confusing, given that the RPC version _is_ bumped.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":7767,"context_line":"                                             port_id, requested_ip, tag)"},{"line_number":7768,"context_line":""},{"line_number":7769,"context_line":"    def check_can_live_migrate_source(self, ctxt, instance, dest_check_data):"},{"line_number":7770,"context_line":"        # TODO(tdurakov): remove dict to object conversion once RPC API version"},{"line_number":7771,"context_line":"        # is bumped to 5.x"},{"line_number":7772,"context_line":"        got_migrate_data_object \u003d isinstance(dest_check_data,"},{"line_number":7773,"context_line":"                                             migrate_data_obj.LiveMigrateData)"},{"line_number":7774,"context_line":"        if not got_migrate_data_object:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_0ad68e50","line":7771,"range":{"start_line":7770,"start_character":0,"end_line":7771,"end_character":26},"in_reply_to":"3fa0c359_714b892a","updated":"2018-02-08 17:29:01.000000000","message":"Yeah, I tried to keep all of these are proof that what I was doing above made sense. They all go away in rocky anyway.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"344ba4c5f9c207b3220023d34a100c226ef35e7d","unresolved":false,"context_lines":[{"line_number":7767,"context_line":"                                             port_id, requested_ip, tag)"},{"line_number":7768,"context_line":""},{"line_number":7769,"context_line":"    def check_can_live_migrate_source(self, ctxt, instance, dest_check_data):"},{"line_number":7770,"context_line":"        # TODO(tdurakov): remove dict to object conversion once RPC API version"},{"line_number":7771,"context_line":"        # is bumped to 5.x"},{"line_number":7772,"context_line":"        got_migrate_data_object \u003d isinstance(dest_check_data,"},{"line_number":7773,"context_line":"                                             migrate_data_obj.LiveMigrateData)"},{"line_number":7774,"context_line":"        if not got_migrate_data_object:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_714b892a","line":7771,"range":{"start_line":7770,"start_character":0,"end_line":7771,"end_character":26},"in_reply_to":"3fa0c359_9f20a1b2","updated":"2018-02-08 15:44:49.000000000","message":"I think it\u0027s useful as a marker of what needs to be done here.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7704563e47b782be11de07f92a5aefd902e2f57","unresolved":false,"context_lines":[{"line_number":7795,"context_line":""},{"line_number":7796,"context_line":"    def live_migration(self, context, dest, instance, block_migration,"},{"line_number":7797,"context_line":"                       migration, migrate_data):"},{"line_number":7798,"context_line":"        got_migrate_data_object \u003d isinstance(migrate_data,"},{"line_number":7799,"context_line":"                                             migrate_data_obj.LiveMigrateData)"},{"line_number":7800,"context_line":"        if not got_migrate_data_object:"},{"line_number":7801,"context_line":"            migrate_data \u003d \\"},{"line_number":7802,"context_line":"                migrate_data_obj.LiveMigrateData.detect_implementation("},{"line_number":7803,"context_line":"                    migrate_data)"},{"line_number":7804,"context_line":"        return self.manager.live_migration(context, dest, instance,"},{"line_number":7805,"context_line":"                                           block_migration, migration,"},{"line_number":7806,"context_line":"                                           migrate_data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_df3e29d9","line":7803,"range":{"start_line":7798,"start_character":8,"end_line":7803,"end_character":33},"updated":"2018-02-08 15:43:08.000000000","message":"OK this was all done in _do_live_migration before.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":7795,"context_line":""},{"line_number":7796,"context_line":"    def live_migration(self, context, dest, instance, block_migration,"},{"line_number":7797,"context_line":"                       migration, migrate_data):"},{"line_number":7798,"context_line":"        got_migrate_data_object \u003d isinstance(migrate_data,"},{"line_number":7799,"context_line":"                                             migrate_data_obj.LiveMigrateData)"},{"line_number":7800,"context_line":"        if not got_migrate_data_object:"},{"line_number":7801,"context_line":"            migrate_data \u003d \\"},{"line_number":7802,"context_line":"                migrate_data_obj.LiveMigrateData.detect_implementation("},{"line_number":7803,"context_line":"                    migrate_data)"},{"line_number":7804,"context_line":"        return self.manager.live_migration(context, dest, instance,"},{"line_number":7805,"context_line":"                                           block_migration, migration,"},{"line_number":7806,"context_line":"                                           migrate_data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_6ac6329d","line":7803,"range":{"start_line":7798,"start_character":8,"end_line":7803,"end_character":33},"in_reply_to":"3fa0c359_df3e29d9","updated":"2018-02-08 17:29:01.000000000","message":"Yep. This is just the compat wrapper. Per my comment above, it\u0027d be a lot better if we did this kind of thing explicitly more often.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3741f5548d012fa5fb6873feeefbaee8d6e6a1d","unresolved":false,"context_lines":[{"line_number":7811,"context_line":""},{"line_number":7812,"context_line":"    def pre_live_migration(self, context, instance, block_migration, disk,"},{"line_number":7813,"context_line":"                           migrate_data):"},{"line_number":7814,"context_line":"        # TODO(tdurakov): remove dict to object conversion once RPC API version"},{"line_number":7815,"context_line":"        # is bumped to 5.x"},{"line_number":7816,"context_line":"        got_migrate_data_object \u003d isinstance(migrate_data,"},{"line_number":7817,"context_line":"                                             migrate_data_obj.LiveMigrateData)"},{"line_number":7818,"context_line":"        if not got_migrate_data_object:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_ff1a057b","line":7815,"range":{"start_line":7814,"start_character":0,"end_line":7815,"end_character":26},"updated":"2018-02-08 15:42:02.000000000","message":"Ditto (and for all similar TODOs below)","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7704563e47b782be11de07f92a5aefd902e2f57","unresolved":false,"context_lines":[{"line_number":7913,"context_line":"                               injected_files\u003dNone, requested_networks\u003dNone,"},{"line_number":7914,"context_line":"                               security_groups\u003dNone, block_device_mapping\u003dNone,"},{"line_number":7915,"context_line":"                               node\u003dNone, limits\u003dNone, host_list\u003dNone):"},{"line_number":7916,"context_line":"        if host_list is None:"},{"line_number":7917,"context_line":"            host_list \u003d []"},{"line_number":7918,"context_line":"        return self.manager.build_and_run_instance(context, instance, image,"},{"line_number":7919,"context_line":"                                                   request_spec,"},{"line_number":7920,"context_line":"                                                   filter_properties,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_3192e19f","line":7917,"range":{"start_line":7916,"start_character":8,"end_line":7917,"end_character":26},"updated":"2018-02-08 15:43:08.000000000","message":"Why is this needed?","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":7913,"context_line":"                               injected_files\u003dNone, requested_networks\u003dNone,"},{"line_number":7914,"context_line":"                               security_groups\u003dNone, block_device_mapping\u003dNone,"},{"line_number":7915,"context_line":"                               node\u003dNone, limits\u003dNone, host_list\u003dNone):"},{"line_number":7916,"context_line":"        if host_list is None:"},{"line_number":7917,"context_line":"            host_list \u003d []"},{"line_number":7918,"context_line":"        return self.manager.build_and_run_instance(context, instance, image,"},{"line_number":7919,"context_line":"                                                   request_spec,"},{"line_number":7920,"context_line":"                                                   filter_properties,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_aad19acf","line":7917,"range":{"start_line":7916,"start_character":8,"end_line":7917,"end_character":26},"in_reply_to":"3fa0c359_3192e19f","updated":"2018-02-08 17:29:01.000000000","message":"This was part of a previous attempt at debugging something. I don\u0027t think I need it now, but will check.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7704563e47b782be11de07f92a5aefd902e2f57","unresolved":false,"context_lines":[{"line_number":7938,"context_line":"        Passes straight through to the virtualization driver."},{"line_number":7939,"context_line":""},{"line_number":7940,"context_line":"        \"\"\""},{"line_number":7941,"context_line":"        return self.driver.refresh_security_group_rules(security_group_id)"},{"line_number":7942,"context_line":""},{"line_number":7943,"context_line":"    @object_compat"},{"line_number":7944,"context_line":"    def get_instance_diagnostics(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_91d8957f","line":7941,"range":{"start_line":7941,"start_character":20,"end_line":7941,"end_character":26},"updated":"2018-02-08 15:43:08.000000000","message":"self.manager.driver, yes?","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8b0a649bbb5026dc61e62529e0797c6fb4a342b","unresolved":false,"context_lines":[{"line_number":7938,"context_line":"        Passes straight through to the virtualization driver."},{"line_number":7939,"context_line":""},{"line_number":7940,"context_line":"        \"\"\""},{"line_number":7941,"context_line":"        return self.driver.refresh_security_group_rules(security_group_id)"},{"line_number":7942,"context_line":""},{"line_number":7943,"context_line":"    @object_compat"},{"line_number":7944,"context_line":"    def get_instance_diagnostics(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_8a6ffe90","line":7941,"range":{"start_line":7941,"start_character":20,"end_line":7941,"end_character":26},"in_reply_to":"3fa0c359_91d8957f","updated":"2018-02-08 17:29:01.000000000","message":"Oops, yep.","commit_id":"9844c4c8ff33e71909b40338d289c30f33bfeff8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7a962f62e43b6311870a3d3cf39d28b1696f9ebe","unresolved":false,"context_lines":[{"line_number":6390,"context_line":"            Contains the status we want to set for the migration object"},{"line_number":6391,"context_line":""},{"line_number":6392,"context_line":"        \"\"\""},{"line_number":6393,"context_line":"        # TODO(tdurakov): remove dict to object conversion once RPC API version"},{"line_number":6394,"context_line":"        # is bumped to 5.x"},{"line_number":6395,"context_line":"        if isinstance(migrate_data, dict):"},{"line_number":6396,"context_line":"            migration \u003d migrate_data.pop(\u0027migration\u0027, None)"},{"line_number":6397,"context_line":"            migrate_data \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa0c359_c0a885dc","line":6394,"range":{"start_line":6393,"start_character":8,"end_line":6394,"end_character":26},"updated":"2018-02-08 18:18:22.000000000","message":"What about this one?","commit_id":"359dc9becd47c3dd9deeae5fb80587c26753c57d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4a9bfa6fa060f8b58d57c6c7cad258a5eb15b7a7","unresolved":false,"context_lines":[{"line_number":7911,"context_line":"    def soft_delete_instance(self, context, instance, reservations):"},{"line_number":7912,"context_line":"        return self.manager.soft_delete_instance(context, instance)"},{"line_number":7913,"context_line":""},{"line_number":7914,"context_line":"    def build_and_run_instance(self, context, instance, image, request_spec,"},{"line_number":7915,"context_line":"                               filter_properties, admin_password\u003dNone,"},{"line_number":7916,"context_line":"                               injected_files\u003dNone, requested_networks\u003dNone,"},{"line_number":7917,"context_line":"                               security_groups\u003dNone, block_device_mapping\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa0c359_85092f32","line":7914,"range":{"start_line":7914,"start_character":8,"end_line":7914,"end_character":30},"updated":"2018-02-08 18:15:14.000000000","message":"This is just a straight up pass through now right? What\u0027s the point?","commit_id":"359dc9becd47c3dd9deeae5fb80587c26753c57d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5c228b34207e9a152994e627696de69eaec5ddf0","unresolved":false,"context_lines":[{"line_number":7911,"context_line":"    def soft_delete_instance(self, context, instance, reservations):"},{"line_number":7912,"context_line":"        return self.manager.soft_delete_instance(context, instance)"},{"line_number":7913,"context_line":""},{"line_number":7914,"context_line":"    def build_and_run_instance(self, context, instance, image, request_spec,"},{"line_number":7915,"context_line":"                               filter_properties, admin_password\u003dNone,"},{"line_number":7916,"context_line":"                               injected_files\u003dNone, requested_networks\u003dNone,"},{"line_number":7917,"context_line":"                               security_groups\u003dNone, block_device_mapping\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa0c359_e076e1a4","line":7914,"range":{"start_line":7914,"start_character":8,"end_line":7914,"end_character":30},"in_reply_to":"3fa0c359_85092f32","updated":"2018-02-08 18:16:44.000000000","message":"The defaults. Anything that is an older client that doesn\u0027t pass something on the wire would fail to dispatch the 5.0 handler, but would work with this one.","commit_id":"359dc9becd47c3dd9deeae5fb80587c26753c57d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6e2e51b01645fe08e8a540166c9d5fe336f60ab8","unresolved":false,"context_lines":[{"line_number":6390,"context_line":"            Contains the status we want to set for the migration object"},{"line_number":6391,"context_line":""},{"line_number":6392,"context_line":"        \"\"\""},{"line_number":6393,"context_line":"        if (isinstance(migrate_data, migrate_data_obj.LiveMigrateData) and"},{"line_number":6394,"context_line":"              migrate_data.obj_attr_is_set(\u0027migration\u0027)):"},{"line_number":6395,"context_line":"            migration \u003d migrate_data.migration"},{"line_number":6396,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_fb31b2a3","line":6393,"range":{"start_line":6393,"start_character":12,"end_line":6393,"end_character":70},"updated":"2018-02-08 18:58:06.000000000","message":"This isinstance check can go away I\u0027m pretty sure, unless it\u0027s just checking for None, and if so, we should just say so - but we can clean this up later.","commit_id":"00341ff6e070444d2e07542dbe4e7e1c59a5240b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"036e5001c946c33c4eb24f7091197216fb301d3e","unresolved":false,"context_lines":[{"line_number":7836,"context_line":"        # Code downstream may expect extra_specs to be populated since it"},{"line_number":7837,"context_line":"        # is receiving an object, so lookup the flavor to ensure this."},{"line_number":7838,"context_line":"        if not isinstance(instance_type, objects.Flavor):"},{"line_number":7839,"context_line":"            instance_type \u003d objects.Flavor.get_by_id(context,"},{"line_number":7840,"context_line":"                                                     instance_type[\u0027id\u0027])"},{"line_number":7841,"context_line":"        return self.manager.prep_resize(context, image, instance,"},{"line_number":7842,"context_line":"                                        instance_type,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_7637f7e4","line":7839,"range":{"start_line":7839,"start_character":43,"end_line":7839,"end_character":52},"updated":"2018-02-08 19:32:01.000000000","message":"I just realized that this would be an up-call to the API where the flavors live, which would fail. We likely should have just been converting the dict form of the instance_type to the Flavor object...","commit_id":"00341ff6e070444d2e07542dbe4e7e1c59a5240b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"036e5001c946c33c4eb24f7091197216fb301d3e","unresolved":false,"context_lines":[{"line_number":7868,"context_line":"        # is receiving an object, so lookup the flavor to ensure this."},{"line_number":7869,"context_line":"        if (not instance_type or"},{"line_number":7870,"context_line":"            not isinstance(instance_type, objects.Flavor)):"},{"line_number":7871,"context_line":"            instance_type \u003d objects.Flavor.get_by_id("},{"line_number":7872,"context_line":"                context, migration[\u0027new_instance_type_id\u0027])"},{"line_number":7873,"context_line":"        return self.manager.resize_instance(context, instance, image,"},{"line_number":7874,"context_line":"                                            migration, instance_type,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_f650e70c","line":7871,"range":{"start_line":7871,"start_character":28,"end_line":7871,"end_character":52},"updated":"2018-02-08 19:32:01.000000000","message":"same","commit_id":"00341ff6e070444d2e07542dbe4e7e1c59a5240b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"036e5001c946c33c4eb24f7091197216fb301d3e","unresolved":false,"context_lines":[{"line_number":7911,"context_line":"    # NOTE(hanlind): This and the virt method it calls can be removed in"},{"line_number":7912,"context_line":"    # version 5.0 of the RPC API"},{"line_number":7913,"context_line":"    @wrap_exception()"},{"line_number":7914,"context_line":"    def refresh_security_group_rules(self, context, security_group_id):"},{"line_number":7915,"context_line":"        \"\"\"Tell the virtualization driver to refresh security group rules."},{"line_number":7916,"context_line":""},{"line_number":7917,"context_line":"        Passes straight through to the virtualization driver."}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_7665b7e0","line":7914,"range":{"start_line":7914,"start_character":8,"end_line":7914,"end_character":36},"updated":"2018-02-08 19:32:01.000000000","message":"Looks like this was actually already removed from compute rpcapi?\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/rpcapi.py#L302","commit_id":"00341ff6e070444d2e07542dbe4e7e1c59a5240b"}]}
