)]}'
{"doc/api_samples/os-evacuate/server-evacuate-resp.json":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"512deb9850f5d91ad52716ea9e79f03ddae00ce6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"adminPass\": \"MySecretPass\"    "},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":12,"id":"AAAAM3%2F%2FHoA%3D","line":2,"updated":"2013-02-06 16:58:06.000000000","message":"Trailing whitespace (femtonit)","commit_id":"b89440657343775959fe2375df22d9862d1653d6"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f5a38a6aecfc5330ced30de21676e636eb0b5a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"adminPass\": \"MySecretPass\"    "},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":12,"id":"AAAAM3%2F%2FF0I%3D","line":2,"in_reply_to":"AAAAM3%2F%2FHoA%3D","updated":"2013-02-07 12:57:36.000000000","message":"Done","commit_id":"b89440657343775959fe2375df22d9862d1653d6"}],"etc/nova/policy.json":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0dac288aa0d30bed2711f0b46d77b6b3428a9491","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"compute_extension:createserverext\": \"\","},{"line_number":39,"context_line":"    \"compute_extension:deferred_delete\": \"\","},{"line_number":40,"context_line":"    \"compute_extension:disk_config\": \"\","},{"line_number":41,"context_line":"    \"compute_extension:evacuate\": \"rule:admin_api\",    "},{"line_number":42,"context_line":"    \"compute_extension:extended_server_attributes\": \"rule:admin_api\","},{"line_number":43,"context_line":"    \"compute_extension:extended_status\": \"\","},{"line_number":44,"context_line":"    \"compute_extension:fixed_ips\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":3,"id":"AAAAMX%2F%2F0%2Bo%3D","line":41,"updated":"2012-12-13 18:28:09.000000000","message":"Trailing whitespace here.","commit_id":"4fc2e978c2ce0800b97ec141e6106a7cffb5f511"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"c40749951e7dc727cc4be70fbcb5e55aebc58ce5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"compute_extension:createserverext\": \"\","},{"line_number":39,"context_line":"    \"compute_extension:deferred_delete\": \"\","},{"line_number":40,"context_line":"    \"compute_extension:disk_config\": \"\","},{"line_number":41,"context_line":"    \"compute_extension:evacuate\": \"rule:admin_api\",    "},{"line_number":42,"context_line":"    \"compute_extension:extended_server_attributes\": \"rule:admin_api\","},{"line_number":43,"context_line":"    \"compute_extension:extended_status\": \"\","},{"line_number":44,"context_line":"    \"compute_extension:fixed_ips\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":3,"id":"AAAAM3%2F%2F%2FvQ%3D","line":41,"in_reply_to":"AAAAMX%2F%2F0%2Bo%3D","updated":"2012-12-23 16:41:32.000000000","message":"Done.\nI think this file not pep checked when running tests.","commit_id":"4fc2e978c2ce0800b97ec141e6106a7cffb5f511"}],"nova/api/openstack/compute/contrib/evacuate.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2c9426c238ad39835a56d175890302720f0ac909","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":45,"context_line":"        try:"},{"line_number":46,"context_line":"            instance \u003d self.compute_api.get(context, id)"},{"line_number":47,"context_line":"            self.compute_api.evacuate(context, instance, host)"},{"line_number":48,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":49,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":50,"context_line":"                    \u0027evacuate\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F0%2BM%3D","line":47,"updated":"2012-12-13 18:32:26.000000000","message":"So, an admin has to evacuate each VM independently? That seems odd. The host-maintenance-mode operation already evacuates the entire host. It\u0027s only implemented in xenapi, but why not do away with this extension entirely (and the associated per-instance RPC call) and extend that operation as necessary, and implement it for the other hypervisors (or even better, in a generic way)?","commit_id":"4fc2e978c2ce0800b97ec141e6106a7cffb5f511"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"c40749951e7dc727cc4be70fbcb5e55aebc58ce5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":45,"context_line":"        try:"},{"line_number":46,"context_line":"            instance \u003d self.compute_api.get(context, id)"},{"line_number":47,"context_line":"            self.compute_api.evacuate(context, instance, host)"},{"line_number":48,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":49,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":50,"context_line":"                    \u0027evacuate\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F5Z0%3D","line":47,"in_reply_to":"AAAAMX%2F%2F0%2BM%3D","updated":"2012-12-23 16:41:32.000000000","message":"The host maintenance mode is slightly different in it\u0027s current implementation. It assumes that the maintained host is in good state and capable for live machines evacuation. The rebuild-for-ha in it\u0027s current implementation assumes that the host is totally down (actually it will fail the evacuation from running host) and lets administrator to choose to which host evacuate each machine. After this patch will be merged we have plans to actually create more general solution which will leverage the host-maintenence-mode and rebuild-for-ha solutions and would automate the evacuation of all the instances from a failed node. One more reason to provide rebuild-for-ha as a separate API is that the administrator might want to decide which instances to evacuate and which not, based on available capacity on other hosts, importance of the different instances, and so on.","commit_id":"4fc2e978c2ce0800b97ec141e6106a7cffb5f511"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"f80fbe1b9b3694c253eb708993f328aed0a1758a","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    name \u003d \"Evacuate\""},{"line_number":61,"context_line":"    alias \u003d \"os-evacuate\""},{"line_number":62,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v1.1\""},{"line_number":63,"context_line":"    updated \u003d \"2012-11-28T00:00:00+00:00\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_controller_extensions(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F08o%3D","line":62,"updated":"2012-12-13 22:07:42.000000000","message":"I believe this an c\u0026p thing.. should be v2 not v1.1","commit_id":"4fc2e978c2ce0800b97ec141e6106a7cffb5f511"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"c40749951e7dc727cc4be70fbcb5e55aebc58ce5","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    name \u003d \"Evacuate\""},{"line_number":61,"context_line":"    alias \u003d \"os-evacuate\""},{"line_number":62,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v1.1\""},{"line_number":63,"context_line":"    updated \u003d \"2012-11-28T00:00:00+00:00\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_controller_extensions(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F%2FvE%3D","line":62,"in_reply_to":"AAAAMX%2F%2F08o%3D","updated":"2012-12-23 16:41:32.000000000","message":"Done","commit_id":"4fc2e978c2ce0800b97ec141e6106a7cffb5f511"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"936d44e7a63d40a326649e59ed870007709f4646","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2011 OpenStack, LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fy9g%3D","line":1,"updated":"2013-01-04 19:57:13.000000000","message":"You need to update the copyright date on this, I believe…","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"366f8edd3fa71420c26f5b0ed497afbc531e9119","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2011 OpenStack, LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fx2M%3D","line":1,"in_reply_to":"AAAAM3%2F%2Fy9g%3D","updated":"2013-01-06 13:00:03.000000000","message":"Done","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"936d44e7a63d40a326649e59ed870007709f4646","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @wsgi.action(\u0027evacuate\u0027)"},{"line_number":37,"context_line":"    def _evacuate(self, req, id, body):"},{"line_number":38,"context_line":"        \"\"\"Permit admins evacuate a server from failed host to a new one\"\"\""},{"line_number":39,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":40,"context_line":"        authorize(context)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fy9M%3D","line":38,"updated":"2013-01-04 19:57:13.000000000","message":"nit: \"Permit admins to evacuate a server from a failed host to a new one.\"","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"366f8edd3fa71420c26f5b0ed497afbc531e9119","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @wsgi.action(\u0027evacuate\u0027)"},{"line_number":37,"context_line":"    def _evacuate(self, req, id, body):"},{"line_number":38,"context_line":"        \"\"\"Permit admins evacuate a server from failed host to a new one\"\"\""},{"line_number":39,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":40,"context_line":"        authorize(context)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fx2Y%3D","line":38,"in_reply_to":"AAAAM3%2F%2Fy9M%3D","updated":"2013-01-06 13:00:03.000000000","message":"Done","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"936d44e7a63d40a326649e59ed870007709f4646","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            if len(body) !\u003d 1:"},{"line_number":44,"context_line":"                raise exc.HTTPBadRequest"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":47,"context_line":"            host \u003d evacuate_body[\"host\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fy84%3D","line":44,"updated":"2013-01-04 19:57:13.000000000","message":"I\u0027d prefer you raise an instance of HTTPBadRequest than the class itself.  Either way will work, but by raising an instance, you can include an explanation that the body is malformed…","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"366f8edd3fa71420c26f5b0ed497afbc531e9119","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            if len(body) !\u003d 1:"},{"line_number":44,"context_line":"                raise exc.HTTPBadRequest"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":47,"context_line":"            host \u003d evacuate_body[\"host\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fx2U%3D","line":44,"in_reply_to":"AAAAM3%2F%2Fy84%3D","updated":"2013-01-06 13:00:03.000000000","message":"Done","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"936d44e7a63d40a326649e59ed870007709f4646","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":71,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":72,"context_line":"                    \u0027evacuate\u0027)"},{"line_number":73,"context_line":"        except Exception, e:"},{"line_number":74,"context_line":"            LOG.exception(_(\"Error in evacuate %s\"), e, instance\u003dinstance)"},{"line_number":75,"context_line":"            raise exc.HTTPUnprocessableEntity()"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fy8k%3D","line":73,"updated":"2013-01-04 19:57:13.000000000","message":"Please use the \u0027as\u0027 syntax for specifying a variable to hold the exception, i.e.:\n\n    except Exception as e:","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"366f8edd3fa71420c26f5b0ed497afbc531e9119","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":71,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":72,"context_line":"                    \u0027evacuate\u0027)"},{"line_number":73,"context_line":"        except Exception, e:"},{"line_number":74,"context_line":"            LOG.exception(_(\"Error in evacuate %s\"), e, instance\u003dinstance)"},{"line_number":75,"context_line":"            raise exc.HTTPUnprocessableEntity()"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fx2Q%3D","line":73,"in_reply_to":"AAAAM3%2F%2Fy8k%3D","updated":"2013-01-06 13:00:03.000000000","message":"Done","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"936d44e7a63d40a326649e59ed870007709f4646","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    name \u003d \"Evacuate\""},{"line_number":85,"context_line":"    alias \u003d \"os-evacuate\""},{"line_number":86,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v2\""},{"line_number":87,"context_line":"    updated \u003d \"2012-11-28T00:00:00+00:00\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_controller_extensions(self):"},{"line_number":90,"context_line":"        controller \u003d Controller()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fy8Y%3D","line":87,"updated":"2013-01-04 19:57:13.000000000","message":"Wow, has this really been pending since November 28th?  :)","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"366f8edd3fa71420c26f5b0ed497afbc531e9119","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    name \u003d \"Evacuate\""},{"line_number":85,"context_line":"    alias \u003d \"os-evacuate\""},{"line_number":86,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v2\""},{"line_number":87,"context_line":"    updated \u003d \"2012-11-28T00:00:00+00:00\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_controller_extensions(self):"},{"line_number":90,"context_line":"        controller \u003d Controller()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fx2I%3D","line":87,"in_reply_to":"AAAAM3%2F%2Fy8Y%3D","updated":"2013-01-06 13:00:03.000000000","message":"Yes, it\u0027s been pending at least since November :)","commit_id":"87f2a021e0bb0e9554df879f9124ed5af5f71f56"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"70c94c5ed9d3b5e27d0e31071162f607820b6c79","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if password:"},{"line_number":84,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class Evacuate(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FabU%3D","line":84,"updated":"2013-01-23 15:22:14.000000000","message":"in a flow that everything ran fine, and nothing is raised, password will never be none or am I wrong? If I\u0027m not this if is not necessary, just the return","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f1f0ab37f1fde884dd2feb68b147da5de9d631","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if password:"},{"line_number":84,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class Evacuate(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FMyI%3D","line":84,"in_reply_to":"AAAAM3%2F%2FabU%3D","updated":"2013-02-04 20:24:20.000000000","message":"You right, the password shouldn\u0027t be generated (and returned) in case the \u0027on_shared_storage\u0027 flag is true. Fixed.","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"}],"nova/tests/api/openstack/compute/contrib/test_evacuate.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5fb61f74fd1ec224aac71b275ca36427bdd7afc1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2011 OpenStack LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FdfU%3D","line":1,"updated":"2013-01-21 19:12:20.000000000","message":"Copyright date (femtonit)","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f1f0ab37f1fde884dd2feb68b147da5de9d631","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2011 OpenStack LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FMx8%3D","line":1,"in_reply_to":"AAAAM3%2F%2FdfU%3D","updated":"2013-02-04 20:24:20.000000000","message":"Done","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5fb61f74fd1ec224aac71b275ca36427bdd7afc1","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def fake_compute_api_get(self, context, instance_id):"},{"line_number":35,"context_line":"    return {\u0027id\u0027: 1, \u0027uuid\u0027: instance_id, \u0027vm_state\u0027: vm_states.ACTIVE,"},{"line_number":36,"context_line":"            \u0027task_state\u0027: None, \u0027host\u0027: \u0027host1\u0027}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class EvacuateTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FdfI%3D","line":36,"updated":"2013-01-21 19:12:20.000000000","message":"I would rather see this formatted as:\n\n    return {\n        \u0027id\u0027: 1,\n        \u0027uuid\u0027: instance_id,\n        …\n    }\n\n(femtonit)","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f1f0ab37f1fde884dd2feb68b147da5de9d631","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def fake_compute_api_get(self, context, instance_id):"},{"line_number":35,"context_line":"    return {\u0027id\u0027: 1, \u0027uuid\u0027: instance_id, \u0027vm_state\u0027: vm_states.ACTIVE,"},{"line_number":36,"context_line":"            \u0027task_state\u0027: None, \u0027host\u0027: \u0027host1\u0027}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class EvacuateTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FMyA%3D","line":36,"in_reply_to":"AAAAM3%2F%2FdfI%3D","updated":"2013-02-04 20:24:20.000000000","message":"Done","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5fb61f74fd1ec224aac71b275ca36427bdd7afc1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        ctxt.user_id \u003d \u0027fake\u0027"},{"line_number":53,"context_line":"        ctxt.project_id \u003d \u0027fake\u0027"},{"line_number":54,"context_line":"        ctxt.is_admin \u003d True"},{"line_number":55,"context_line":"        app \u003d fakes.wsgi_app(fake_auth_context\u003dctxt)"},{"line_number":56,"context_line":"        req \u003d webob.Request.blank(\u0027/v2/fake/servers/%s/action\u0027 % self.UUID)"},{"line_number":57,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":58,"context_line":"        req.body \u003d jsonutils.dumps({"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2Fde4%3D","line":55,"updated":"2013-01-21 19:12:20.000000000","message":"It would be better and faster to format this as a true unit test, rather than taking the trouble of setting up the full WSGI stack.  Verification that the function can be called through WSGI takes place in the function tests that cover API input/output.  (suggestion)","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"512deb9850f5d91ad52716ea9e79f03ddae00ce6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import uuid"},{"line_number":16,"context_line":"import webob"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.compute import api as compute_api"},{"line_number":19,"context_line":"from nova.compute import vm_states"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2FHn0%3D","line":16,"updated":"2013-02-06 16:58:06.000000000","message":"uuid is a standard Python library, but webob is a third-party import, so these two imports should be separated by a blank line…","commit_id":"b89440657343775959fe2375df22d9862d1653d6"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f5a38a6aecfc5330ced30de21676e636eb0b5a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import uuid"},{"line_number":16,"context_line":"import webob"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.compute import api as compute_api"},{"line_number":19,"context_line":"from nova.compute import vm_states"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2FFzw%3D","line":16,"in_reply_to":"AAAAM3%2F%2FHn0%3D","updated":"2013-02-07 12:57:36.000000000","message":"Done","commit_id":"b89440657343775959fe2375df22d9862d1653d6"}],"nova/tests/integrated/api_samples/os-evacuate/server-evacuate-resp.json.tpl":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"512deb9850f5d91ad52716ea9e79f03ddae00ce6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"adminPass\": \"%(password)s\"    "},{"line_number":3,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":12,"id":"AAAAM3%2F%2FHnk%3D","line":2,"updated":"2013-02-06 16:58:06.000000000","message":"Trailing whitespace (femtonit)","commit_id":"b89440657343775959fe2375df22d9862d1653d6"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f5a38a6aecfc5330ced30de21676e636eb0b5a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"adminPass\": \"%(password)s\"    "},{"line_number":3,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":12,"id":"AAAAM3%2F%2FFz4%3D","line":2,"in_reply_to":"AAAAM3%2F%2FHnk%3D","updated":"2013-02-07 12:57:36.000000000","message":"Done","commit_id":"b89440657343775959fe2375df22d9862d1653d6"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"70c94c5ed9d3b5e27d0e31071162f607820b6c79","unresolved":false,"context_lines":[{"line_number":2439,"context_line":""},{"line_number":2440,"context_line":"        response \u003d self._do_post(\u0027servers/%s/action\u0027 % uuid,"},{"line_number":2441,"context_line":"                                 \u0027server-evacuate-req\u0027, req_subs)"},{"line_number":2442,"context_line":"        self.assertEqual(response.status, 200)"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":""},{"line_number":2445,"context_line":"class EvacuateXmlTest(EvacuateJsonTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FabI%3D","line":2442,"updated":"2013-01-23 15:22:14.000000000","message":"forgot to verify and save the api response","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"90f1f0ab37f1fde884dd2feb68b147da5de9d631","unresolved":false,"context_lines":[{"line_number":2439,"context_line":""},{"line_number":2440,"context_line":"        response \u003d self._do_post(\u0027servers/%s/action\u0027 % uuid,"},{"line_number":2441,"context_line":"                                 \u0027server-evacuate-req\u0027, req_subs)"},{"line_number":2442,"context_line":"        self.assertEqual(response.status, 200)"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":""},{"line_number":2445,"context_line":"class EvacuateXmlTest(EvacuateJsonTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FMr4%3D","line":2442,"in_reply_to":"AAAAM3%2F%2FabI%3D","updated":"2013-02-04 20:24:20.000000000","message":"Done","commit_id":"a95cdc9b6742ea91aa54ea3a8368f68df38c9cbb"}]}
