)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f40b971145ac77aa76b69c5e3d453152de7db461","unresolved":false,"context_lines":[{"line_number":16,"context_line":"original problem which is due to the BuildError."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I55bb386bbea550de11cc7a81c5d056680057523b"},{"line_number":19,"context_line":"Releted-Bug: #1257641"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8yeg%3D","line":19,"updated":"2013-12-20 09:47:13.000000000","message":"s/Releted/Related :)","commit_id":"147d22c579d036059a5083782ffbfeaeea4a8f4a"}],"tempest/api/compute/base.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"bdb070b7698b3aa88da3e281002cb363819be698","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            name \u003d kwargs.pop(\u0027name\u0027)"},{"line_number":121,"context_line":"        flavor \u003d kwargs.get(\u0027flavor\u0027, cls.flavor_ref)"},{"line_number":122,"context_line":"        image_id \u003d kwargs.get(\u0027image_id\u0027, cls.image_ref)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        resp, body \u003d cls.servers_client.create_server("},{"line_number":125,"context_line":"            name, image_id, flavor, **kwargs)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8tqE%3D","line":123,"updated":"2013-12-21 16:29:25.000000000","message":"I think this needs also a try..except","commit_id":"147d22c579d036059a5083782ffbfeaeea4a8f4a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"107e59df8d80b94002a98c5cee98173214d1a866","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            name \u003d kwargs.pop(\u0027name\u0027)"},{"line_number":121,"context_line":"        flavor \u003d kwargs.get(\u0027flavor\u0027, cls.flavor_ref)"},{"line_number":122,"context_line":"        image_id \u003d kwargs.get(\u0027image_id\u0027, cls.image_ref)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        resp, body \u003d cls.servers_client.create_server("},{"line_number":125,"context_line":"            name, image_id, flavor, **kwargs)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8tWs%3D","line":123,"in_reply_to":"AAAATn%2F8tqE%3D","updated":"2013-12-22 05:43:06.000000000","message":"\"try.. except\" is not necessary for here, because an incomplete server would not remain if exception happens here.\n\nFor example, if specifying nonexistent image id for \"create a server\" API, there is not BuildError server in Nova.","commit_id":"147d22c579d036059a5083782ffbfeaeea4a8f4a"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"bdb070b7698b3aa88da3e281002cb363819be698","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                try:"},{"line_number":139,"context_line":"                    cls.servers_client.wait_for_server_status("},{"line_number":140,"context_line":"                        server[\u0027id\u0027], kwargs[\u0027wait_until\u0027])"},{"line_number":141,"context_line":"                except exceptions.BuildErrorException:"},{"line_number":142,"context_line":"                    cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":143,"context_line":"                    cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":144,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8trI%3D","line":141,"updated":"2013-12-21 16:29:25.000000000","message":"I would prefer that this catches exceptions.TempestException or even Exception; doing so will also catch other errors like TimeOutExceptions or RestClientExceptions (which I noticed sometimes with test deployments).","commit_id":"147d22c579d036059a5083782ffbfeaeea4a8f4a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"107e59df8d80b94002a98c5cee98173214d1a866","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                try:"},{"line_number":139,"context_line":"                    cls.servers_client.wait_for_server_status("},{"line_number":140,"context_line":"                        server[\u0027id\u0027], kwargs[\u0027wait_until\u0027])"},{"line_number":141,"context_line":"                except exceptions.BuildErrorException:"},{"line_number":142,"context_line":"                    cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":143,"context_line":"                    cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":144,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8tWo%3D","line":141,"in_reply_to":"AAAATn%2F8trI%3D","updated":"2013-12-22 05:43:06.000000000","message":"That is a good idea, thanks.\nI will apply Exception for here in the next patch.","commit_id":"147d22c579d036059a5083782ffbfeaeea4a8f4a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"e5ee1cc1fb15512addf63daa656678ff99230acb","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":144,"context_line":"                        for server in servers:"},{"line_number":145,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":146,"context_line":"                            cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":147,"context_line":"                    raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F6no%3D","line":146,"updated":"2013-12-27 07:40:16.000000000","message":"IMO, here should be \"cls.servers.remove(server)\". please correct me if I\u0027m wrong.","commit_id":"fc11a3ebe8f7697ba38b13adef7f000638669dac"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"87d05cb65e922f4eed24ebcea2ad7786b87af18b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":144,"context_line":"                        for server in servers:"},{"line_number":145,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":146,"context_line":"                            cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":147,"context_line":"                    raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F6ak%3D","line":146,"in_reply_to":"AAAAT3%2F%2F6jA%3D","updated":"2013-12-27 09:29:36.000000000","message":"Thank you very much for your review, will apply it in the next patch.","commit_id":"fc11a3ebe8f7697ba38b13adef7f000638669dac"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"f03def99f1ae0679109da7115ceda22b773ce445","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":144,"context_line":"                        for server in servers:"},{"line_number":145,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":146,"context_line":"                            cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":147,"context_line":"                    raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F6jA%3D","line":146,"in_reply_to":"AAAAT3%2F%2F6kU%3D","updated":"2013-12-27 08:25:17.000000000","message":"great idea. agree with your opinion.","commit_id":"fc11a3ebe8f7697ba38b13adef7f000638669dac"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"207386e9bec11b43070606ffc5023719575f8761","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":144,"context_line":"                        for server in servers:"},{"line_number":145,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":146,"context_line":"                            cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":147,"context_line":"                    raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F6mU%3D","line":146,"in_reply_to":"AAAAT3%2F%2F6m0%3D","updated":"2013-12-27 07:53:12.000000000","message":"cls.servers is a list of server objects including server id, name etc.  {\u0027id\u0027: server[\u0027id\u0027]} is just a dict but not a server object. cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]}) will raise exception \"...not in the list\"","commit_id":"fc11a3ebe8f7697ba38b13adef7f000638669dac"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a3e615e7141f47876d1bc65f421e88c46f2d36d9","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":144,"context_line":"                        for server in servers:"},{"line_number":145,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":146,"context_line":"                            cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":147,"context_line":"                    raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F6kU%3D","line":146,"in_reply_to":"AAAAT3%2F%2F6mU%3D","updated":"2013-12-27 08:16:19.000000000","message":"Thanks for your explanation.\nI see, you are right.\n\nbut how about moving line 134(cls.servers.extend(servers)) to line 148 instead?\nWe don\u0027t need to remove server here if doing it.","commit_id":"fc11a3ebe8f7697ba38b13adef7f000638669dac"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb598d269934941889946d21bb25a850da44157","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":144,"context_line":"                        for server in servers:"},{"line_number":145,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":146,"context_line":"                            cls.servers.remove({\u0027id\u0027: server[\u0027id\u0027]})"},{"line_number":147,"context_line":"                    raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F6m0%3D","line":146,"in_reply_to":"AAAAT3%2F%2F6no%3D","updated":"2013-12-27 07:44:26.000000000","message":"Hi Zhi,\n\nCould you explain why this is wrong you think?\nCan\u0027t this code remove the server from cls.servers?","commit_id":"fc11a3ebe8f7697ba38b13adef7f000638669dac"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"34fd27d3f5f8c4b3505c88255d0825c7c4e91fd5","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    cls.servers_client.wait_for_server_status("},{"line_number":138,"context_line":"                        server[\u0027id\u0027], kwargs[\u0027wait_until\u0027])"},{"line_number":139,"context_line":"                except Exception:"},{"line_number":140,"context_line":"                    if (\u0027remain_server_on_error\u0027 not in kwargs"},{"line_number":141,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":142,"context_line":"                        for server in servers:"},{"line_number":143,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F924%3D","line":140,"updated":"2014-01-06 04:52:47.000000000","message":"This option has been added because some negative tests, which need BuildError servers, will be implemented in the future.\n\nThe discussion was on https://review.openstack.org/#/c/63586/","commit_id":"90035edd3b78567b0493d8099230741a712789ba"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"878867174e46e68ef5d34809a0aa3852e8a801f8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    cls.servers_client.wait_for_server_status("},{"line_number":138,"context_line":"                        server[\u0027id\u0027], kwargs[\u0027wait_until\u0027])"},{"line_number":139,"context_line":"                except Exception:"},{"line_number":140,"context_line":"                    if (\u0027remain_server_on_error\u0027 not in kwargs"},{"line_number":141,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":142,"context_line":"                        for server in servers:"},{"line_number":143,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Fzoc%3D","line":140,"in_reply_to":"AAAAUH%2F%2F6X0%3D","updated":"2014-01-08 08:23:50.000000000","message":"Hi David, Thank you for reviewing.\nI see, I will change here.","commit_id":"90035edd3b78567b0493d8099230741a712789ba"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"0cf044d23d783f0ab23ed16b0e932e5a46049247","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    cls.servers_client.wait_for_server_status("},{"line_number":138,"context_line":"                        server[\u0027id\u0027], kwargs[\u0027wait_until\u0027])"},{"line_number":139,"context_line":"                except Exception:"},{"line_number":140,"context_line":"                    if (\u0027remain_server_on_error\u0027 not in kwargs"},{"line_number":141,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":142,"context_line":"                        for server in servers:"},{"line_number":143,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F6X0%3D","line":140,"in_reply_to":"AAAAUH%2F%2F924%3D","updated":"2014-01-06 21:35:03.000000000","message":"This should be \u0027preserve_server_on_error\u0027 or the like.","commit_id":"90035edd3b78567b0493d8099230741a712789ba"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5eb9445a64eba503cf3c59c6a5b3afc0df18878b","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                    if (\u0027remain_server_on_error\u0027 not in kwargs"},{"line_number":141,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":142,"context_line":"                        for server in servers:"},{"line_number":143,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":144,"context_line":"                    raise"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cls.servers.extend(servers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F7p0%3D","line":143,"updated":"2014-01-06 16:16:26.000000000","message":"The delete server also can raise an exception which can be very confusing.\n\nIdeally the exception from the wait_for_server_status should be raised regardless to deletion happens or not.","commit_id":"90035edd3b78567b0493d8099230741a712789ba"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"878867174e46e68ef5d34809a0aa3852e8a801f8","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                    if (\u0027remain_server_on_error\u0027 not in kwargs"},{"line_number":141,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":142,"context_line":"                        for server in servers:"},{"line_number":143,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":144,"context_line":"                    raise"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cls.servers.extend(servers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FzoA%3D","line":143,"in_reply_to":"AAAAUH%2F%2F5Wc%3D","updated":"2014-01-08 08:23:50.000000000","message":"Done","commit_id":"90035edd3b78567b0493d8099230741a712789ba"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6a4bb66d77f5564fee4716557c23344d7a688607","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                    if (\u0027remain_server_on_error\u0027 not in kwargs"},{"line_number":141,"context_line":"                        or kwargs[\u0027remain_server_on_error\u0027] is False):"},{"line_number":142,"context_line":"                        for server in servers:"},{"line_number":143,"context_line":"                            cls.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":144,"context_line":"                    raise"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cls.servers.extend(servers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F5Wc%3D","line":143,"in_reply_to":"AAAAUH%2F%2F7p0%3D","updated":"2014-01-07 04:15:42.000000000","message":"Good point, I feel better to ignore any exceptions of this delete_server() call. How about this?\n\n try:\n     cls.servers_client.delete_server(server[\u0027id\u0027])\n except Exception:\n     pass","commit_id":"90035edd3b78567b0493d8099230741a712789ba"}]}
