)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6f6a03b1a09715257524cfb94764576a56471542","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kendall Nelson \u003ckjnelson@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-20 15:38:07 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable cinder-manage to delete old services from the database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"These changes are to enable cinder-manage to remove old services"},{"line_number":10,"context_line":"from the database like nova does. All that is being added is the remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_13c1772e","line":7,"updated":"2015-07-21 15:29:50.000000000","message":"delete -\u003eremove","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1a5af44b3bc225ea7b825f5e0d41773914cc0e6b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kendall Nelson \u003ckjnelson@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-20 15:38:07 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable cinder-manage to delete old services from the database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"These changes are to enable cinder-manage to remove old services"},{"line_number":10,"context_line":"from the database like nova does. All that is being added is the remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_50de0e40","line":7,"in_reply_to":"3a50d1a3_13c1772e","updated":"2015-07-21 16:52:42.000000000","message":"Done","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6f6a03b1a09715257524cfb94764576a56471542","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable cinder-manage to delete old services from the database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"These changes are to enable cinder-manage to remove old services"},{"line_number":10,"context_line":"from the database like nova does. All that is being added is the remove"},{"line_number":11,"context_line":"method to manage.py and a test to cover this new method in test_cmd.py."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_8eb800e7","line":9,"updated":"2015-07-21 15:29:50.000000000","message":"I could remove running cinder-volume service by using this command. Do we accept to remove running service?\n\nI\u0027m not sure what happened by removing running service.","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1a5af44b3bc225ea7b825f5e0d41773914cc0e6b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable cinder-manage to delete old services from the database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"These changes are to enable cinder-manage to remove old services"},{"line_number":10,"context_line":"from the database like nova does. All that is being added is the remove"},{"line_number":11,"context_line":"method to manage.py and a test to cover this new method in test_cmd.py."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_50b5aeeb","line":9,"in_reply_to":"3a50d1a3_8eb800e7","updated":"2015-07-21 16:52:42.000000000","message":"I have added to the commit message to explain what happens when a running service is removed.","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6f6a03b1a09715257524cfb94764576a56471542","unresolved":false,"context_lines":[{"line_number":11,"context_line":"method to manage.py and a test to cover this new method in test_cmd.py."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To use this new command, the user types cinder-manage remove"},{"line_number":14,"context_line":"\u003cbinary\u003e \u003chost\u003e and the service will be removed."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_33d0331f","line":14,"updated":"2015-07-21 15:29:50.000000000","message":"\"cinder-manage service remove \u003cbinary\u003e \u003chost\u003e\"","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1a5af44b3bc225ea7b825f5e0d41773914cc0e6b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"method to manage.py and a test to cover this new method in test_cmd.py."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To use this new command, the user types cinder-manage remove"},{"line_number":14,"context_line":"\u003cbinary\u003e \u003chost\u003e and the service will be removed."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_d0c9be79","line":14,"in_reply_to":"3a50d1a3_33d0331f","updated":"2015-07-21 16:52:42.000000000","message":"Done","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a747b3b0fdec417f43f7b34aa55b40cd91a1644d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kendall Nelson \u003ckjnelson@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-21 12:59:43 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable cinder-manage to remove old services from the database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"These changes are to enable cinder-manage to remove old services"},{"line_number":10,"context_line":"from the database like nova does. All that is being added is the remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a50d1a3_b11bd11a","line":7,"updated":"2015-07-21 18:43:54.000000000","message":"Header line is supposed to be 50 chars max:\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"29a7bf7e0396d0e2d43700f51bac5b51a1920697"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"3f90458947dc38bbce7688a5cefd705248c98896","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kendall Nelson \u003ckjnelson@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-21 12:59:43 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable cinder-manage to remove old services from the database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"These changes are to enable cinder-manage to remove old services"},{"line_number":10,"context_line":"from the database like nova does. All that is being added is the remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a50d1a3_8f3229f1","line":7,"in_reply_to":"3a50d1a3_b11bd11a","updated":"2015-07-21 23:41:24.000000000","message":"Done","commit_id":"29a7bf7e0396d0e2d43700f51bac5b51a1920697"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"830949cb34c9ff6791c0c1e3351326850a6e42c2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"method to manage.py and tests to cover this new method in test_cmd.py."},{"line_number":12,"context_line":"The command will remove the binary from the list of running services"},{"line_number":13,"context_line":"in the db that can be viewed via \"cinder-manage service list\". NOTE:"},{"line_number":14,"context_line":"The next time there is communication with the scheduler, running services"},{"line_number":15,"context_line":"will re-populate the list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To use this new command, the user types \"cinder-manage service remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_c1272f61","line":14,"updated":"2015-07-23 16:56:26.000000000","message":"Services got re-populated once they are \u0027created\u0027 (a new DB entry added),\ndoesn\u0027t necessarily has to communicate with scheduler, e.g. the scheduler service itself is part of the list.","commit_id":"6058385529e2a2eb9455335d6eed43275831f7fd"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d0673204ae8960b08d6d764f6e5ea3e90c63eb72","unresolved":false,"context_lines":[{"line_number":11,"context_line":"method to manage.py and tests to cover this new method in test_cmd.py."},{"line_number":12,"context_line":"The command will remove the binary from the list of running services"},{"line_number":13,"context_line":"in the db that can be viewed via \"cinder-manage service list\". NOTE:"},{"line_number":14,"context_line":"The next time there is communication with the scheduler, running services"},{"line_number":15,"context_line":"will re-populate the list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To use this new command, the user types \"cinder-manage service remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_f605920f","line":14,"in_reply_to":"3a50d1a3_823170ef","updated":"2015-07-28 16:39:17.000000000","message":"I am sorry Kendall, I described what is happening for each service wrong.  It is updating its status in the database, not talking to the scheduler.  That is what Winstond-D is trying to explain.  So, we should update this accordingly.","commit_id":"6058385529e2a2eb9455335d6eed43275831f7fd"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"ab5ef10aa63a823d3f410202a8947238502a0a1e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"method to manage.py and tests to cover this new method in test_cmd.py."},{"line_number":12,"context_line":"The command will remove the binary from the list of running services"},{"line_number":13,"context_line":"in the db that can be viewed via \"cinder-manage service list\". NOTE:"},{"line_number":14,"context_line":"The next time there is communication with the scheduler, running services"},{"line_number":15,"context_line":"will re-populate the list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To use this new command, the user types \"cinder-manage service remove"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_823170ef","line":14,"in_reply_to":"3a50d1a3_c1272f61","updated":"2015-07-28 15:34:28.000000000","message":"I guess I\u0027m unsure of what you want me to fix here. You want me to rephrase this last sentence I think, but I guess I don\u0027t see where the issue is exactly. Can you please clarify?","commit_id":"6058385529e2a2eb9455335d6eed43275831f7fd"}],"cinder/cmd/manage.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6e162a9710eead866ad99c80739dd70b49555bfd","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            svc \u003d db.service_get_by_host_and_binary(ctxt, host, service)"},{"line_number":463,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":464,"context_line":"        except exception.NotFound as ex:"},{"line_number":465,"context_line":"            print(_(\"error: %s\")% ex)"},{"line_number":466,"context_line":"            return (2)"},{"line_number":467,"context_line":"        print((_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":468,"context_line":"               {\u0027service\u0027: service, \u0027host\u0027: host}))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_0fc11554","line":465,"updated":"2015-07-01 21:01:05.000000000","message":"Please, add more user-friendly error message","commit_id":"ebbc49c48ca5474884b755aa40561afeb05b9a52"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8627a9414cbf5a13ae030283a8bc65766c4a31eb","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            svc \u003d db.service_get_by_host_and_binary(ctxt, host, service)"},{"line_number":463,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":464,"context_line":"        except Exception:"},{"line_number":465,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s\")%"},{"line_number":466,"context_line":"                  {\u0027service\u0027: service, \u0027host\u0027:host})"},{"line_number":467,"context_line":"            return (2)"},{"line_number":468,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3e5f5be6","line":465,"updated":"2015-07-08 18:38:19.000000000","message":"No \u0027.\u0027 at EOL.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d7165a8bab96a5e67400231f77fd6a63bf19f250","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            svc \u003d db.service_get_by_host_and_binary(ctxt, host, service)"},{"line_number":463,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":464,"context_line":"        except Exception:"},{"line_number":465,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s\")%"},{"line_number":466,"context_line":"                  {\u0027service\u0027: service, \u0027host\u0027:host})"},{"line_number":467,"context_line":"            return (2)"},{"line_number":468,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_23f6f7f9","line":465,"in_reply_to":"ba3cc151_3e5f5be6","updated":"2015-07-10 13:57:44.000000000","message":"Done.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6f6a03b1a09715257524cfb94764576a56471542","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                                  svc[\u0027availability_zone\u0027], status, art,"},{"line_number":456,"context_line":"                                  svc[\u0027updated_at\u0027]))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027serviceHost\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_73131b67","line":458,"updated":"2015-07-21 15:29:50.000000000","message":"I prefer \"host\" instead of using \"serviceHost\" because \"cinder-manage service list\" shows Binary, Host, Zone...\n\nUse same word prevents misunderstanding.","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1a5af44b3bc225ea7b825f5e0d41773914cc0e6b","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                                  svc[\u0027availability_zone\u0027], status, art,"},{"line_number":456,"context_line":"                                  svc[\u0027updated_at\u0027]))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027serviceHost\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_5027ee63","line":458,"in_reply_to":"3a50d1a3_73131b67","updated":"2015-07-21 16:52:42.000000000","message":"Done","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6f6a03b1a09715257524cfb94764576a56471542","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027serviceHost\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"},{"line_number":462,"context_line":"    def remove(self, binary, serviceHost):"},{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_aeea9c0d","line":460,"updated":"2015-07-21 15:29:50.000000000","message":"Should define binary and serviceHost as same order of arguments of remove(). Current help message is below, order of arguments are wrong.\n\nusage: cinder-manage service remove [-h] serviceHost binary","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1a5af44b3bc225ea7b825f5e0d41773914cc0e6b","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027serviceHost\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"},{"line_number":462,"context_line":"    def remove(self, binary, serviceHost):"},{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_702a2a2e","line":460,"in_reply_to":"3a50d1a3_aeea9c0d","updated":"2015-07-21 16:52:42.000000000","message":"Done","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"3c6bf5d60082ae0358baacbba3385ae20de7eb1b","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: serviceHost})"},{"line_number":471,"context_line":"            print (\"%s\", e)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: serviceHost})"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_495bd254","line":471,"updated":"2015-07-21 15:52:38.000000000","message":"Since we are using i18n, it is possible problem here, it raises UnicodeError.\nPlease print only args here: print (\"%s\" % e.args) or use six.text_type to avoid problems with unicode","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1a5af44b3bc225ea7b825f5e0d41773914cc0e6b","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: serviceHost})"},{"line_number":471,"context_line":"            print (\"%s\", e)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: serviceHost})"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_1022c652","line":471,"in_reply_to":"3a50d1a3_495bd254","updated":"2015-07-21 16:52:42.000000000","message":"Done","commit_id":"fb4a25a7984ddf4a7a54b04cf1b78390e09878f4"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a747b3b0fdec417f43f7b34aa55b40cd91a1644d","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host, binary)"},{"line_number":467,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f196394b","line":469,"updated":"2015-07-21 18:43:54.000000000","message":"How about \"Failed to remove %(service)s on %(host)s.\"\n\nRemoving the service *from* the host makes it sound like you are killing the service or moving it off that host.","commit_id":"29a7bf7e0396d0e2d43700f51bac5b51a1920697"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"3f90458947dc38bbce7688a5cefd705248c98896","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host, binary)"},{"line_number":467,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_2cea03ad","line":469,"in_reply_to":"3a50d1a3_f196394b","updated":"2015-07-21 23:41:24.000000000","message":"Done","commit_id":"29a7bf7e0396d0e2d43700f51bac5b51a1920697"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"5bd1e90073bf41f4ce450ce35c7e3e0d9c107e31","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_519dad57","line":471,"updated":"2015-07-21 18:42:21.000000000","message":"Unnecessary space here.","commit_id":"29a7bf7e0396d0e2d43700f51bac5b51a1920697"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"3f90458947dc38bbce7688a5cefd705248c98896","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s from %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_ccd35f03","line":471,"in_reply_to":"3a50d1a3_519dad57","updated":"2015-07-21 23:41:24.000000000","message":"Done","commit_id":"29a7bf7e0396d0e2d43700f51bac5b51a1920697"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"217e030b680f8d2723921d3253daea711f85ce1c","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""},{"line_number":464,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":465,"context_line":"        try:"},{"line_number":466,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host, binary)"},{"line_number":467,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_f2d61ef0","line":466,"updated":"2015-07-22 08:14:56.000000000","message":"We can also make optimization here - remove service in one db call, but it doesn\u0027t bring significant performance in that case, so I\u0027m fine with this.","commit_id":"6058385529e2a2eb9455335d6eed43275831f7fd"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6426722f9efbcef79ab37578698428fac19d9176","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027host\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":462,"context_line":"    def remove(self, binary, host):"},{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_c9394941","line":460,"updated":"2015-07-31 09:14:48.000000000","message":"This will not work, you cannot use host, you\u0027ll get a conflict: DuplicateOptError: duplicate option: host","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"df34f271817fefcc16352f37bfbcf903381feb48","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027host\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":462,"context_line":"    def remove(self, binary, host):"},{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_271558e4","line":460,"in_reply_to":"3a50d1a3_07905c94","updated":"2015-07-31 18:34:50.000000000","message":"+1 host_name","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3b7a41edef5c54b2dd849252c7853ac4e2ffc07f","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027host\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":462,"context_line":"    def remove(self, binary, host):"},{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_07905c94","line":460,"in_reply_to":"3a50d1a3_402e5c8d","updated":"2015-07-31 18:26:28.000000000","message":"I think host_name or service_host should work, and since it\u0027s a positional argument you don\u0027t really mind the long name.","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"730a4823b8864039ec4cb9b8530e2e7f530baac0","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @args(\u0027binary\u0027, type\u003dstr,"},{"line_number":459,"context_line":"          help\u003d\u0027Service to delete from the host.\u0027)"},{"line_number":460,"context_line":"    @args(\u0027host\u0027, type\u003dstr,"},{"line_number":461,"context_line":"          help\u003d\u0027Host from which to remove the service.\u0027)"},{"line_number":462,"context_line":"    def remove(self, binary, host):"},{"line_number":463,"context_line":"        \"\"\"Completely removes a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_402e5c8d","line":460,"in_reply_to":"3a50d1a3_c9394941","updated":"2015-07-31 13:50:11.000000000","message":"Okay, I can make a change here, I guess I just am not sure what to use instead. Do you have any suggestions, Gorka?","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6426722f9efbcef79ab37578698428fac19d9176","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_4965391b","line":471,"updated":"2015-07-31 09:14:48.000000000","message":"This should be changed to\n\n print(u\"%s\" % e.args)\n\nNo space before parenthesis and take into account that e.args could return unicode characters.","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"730a4823b8864039ec4cb9b8530e2e7f530baac0","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_9556e4cc","line":471,"in_reply_to":"3a50d1a3_4965391b","updated":"2015-07-31 13:50:11.000000000","message":"Done","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6426722f9efbcef79ab37578698428fac19d9176","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_4e33ff13","line":472,"updated":"2015-07-31 09:14:48.000000000","message":"No parenthesis for the return","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"730a4823b8864039ec4cb9b8530e2e7f530baac0","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":471,"context_line":"            print (\"%s\" % e.args)"},{"line_number":472,"context_line":"            return (2)"},{"line_number":473,"context_line":"        print(_(\"Service %(service)s on host %(host)s removed.\") %"},{"line_number":474,"context_line":"              {\u0027service\u0027: binary, \u0027host\u0027: host})"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_b559a0ff","line":472,"in_reply_to":"3a50d1a3_4e33ff13","updated":"2015-07-31 13:50:11.000000000","message":"Done","commit_id":"0d5558816a822955e876de1fd24e6b13c07d9a7e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a15b5b5a9a155799b887d7a3c6f92cf36be9b13a","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        try:"},{"line_number":466,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host_name, binary)"},{"line_number":467,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":468,"context_line":"        except Exception as e:"},{"line_number":469,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":470,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host_name})"},{"line_number":471,"context_line":"            print (u\"%s\" % e.args)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_baeaeb72","line":468,"updated":"2015-08-10 21:00:07.000000000","message":"Shouldn\u0027t we look for and catch HostBinaryNotFound and report if we can\u0027t find the binary for the host?\n\nhttps://github.com/openstack/cinder/blob/master/cinder/db/sqlalchemy/api.py#L417-L418","commit_id":"69a5412d51e27c84e76d7ba7afd0b8df35b0b0f8"},{"author":{"_account_id":10674,"name":"Yusuke Hayashi","email":"yusuke.hayashi.710@gmail.com","username":"YusukeHayashi"},"change_message_id":"3e26928a21923119f88dc891923d53bcce549a52","unresolved":false,"context_lines":[{"line_number":77,"context_line":"from cinder.db import migration as db_migration"},{"line_number":78,"context_line":"from cinder.db.sqlalchemy import api as db_api"},{"line_number":79,"context_line":"from cinder.i18n import _"},{"line_number":80,"context_line":"from cinder import exception"},{"line_number":81,"context_line":"from cinder import objects"},{"line_number":82,"context_line":"from cinder import rpc"},{"line_number":83,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_405aacf3","line":80,"updated":"2015-08-11 15:05:23.000000000","message":"It should be written under \"from cinder.db.sqlalchemy ...\"\n\nH306  imports not in alphabetical order","commit_id":"8da7a3ffe872588201e65a47b9dbced0389a47a8"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"ca06c3a6c74738695c654aadeda2e8e43c31e7fa","unresolved":false,"context_lines":[{"line_number":77,"context_line":"from cinder.db import migration as db_migration"},{"line_number":78,"context_line":"from cinder.db.sqlalchemy import api as db_api"},{"line_number":79,"context_line":"from cinder.i18n import _"},{"line_number":80,"context_line":"from cinder import exception"},{"line_number":81,"context_line":"from cinder import objects"},{"line_number":82,"context_line":"from cinder import rpc"},{"line_number":83,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_5446ed7b","line":80,"in_reply_to":"1a4dcd0f_405aacf3","updated":"2015-08-11 15:24:19.000000000","message":"Done","commit_id":"8da7a3ffe872588201e65a47b9dbced0389a47a8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"1712a68f13cf04517ccc425c9f205b572b56dc2b","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host_name, binary)"},{"line_number":468,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":469,"context_line":"        except exception.HostBinaryNotFound as e:"},{"line_number":470,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":471,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host_name})"},{"line_number":472,"context_line":"            print (u\"%s\" % e.args)"},{"line_number":473,"context_line":"            return 2"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_8ac6fc66","line":470,"updated":"2015-08-14 04:54:00.000000000","message":"Since we know we failed to remove the host because it was not found, can we please have this error message state that?","commit_id":"8394843a9e64265fa4a75e61a9dbf1898aa6b69c"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"6d20bcf94467e971ff770dc88361c5bef52b93da","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host_name, binary)"},{"line_number":468,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":469,"context_line":"        except exception.HostBinaryNotFound as e:"},{"line_number":470,"context_line":"            print(_(\"Failed to remove %(service)s on %(host)s.\") %"},{"line_number":471,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host_name})"},{"line_number":472,"context_line":"            print (u\"%s\" % e.args)"},{"line_number":473,"context_line":"            return 2"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_1133eef7","line":470,"in_reply_to":"1a4dcd0f_8ac6fc66","updated":"2015-08-14 12:54:47.000000000","message":"Done","commit_id":"8394843a9e64265fa4a75e61a9dbf1898aa6b69c"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"7ae5989c7ff49412c1a167d8a43a223b8a60de16","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host_name, binary)"},{"line_number":468,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":469,"context_line":"        except exception.HostBinaryNotFound as e:"},{"line_number":470,"context_line":"            print(_(\"Host not found. Failed to remove %(service)s on %(host)s.\") %"},{"line_number":471,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host_name})"},{"line_number":472,"context_line":"            print (u\"%s\" % e.args)"},{"line_number":473,"context_line":"            return 2"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_da483b8d","line":470,"updated":"2015-08-14 14:11:35.000000000","message":"this line too long  \u003e 79 characters","commit_id":"135aad7bebe687b14e42202a2a3ce7823cb4a4b0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"0c34e2950d8afd895f1e765f12afe57b17db7f9a","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host_name, binary)"},{"line_number":468,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":469,"context_line":"        except exception.HostBinaryNotFound as e:"},{"line_number":470,"context_line":"            print(_(\"Host not found. Failed to remove %(service)s on %(host)s.\") %"},{"line_number":471,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host_name})"},{"line_number":472,"context_line":"            print (u\"%s\" % e.args)"},{"line_number":473,"context_line":"            return 2"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_939cd95e","line":470,"in_reply_to":"1a4dcd0f_60f5bac9","updated":"2015-08-14 16:22:39.000000000","message":"Why wasn\u0027t this found in pep8 tests?","commit_id":"135aad7bebe687b14e42202a2a3ce7823cb4a4b0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d381aa2f458a4c9641bcf6f509828582ef4a85e2","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            svc \u003d db.service_get_by_args(ctxt, host_name, binary)"},{"line_number":468,"context_line":"            db.service_destroy(ctxt, svc[\u0027id\u0027])"},{"line_number":469,"context_line":"        except exception.HostBinaryNotFound as e:"},{"line_number":470,"context_line":"            print(_(\"Host not found. Failed to remove %(service)s on %(host)s.\") %"},{"line_number":471,"context_line":"                  {\u0027service\u0027: binary, \u0027host\u0027: host_name})"},{"line_number":472,"context_line":"            print (u\"%s\" % e.args)"},{"line_number":473,"context_line":"            return 2"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_60f5bac9","line":470,"in_reply_to":"1a4dcd0f_da483b8d","updated":"2015-08-14 14:37:39.000000000","message":"Done","commit_id":"135aad7bebe687b14e42202a2a3ce7823cb4a4b0"}],"cinder/tests/unit/test_cmd.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6e162a9710eead866ad99c80739dd70b49555bfd","unresolved":false,"context_lines":[{"line_number":729,"context_line":"            self.assertFalse(log_setup.called)"},{"line_number":730,"context_line":"            self.assertEqual(2, exit.code)"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"    def test_service_remove_invalid_params(self):"},{"line_number":733,"context_line":"        self.assertEqual(2, self.commands.remove(\u0027nohost\u0027, \u0027noservice\u0027))"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_6f978148","line":732,"updated":"2015-07-01 21:01:05.000000000","message":"Please, add positive  tests too","commit_id":"ebbc49c48ca5474884b755aa40561afeb05b9a52"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8627a9414cbf5a13ae030283a8bc65766c4a31eb","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        mock_db.service_destroy.side_effect \u003d SystemExit(1)"},{"line_number":735,"context_line":"        service_commands \u003d cinder_manage.ServiceCommands()"},{"line_number":736,"context_line":"        exit \u003d service_commands.remove(\u0027ahost\u0027, \u0027aservice\u0027)"},{"line_number":737,"context_line":"        "},{"line_number":738,"context_line":"        self.assertEqual(exit, 2)   "},{"line_number":739,"context_line":"    "},{"line_number":740,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_def74fd1","line":737,"updated":"2015-07-08 18:38:19.000000000","message":"Please remove these extra spaces.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d7165a8bab96a5e67400231f77fd6a63bf19f250","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        mock_db.service_destroy.side_effect \u003d SystemExit(1)"},{"line_number":735,"context_line":"        service_commands \u003d cinder_manage.ServiceCommands()"},{"line_number":736,"context_line":"        exit \u003d service_commands.remove(\u0027ahost\u0027, \u0027aservice\u0027)"},{"line_number":737,"context_line":"        "},{"line_number":738,"context_line":"        self.assertEqual(exit, 2)   "},{"line_number":739,"context_line":"    "},{"line_number":740,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_43ce9bb8","line":737,"in_reply_to":"ba3cc151_def74fd1","updated":"2015-07-10 13:57:44.000000000","message":"Done.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8627a9414cbf5a13ae030283a8bc65766c4a31eb","unresolved":false,"context_lines":[{"line_number":735,"context_line":"        service_commands \u003d cinder_manage.ServiceCommands()"},{"line_number":736,"context_line":"        exit \u003d service_commands.remove(\u0027ahost\u0027, \u0027aservice\u0027)"},{"line_number":737,"context_line":"        "},{"line_number":738,"context_line":"        self.assertEqual(exit, 2)   "},{"line_number":739,"context_line":"    "},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_5e0b3fd6","line":738,"updated":"2015-07-08 18:38:19.000000000","message":"Remove extra spaces at EOL.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d7165a8bab96a5e67400231f77fd6a63bf19f250","unresolved":false,"context_lines":[{"line_number":735,"context_line":"        service_commands \u003d cinder_manage.ServiceCommands()"},{"line_number":736,"context_line":"        exit \u003d service_commands.remove(\u0027ahost\u0027, \u0027aservice\u0027)"},{"line_number":737,"context_line":"        "},{"line_number":738,"context_line":"        self.assertEqual(exit, 2)   "},{"line_number":739,"context_line":"    "},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_c3c2ab86","line":738,"in_reply_to":"ba3cc151_5e0b3fd6","updated":"2015-07-10 13:57:44.000000000","message":"Fixed.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8627a9414cbf5a13ae030283a8bc65766c4a31eb","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        "},{"line_number":738,"context_line":"        self.assertEqual(exit, 2)   "},{"line_number":739,"context_line":"    "},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_5e325fa8","line":740,"updated":"2015-07-08 18:38:19.000000000","message":"More extra spaces.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d7165a8bab96a5e67400231f77fd6a63bf19f250","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        "},{"line_number":738,"context_line":"        self.assertEqual(exit, 2)   "},{"line_number":739,"context_line":"    "},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_83bca307","line":740,"in_reply_to":"ba3cc151_5e325fa8","updated":"2015-07-10 13:57:44.000000000","message":"Fixed as well.","commit_id":"b3679077a0aa4f85ebc5f2c6bc9e57753942bd5e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"161948062b2bb729c47bcfc29b1350e03d14957e","unresolved":false,"context_lines":[{"line_number":745,"context_line":"    def test_remove_service_success(self, mock_get_by_args,"},{"line_number":746,"context_line":"                                    mock_service_destroy):"},{"line_number":747,"context_line":"        service_commands \u003d cinder_manage.ServiceCommands()"},{"line_number":748,"context_line":"        self.assertEqual(None, service_commands.remove(\u0027abinary\u0027, \u0027ahost\u0027))"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_8dcc1636","line":748,"updated":"2015-08-13 03:37:29.000000000","message":"assertIsNone is preferred.","commit_id":"8394843a9e64265fa4a75e61a9dbf1898aa6b69c"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"6d20bcf94467e971ff770dc88361c5bef52b93da","unresolved":false,"context_lines":[{"line_number":745,"context_line":"    def test_remove_service_success(self, mock_get_by_args,"},{"line_number":746,"context_line":"                                    mock_service_destroy):"},{"line_number":747,"context_line":"        service_commands \u003d cinder_manage.ServiceCommands()"},{"line_number":748,"context_line":"        self.assertEqual(None, service_commands.remove(\u0027abinary\u0027, \u0027ahost\u0027))"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"class TestCinderRtstoolCmd(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_513976d7","line":748,"in_reply_to":"1a4dcd0f_8dcc1636","updated":"2015-08-14 12:54:47.000000000","message":"Done","commit_id":"8394843a9e64265fa4a75e61a9dbf1898aa6b69c"}]}
