)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"57569bfb839f3be3c6b371922694653b59d9fd8b","unresolved":false,"context_lines":[{"line_number":3258,"context_line":"        :param new_pass: password to set on rebuilt instance"},{"line_number":3259,"context_line":"        :param orig_sys_metadata: instance system metadata from pre-rebuild"},{"line_number":3260,"context_line":"        :param bdms: block-device-mappings to use for rebuild"},{"line_number":3261,"context_line":"        :param recreate: True if the instance is being recreated (e.g. the"},{"line_number":3262,"context_line":"            hypervisor it was on failed) - cleanup of old state will be"},{"line_number":3263,"context_line":"            skipped."},{"line_number":3264,"context_line":"        :param on_shared_storage: True if instance files on shared storage."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_2cd6a5c4","line":3261,"range":{"start_line":3261,"start_character":55,"end_line":3261,"end_character":64},"updated":"2019-11-04 20:44:10.000000000","message":"could s/recreated/evacuated/ here too","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"}],"nova/conductor/manager.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6dd3b9b44cfcf0ebbb0491ab5d9fefda93704f59","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"                         preserve_ephemeral\u003dFalse, host\u003dNone,"},{"line_number":1014,"context_line":"                         request_spec\u003dNone):"},{"line_number":1015,"context_line":"        # recreate\u003dTrue means the instance is being evacuated from a failed"},{"line_number":1016,"context_line":"        # host to a new destination host (this host). The \u0027recreate\u0027 variable"},{"line_number":1017,"context_line":"        # name is confusing, so rename it to evacuate here at the top, which"},{"line_number":1018,"context_line":"        # is simpler than renaming a parameter in an RPC versioned method."},{"line_number":1019,"context_line":"        evacuate \u003d recreate"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_2c230507","line":1016,"range":{"start_line":1016,"start_character":41,"end_line":1016,"end_character":52},"updated":"2019-11-04 20:40:43.000000000","message":"x","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aef916b6c138761d548530ba0474ef2d11880a1b","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"                         preserve_ephemeral\u003dFalse, host\u003dNone,"},{"line_number":1014,"context_line":"                         request_spec\u003dNone):"},{"line_number":1015,"context_line":"        # recreate\u003dTrue means the instance is being evacuated from a failed"},{"line_number":1016,"context_line":"        # host to a new destination host (this host). The \u0027recreate\u0027 variable"},{"line_number":1017,"context_line":"        # name is confusing, so rename it to evacuate here at the top, which"},{"line_number":1018,"context_line":"        # is simpler than renaming a parameter in an RPC versioned method."},{"line_number":1019,"context_line":"        evacuate \u003d recreate"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4c3761ff","line":1016,"range":{"start_line":1016,"start_character":41,"end_line":1016,"end_character":52},"in_reply_to":"3fa7e38b_2c230507","updated":"2019-11-04 21:04:12.000000000","message":"Done","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"725bf153823a2e09d9d4109dcad1f7409ea2601d","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # is simpler than renaming a parameter in an RPC versioned method."},{"line_number":1019,"context_line":"        evacuate \u003d recreate"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"        # TODO(efried): split \u0027evacuate_server\u0027 event"},{"line_number":1022,"context_line":"        with compute_utils.EventReporter(context, \u0027rebuild_server\u0027,"},{"line_number":1023,"context_line":"                                         self.host, instance.uuid):"},{"line_number":1024,"context_line":"            node \u003d limits \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_0c8969c8","line":1021,"updated":"2019-11-04 20:51:13.000000000","message":"I\u0027d probably nix this since technically it\u0027s part of the API now with how instance action events work for both rebuild and evacuate actions. Or just change the TODO to a NOTE about why we don\u0027t change it.","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aef916b6c138761d548530ba0474ef2d11880a1b","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # is simpler than renaming a parameter in an RPC versioned method."},{"line_number":1019,"context_line":"        evacuate \u003d recreate"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"        # TODO(efried): split \u0027evacuate_server\u0027 event"},{"line_number":1022,"context_line":"        with compute_utils.EventReporter(context, \u0027rebuild_server\u0027,"},{"line_number":1023,"context_line":"                                         self.host, instance.uuid):"},{"line_number":1024,"context_line":"            node \u003d limits \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6c3a5de6","line":1021,"in_reply_to":"3fa7e38b_0c8969c8","updated":"2019-11-04 21:04:12.000000000","message":"Done","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"725bf153823a2e09d9d4109dcad1f7409ea2601d","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"                migration \u003d objects.Migration.get_by_instance_and_status("},{"line_number":1028,"context_line":"                    context, instance.uuid, \u0027accepted\u0027)"},{"line_number":1029,"context_line":"            except exception.MigrationNotFoundByStatus:"},{"line_number":1030,"context_line":"                LOG.debug(\"No migration record for the rebuild/evacuate \""},{"line_number":1031,"context_line":"                          \"request.\", instance\u003dinstance)"},{"line_number":1032,"context_line":"                migration \u003d None"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6cb7bd86","line":1030,"updated":"2019-11-04 20:51:13.000000000","message":"We don\u0027t create migrations for rebuild since the instance doesn\u0027t move, so this is kind of weird to log in a rebuild case. Maybe we should only log this if evacuate: and remove the \"rebuild/\" part of the message.\n\nOr we could just pass the migration object through from the API. I have a patch somewhere for that (likely abandoned now).","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"519ad5b15b082c9304684b0fbfa1e8ca1ee090a4","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"                migration \u003d objects.Migration.get_by_instance_and_status("},{"line_number":1028,"context_line":"                    context, instance.uuid, \u0027accepted\u0027)"},{"line_number":1029,"context_line":"            except exception.MigrationNotFoundByStatus:"},{"line_number":1030,"context_line":"                LOG.debug(\"No migration record for the rebuild/evacuate \""},{"line_number":1031,"context_line":"                          \"request.\", instance\u003dinstance)"},{"line_number":1032,"context_line":"                migration \u003d None"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_47a17af6","line":1030,"in_reply_to":"3fa7e38b_2c09c52f","updated":"2019-11-04 21:09:25.000000000","message":"Sure I was mostly just musing here, it makes sense to do something separately for this if you/anyone cares to.","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"df810a83284e72ad4c5b596ec99e31914ceb2bbb","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"                migration \u003d objects.Migration.get_by_instance_and_status("},{"line_number":1028,"context_line":"                    context, instance.uuid, \u0027accepted\u0027)"},{"line_number":1029,"context_line":"            except exception.MigrationNotFoundByStatus:"},{"line_number":1030,"context_line":"                LOG.debug(\"No migration record for the rebuild/evacuate \""},{"line_number":1031,"context_line":"                          \"request.\", instance\u003dinstance)"},{"line_number":1032,"context_line":"                migration \u003d None"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_cc55911f","line":1030,"in_reply_to":"3fa7e38b_6cb7bd86","updated":"2019-11-04 20:52:30.000000000","message":"\u003e Or we could just pass the migration object through from the API. I\n \u003e have a patch somewhere for that (likely abandoned now).\n\nhttps://review.opendev.org/#/c/500176/","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aef916b6c138761d548530ba0474ef2d11880a1b","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"                migration \u003d objects.Migration.get_by_instance_and_status("},{"line_number":1028,"context_line":"                    context, instance.uuid, \u0027accepted\u0027)"},{"line_number":1029,"context_line":"            except exception.MigrationNotFoundByStatus:"},{"line_number":1030,"context_line":"                LOG.debug(\"No migration record for the rebuild/evacuate \""},{"line_number":1031,"context_line":"                          \"request.\", instance\u003dinstance)"},{"line_number":1032,"context_line":"                migration \u003d None"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_2c09c52f","line":1030,"in_reply_to":"3fa7e38b_cc55911f","updated":"2019-11-04 21:04:12.000000000","message":"As that\u0027s an actual functional change, I assume you didn\u0027t want that done as part of this patch?","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"725bf153823a2e09d9d4109dcad1f7409ea2601d","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"                            self._set_vm_state_and_notify("},{"line_number":1057,"context_line":"                                context,"},{"line_number":1058,"context_line":"                                instance.uuid,"},{"line_number":1059,"context_line":"                                \u0027rebuild_server\u0027,"},{"line_number":1060,"context_line":"                                {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":1061,"context_line":"                                 \u0027task_state\u0027: None}, ex, request_spec)"},{"line_number":1062,"context_line":"                            LOG.warning(\u0027Rebuild failed: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ac661528","line":1059,"updated":"2019-11-04 20:51:13.000000000","message":"Like the EventReporter above, this is part of the legacy notifications API:\n\nhttps://github.com/openstack/nova/blob/198929402429581fb67c739edb9111e89a9bc40c/nova/rpc.py#L371","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aef916b6c138761d548530ba0474ef2d11880a1b","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"                            self._set_vm_state_and_notify("},{"line_number":1057,"context_line":"                                context,"},{"line_number":1058,"context_line":"                                instance.uuid,"},{"line_number":1059,"context_line":"                                \u0027rebuild_server\u0027,"},{"line_number":1060,"context_line":"                                {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":1061,"context_line":"                                 \u0027task_state\u0027: None}, ex, request_spec)"},{"line_number":1062,"context_line":"                            LOG.warning(\u0027Rebuild failed: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_67083626","line":1059,"in_reply_to":"3fa7e38b_ac661528","updated":"2019-11-04 21:04:12.000000000","message":"Copied NOTE","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"725bf153823a2e09d9d4109dcad1f7409ea2601d","unresolved":false,"context_lines":[{"line_number":1084,"context_line":"                    # if we want to make sure that the next destination"},{"line_number":1085,"context_line":"                    # is not forced to be the original host"},{"line_number":1086,"context_line":"                    request_spec.reset_forced_destinations()"},{"line_number":1087,"context_line":"                    # TODO(gibi): We need to make sure that the"},{"line_number":1088,"context_line":"                    # requested_resources field is re calculated based on"},{"line_number":1089,"context_line":"                    # neutron ports."},{"line_number":1090,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6c6c9d06","line":1087,"updated":"2019-11-04 20:51:13.000000000","message":"Maybe rebase on top of gibi\u0027s series to avoid any potential merge conflict?","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aef916b6c138761d548530ba0474ef2d11880a1b","unresolved":false,"context_lines":[{"line_number":1084,"context_line":"                    # if we want to make sure that the next destination"},{"line_number":1085,"context_line":"                    # is not forced to be the original host"},{"line_number":1086,"context_line":"                    request_spec.reset_forced_destinations()"},{"line_number":1087,"context_line":"                    # TODO(gibi): We need to make sure that the"},{"line_number":1088,"context_line":"                    # requested_resources field is re calculated based on"},{"line_number":1089,"context_line":"                    # neutron ports."},{"line_number":1090,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c731eaee","line":1087,"in_reply_to":"3fa7e38b_6c6c9d06","updated":"2019-11-04 21:04:12.000000000","message":"Done","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"725bf153823a2e09d9d4109dcad1f7409ea2601d","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"                                    six.text_type(ex), instance\u003dinstance)"},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"            compute_utils.notify_about_instance_usage("},{"line_number":1128,"context_line":"                self.notifier, context, instance, \"rebuild.scheduled\")"},{"line_number":1129,"context_line":"            compute_utils.notify_about_instance_rebuild("},{"line_number":1130,"context_line":"                context, instance, host,"},{"line_number":1131,"context_line":"                action\u003dfields.NotificationAction.REBUILD_SCHEDULED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4c42016a","line":1128,"updated":"2019-11-04 20:51:13.000000000","message":"same - this is encoded into the legacy notification api","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"aef916b6c138761d548530ba0474ef2d11880a1b","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"                                    six.text_type(ex), instance\u003dinstance)"},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"            compute_utils.notify_about_instance_usage("},{"line_number":1128,"context_line":"                self.notifier, context, instance, \"rebuild.scheduled\")"},{"line_number":1129,"context_line":"            compute_utils.notify_about_instance_rebuild("},{"line_number":1130,"context_line":"                context, instance, host,"},{"line_number":1131,"context_line":"                action\u003dfields.NotificationAction.REBUILD_SCHEDULED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e713c657","line":1128,"in_reply_to":"3fa7e38b_4c42016a","updated":"2019-11-04 21:04:12.000000000","message":"Copied NOTE","commit_id":"60b384d8efc99992e5e494f1c4951ac95d9d58d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4c0d65f51de91ad9eb107e350be9d7d1878e05f7","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"                                migration.status \u003d \u0027error\u0027"},{"line_number":1056,"context_line":"                                migration.save()"},{"line_number":1057,"context_line":"                            # NOTE(efried): It would be nice if this were two"},{"line_number":1058,"context_line":"                            # separate events, one for \u0027rebuild\u0027 and one for"},{"line_number":1059,"context_line":"                            # \u0027evacuate\u0027, but this is part of the API now, so"},{"line_number":1060,"context_line":"                            # it would be nontrivial to change."},{"line_number":1061,"context_line":"                            self._set_vm_state_and_notify("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_470bbad3","line":1058,"range":{"start_line":1058,"start_character":39,"end_line":1058,"end_character":45},"updated":"2019-11-04 21:22:18.000000000","message":"notification event types? The event stuff above is about the instance action events API, but this is about notification event types.","commit_id":"7590dc791f07cfe557065518a3577058a7bd6432"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4c0d65f51de91ad9eb107e350be9d7d1878e05f7","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"                                migration.save()"},{"line_number":1057,"context_line":"                            # NOTE(efried): It would be nice if this were two"},{"line_number":1058,"context_line":"                            # separate events, one for \u0027rebuild\u0027 and one for"},{"line_number":1059,"context_line":"                            # \u0027evacuate\u0027, but this is part of the API now, so"},{"line_number":1060,"context_line":"                            # it would be nontrivial to change."},{"line_number":1061,"context_line":"                            self._set_vm_state_and_notify("},{"line_number":1062,"context_line":"                                context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_276f9e92","line":1059,"range":{"start_line":1059,"start_character":66,"end_line":1059,"end_character":69},"updated":"2019-11-04 21:22:18.000000000","message":"The above is encoded in the user-visible REST API, this is just notifications which is not end-user visible, but I guess you consider it part of the notifications API, so OK.","commit_id":"7590dc791f07cfe557065518a3577058a7bd6432"}]}
