)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"cefdded139194e33f31dd66b08510d2906a82a08","unresolved":false,"context_lines":[{"line_number":15,"context_line":"In order to distinguish the error \"host not found\" from the error"},{"line_number":16,"context_line":"\"service not available\", I think we should raise a different exception"},{"line_number":17,"context_line":"like ComputeServiceNotExist."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I6ad377147070f85b9b1d5a1d1be459e890e02bcc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a68dd71_2affdfab","line":18,"updated":"2016-01-26 06:37:47.000000000","message":"This is a bug, please file a bug report if one does not exist and refer to it here with:\n\nCloses-bug: #\u003cnumber\u003e\n\nThat will allow proper tracking of the bug and this fix.","commit_id":"9eaa47e4712f418873dcde31cb5ea742de360f86"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"719265061d75be16a9633e24b512324a338a2fc3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                    instance_uuid\u003dself.instance.uuid,"},{"line_number":87,"context_line":"                    attr\u003d\u0027power_state\u0027,"},{"line_number":88,"context_line":"                    state\u003dself.instance.power_state,"},{"line_number":89,"context_line":"                    method\u003d\u0027live migrate\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _check_host_is_up(self, host):"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_6808bf28","line":89,"updated":"2016-01-06 05:42:02.000000000","message":"thanks for cleanup","commit_id":"9eaa47e4712f418873dcde31cb5ea742de360f86"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f02e3c29c88085d0fb4ef1ce92b2fe7b459010e8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            service \u003d objects.Service.get_by_compute_host(self.context, host)"},{"line_number":94,"context_line":"        except exception.NotFound:"},{"line_number":95,"context_line":"            raise exception.ComputeServiceNotExist(host\u003dhost)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if not self.servicegroup_api.service_is_up(service):"},{"line_number":98,"context_line":"            raise exception.ComputeServiceUnavailable(host\u003dhost)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_9aaec496","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":27},"updated":"2016-01-29 21:22:24.000000000","message":"I guess you might want to add this into following logic as well?\nhttps://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L297","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"bc71f5c6985b2a91fa1bcac8eb1bd4a93f68ada2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            service \u003d objects.Service.get_by_compute_host(self.context, host)"},{"line_number":94,"context_line":"        except exception.NotFound:"},{"line_number":95,"context_line":"            raise exception.ComputeServiceNotExist(host\u003dhost)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if not self.servicegroup_api.service_is_up(service):"},{"line_number":98,"context_line":"            raise exception.ComputeServiceUnavailable(host\u003dhost)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_97a20ffb","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":27},"in_reply_to":"7a5de9d1_9aaec496","updated":"2016-01-30 13:57:45.000000000","message":"+1.\n\nAlso, I somehow am feeling that ComputeServiceDoesNotExist would be a better name. But I\u0027m ok if not changed","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"9b9e3d5238af643a663603e762d4a12e93dd0080","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            service \u003d objects.Service.get_by_compute_host(self.context, host)"},{"line_number":94,"context_line":"        except exception.NotFound:"},{"line_number":95,"context_line":"            raise exception.ComputeServiceNotExist(host\u003dhost)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if not self.servicegroup_api.service_is_up(service):"},{"line_number":98,"context_line":"            raise exception.ComputeServiceUnavailable(host\u003dhost)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_559e98b9","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":27},"in_reply_to":"7a5de9d1_9aaec496","updated":"2016-02-08 15:23:00.000000000","message":"jichenjc, thank you! I\u0027ll update it.","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8da97ee68a271c88af2383252591122f2422da79","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _check_host_is_up(self, host):"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            service \u003d objects.Service.get_by_compute_host(self.context, host)"},{"line_number":94,"context_line":"        except exception.NotFound:"},{"line_number":95,"context_line":"            raise exception.ComputeServiceNotExist(host\u003dhost)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_438ed92e","line":93,"updated":"2016-02-08 15:57:24.000000000","message":"So this trigger underlying service_get_by_compute_host method in sqlalchemy/api which raises exception.ComputeHostNotFound in case compute host does not exist. I don\u0027t think that we need to introduce new exception and translate it to ComputeServiceNotExist","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"00527b8a0bb4d43814718ad79f667b8d5d4dd44e","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _check_host_is_up(self, host):"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            service \u003d objects.Service.get_by_compute_host(self.context, host)"},{"line_number":94,"context_line":"        except exception.NotFound:"},{"line_number":95,"context_line":"            raise exception.ComputeServiceNotExist(host\u003dhost)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_fd764bd7","line":93,"in_reply_to":"5a5ae5dd_438ed92e","updated":"2016-02-09 13:15:04.000000000","message":"So we just remove the try...except... block?","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"f9bb8bbc706ef55c88ecf3073dc80b0d64f3beac","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _check_host_is_up(self, host):"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            service \u003d objects.Service.get_by_compute_host(self.context, host)"},{"line_number":94,"context_line":"        except exception.NotFound:"},{"line_number":95,"context_line":"            raise exception.ComputeServiceNotExist(host\u003dhost)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_fe08a193","line":93,"in_reply_to":"5a5ae5dd_fd764bd7","updated":"2016-02-09 19:11:44.000000000","message":"I think that we can. There are 2 possible scenarios with NotFound exception (basing on underlying DB API):\n\n* Host exists but \u0027nova-compute\u0027 binary was not found on the host. It\u0027s nova-compute service that makes host a compute node, so in this case ComputeHostNotFound exception is valid.\n* Host does not exists, well, this one is obvious.\n\nIn case that nova-compute binary is really off exception in line #98 will be raised and will make it clear that compute host exists, but binary does not work.","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0c9fdc91eec8f06af464d9e84adfedb466f8415f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    instance_uuid\u003dself.instance.uuid,"},{"line_number":81,"context_line":"                    attr\u003d\u0027power_state\u0027,"},{"line_number":82,"context_line":"                    state\u003dself.instance.power_state,"},{"line_number":83,"context_line":"                    method\u003d\u0027live migrate\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _check_host_is_up(self, host):"},{"line_number":86,"context_line":"        service \u003d objects.Service.get_by_compute_host(self.context, host)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_e1543c55","line":83,"updated":"2016-07-25 19:44:55.000000000","message":"Please keep style-only changes like this in a separate patch, otherwise it adds cognitive load to reviewers who have to go line by line through the diff to see if anything changed that was relevant to the patch purpose...","commit_id":"c824982e6a3d6660697e503f7236377cc8202d41"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b8ca75e8e0bcadf4be9546130249abb71b8137da","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    instance_uuid\u003dself.instance.uuid,"},{"line_number":81,"context_line":"                    attr\u003d\u0027power_state\u0027,"},{"line_number":82,"context_line":"                    state\u003dself.instance.power_state,"},{"line_number":83,"context_line":"                    method\u003d\u0027live migrate\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _check_host_is_up(self, host):"},{"line_number":86,"context_line":"        service \u003d objects.Service.get_by_compute_host(self.context, host)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_9c9b0366","line":83,"in_reply_to":"dada55a8_e1543c55","updated":"2016-07-26 11:44:53.000000000","message":"+1","commit_id":"c824982e6a3d6660697e503f7236377cc8202d41"}],"nova/exception.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"bc71f5c6985b2a91fa1bcac8eb1bd4a93f68ada2","unresolved":false,"context_lines":[{"line_number":493,"context_line":"    msg_fmt \u003d _(\"Compute service of %(host)s is unavailable at this time.\")"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class ComputeServiceNotExist(Invalid):"},{"line_number":497,"context_line":"    msg_fmt \u003d _(\"Compute service does not exist on the host %(host)s.\")"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_37b47b33","line":496,"updated":"2016-01-30 13:57:45.000000000","message":"I think we should inherit from NotFound, not Invalid","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"9b9e3d5238af643a663603e762d4a12e93dd0080","unresolved":false,"context_lines":[{"line_number":493,"context_line":"    msg_fmt \u003d _(\"Compute service of %(host)s is unavailable at this time.\")"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class ComputeServiceNotExist(Invalid):"},{"line_number":497,"context_line":"    msg_fmt \u003d _(\"Compute service does not exist on the host %(host)s.\")"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_6a02cab5","line":496,"in_reply_to":"7a5de9d1_37b47b33","updated":"2016-02-08 15:23:00.000000000","message":"OK, thanks.","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"db45d05f7735a0b9889fcaa79ef914187bfd8f57","unresolved":false,"context_lines":[{"line_number":494,"context_line":""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class ComputeServiceNotExist(Invalid):"},{"line_number":497,"context_line":"    msg_fmt \u003d _(\"Compute service does not exist on the host %(host)s.\")"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"class ComputeServiceInUse(NovaException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_bfd6e225","line":497,"range":{"start_line":497,"start_character":17,"end_line":497,"end_character":69},"updated":"2016-02-07 21:16:17.000000000","message":"Im a bit confused at this point. What you want to fix is \n\n\"raise exception ComputeServiceNotExist if host is not found\"\n\nbut here you assume that host exists and compute service is not running on it. I\u0027d rather use existing ComputeHostNotFound exception that inherits from NotFound instead of creating this one. Or at least change wording there.","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"9b9e3d5238af643a663603e762d4a12e93dd0080","unresolved":false,"context_lines":[{"line_number":494,"context_line":""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class ComputeServiceNotExist(Invalid):"},{"line_number":497,"context_line":"    msg_fmt \u003d _(\"Compute service does not exist on the host %(host)s.\")"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"class ComputeServiceInUse(NovaException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_ad99bcc5","line":497,"range":{"start_line":497,"start_character":17,"end_line":497,"end_character":69},"in_reply_to":"5a5ae5dd_bfd6e225","updated":"2016-02-08 15:23:00.000000000","message":"Yes, you\u0027re right. I will change wording there. Thank you!","commit_id":"c46b60eda36303fb6dd6170eaffe552d4125166b"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"26e0219f998b921ef73d88be22f8793ef60f0699","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"    msg_fmt \u003d _(\"Host %(host)s could not be found.\")"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"class ComputeHostNotFound(HostNotFound):"},{"line_number":1010,"context_line":"    msg_fmt \u003d _(\"Compute host %(host)s could not be found.\")"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_0da1f045","line":1009,"range":{"start_line":1009,"start_character":6,"end_line":1009,"end_character":25},"updated":"2016-02-08 15:29:41.000000000","message":"Why can\u0027t you use this exception?","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"ca40ec515ffb90275a7bbb0f97cdd08f5f11e3d0","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"    msg_fmt \u003d _(\"Host %(host)s could not be found.\")"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"class ComputeHostNotFound(HostNotFound):"},{"line_number":1010,"context_line":"    msg_fmt \u003d _(\"Compute host %(host)s could not be found.\")"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_a0ea23d9","line":1009,"range":{"start_line":1009,"start_character":6,"end_line":1009,"end_character":25},"in_reply_to":"5a5ae5dd_0da1f045","updated":"2016-02-08 15:45:44.000000000","message":"ComputeHostNotFound is good and it is just raised by sqlalchemy api. But I think ComputeServiceNotExist can provide more accurate context information. Thank you.","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8da97ee68a271c88af2383252591122f2422da79","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"    msg_fmt \u003d _(\"Host %(host)s could not be found.\")"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"class ComputeHostNotFound(HostNotFound):"},{"line_number":1010,"context_line":"    msg_fmt \u003d _(\"Compute host %(host)s could not be found.\")"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_e09d7b0a","line":1009,"range":{"start_line":1009,"start_character":6,"end_line":1009,"end_character":25},"in_reply_to":"5a5ae5dd_a0ea23d9","updated":"2016-02-08 15:57:24.000000000","message":"I\u0027m just trying to understand why this is better. Well if host cloud not be found then it is obvious that service does not exist on a host that does not exist. We cannot run into situation where service exists but host could not be found, can we? Sounds like an impossible thing.","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"00527b8a0bb4d43814718ad79f667b8d5d4dd44e","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"    msg_fmt \u003d _(\"Host %(host)s could not be found.\")"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"class ComputeHostNotFound(HostNotFound):"},{"line_number":1010,"context_line":"    msg_fmt \u003d _(\"Compute host %(host)s could not be found.\")"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_1d2247ba","line":1009,"range":{"start_line":1009,"start_character":6,"end_line":1009,"end_character":25},"in_reply_to":"5a5ae5dd_e09d7b0a","updated":"2016-02-09 13:15:04.000000000","message":"Yes it is obvious to nova developer, but there may be a little difficult to understand to api caller. I\u0027m OK if we use ComputeHostNotFound.","commit_id":"fcb7d1a905fdb0ff37583594255764174f20e7c5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0c9fdc91eec8f06af464d9e84adfedb466f8415f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                # log the issue and the kwargs"},{"line_number":146,"context_line":"                LOG.exception(_LE(\u0027Exception in string format operation\u0027))"},{"line_number":147,"context_line":"                for name, value in six.iteritems(kwargs):"},{"line_number":148,"context_line":"                    LOG.error(\"%s: %s\" % (name, value))  # noqa"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                if CONF.fatal_exception_format_errors:"},{"line_number":151,"context_line":"                    six.reraise(*exc_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_c14f78bc","line":148,"updated":"2016-07-25 19:44:55.000000000","message":"Again, please keep unrelated, style-only changes in a separate patch in the future.","commit_id":"c824982e6a3d6660697e503f7236377cc8202d41"}]}
