)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"722cbfa7db503246bb1ad5a089856a5bee8eac10","unresolved":false,"context_lines":[{"line_number":19,"context_line":"DocImpact"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I1bc40d62c66f1c7a9d39660a4fdffccd7e48d287"},{"line_number":22,"context_line":"Implements: blueprint find-host-and-evacuate-instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F%2Biys%3D","line":22,"updated":"2013-11-24 16:02:02.000000000","message":"Partial bp:","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ffceefe236b8e8878b69cc816b400fc05d270950","unresolved":false,"context_lines":[{"line_number":19,"context_line":"DocImpact"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I1bc40d62c66f1c7a9d39660a4fdffccd7e48d287"},{"line_number":22,"context_line":"Implements: blueprint find-host-and-evacuate-instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F%2BgyA%3D","line":22,"in_reply_to":"AAAATn%2F%2Biys%3D","updated":"2013-11-25 10:06:18.000000000","message":"Done","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"0654a62fb8f70db32eeab2f4e0d9a96be46892fe","unresolved":false,"context_lines":[{"line_number":10,"context_line":"relocate an instance to another compute so it can be rebuilt."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The changes involved in this patch are:"},{"line_number":13,"context_line":"  [*] Add a new v2 extension to determinated that host argument"},{"line_number":14,"context_line":"      on evacuate is now optional.(Extended_evacuate_find_host)"},{"line_number":15,"context_line":"  [*] Bump v3 version of evacuate to set host argument optional."},{"line_number":16,"context_line":"  [*] Doc regeneration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAU3%2F%2F%2B%2BI%3D","line":13,"updated":"2014-02-23 03:53:23.000000000","message":"\"determinated that\" -\u003e \"determine that the\"","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"6b5686f499bad5161a2e514c19a5c5c1a8e11544","unresolved":false,"context_lines":[{"line_number":10,"context_line":"relocate an instance to another compute so it can be rebuilt."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The changes involved in this patch are:"},{"line_number":13,"context_line":"  [*] Add a new v2 extension to determinated that host argument"},{"line_number":14,"context_line":"      on evacuate is now optional.(Extended_evacuate_find_host)"},{"line_number":15,"context_line":"  [*] Bump v3 version of evacuate to set host argument optional."},{"line_number":16,"context_line":"  [*] Doc regeneration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAU3%2F%2F9og%3D","line":13,"in_reply_to":"AAAAU3%2F%2F%2B%2BI%3D","updated":"2014-02-23 13:39:40.000000000","message":"Done","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c48b4d5339584229f6970c55ab9be4eef791992c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  [*] Bump v3 version of evacuate to set host argument optional."},{"line_number":16,"context_line":"  [*] Doc regeneration."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint find-host-and-evacuate-instance"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAU3%2F%2F9I4%3D","line":18,"updated":"2014-02-23 15:53:10.000000000","message":"What\u0027s the doc impact?  Based on the tag definition, there should be some explanation here for the docs team:\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"679f014820fd933b7855da8d0b775a57b5134e48","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add APIv2 support to make host optional on evacuate."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the event of a unrecoverable hardware failure, support needs to"},{"line_number":10,"context_line":"relocate an instance to another compute so it can be rebuilt."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The changes involved in this patch are:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"AAAAVX%2F%2FpUI%3D","line":9,"updated":"2014-03-02 03:33:18.000000000","message":"a \u003d\u003d\u003e an","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"}],"doc/api_samples/all_extensions/extensions-get-resp.json":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"0654a62fb8f70db32eeab2f4e0d9a96be46892fe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        },"},{"line_number":19,"context_line":"        {"},{"line_number":20,"context_line":"            \"alias\": \"OS-EXT-AZ\","},{"line_number":21,"context_line":"            \"description\": \"Extended Availability Zone support.\","},{"line_number":22,"context_line":"            \"links\": [],"},{"line_number":23,"context_line":"            \"name\": \"ExtendedAvailabilityZone\","},{"line_number":24,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_availability_zone/api/v2\","}],"source_content_type":"application/json","patch_set":6,"id":"AAAAU3%2F%2F%2B9Y%3D","line":21,"updated":"2014-02-23 03:53:23.000000000","message":"Do you know why this change is in this patch?","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"6b5686f499bad5161a2e514c19a5c5c1a8e11544","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        },"},{"line_number":19,"context_line":"        {"},{"line_number":20,"context_line":"            \"alias\": \"OS-EXT-AZ\","},{"line_number":21,"context_line":"            \"description\": \"Extended Availability Zone support.\","},{"line_number":22,"context_line":"            \"links\": [],"},{"line_number":23,"context_line":"            \"name\": \"ExtendedAvailabilityZone\","},{"line_number":24,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_availability_zone/api/v2\","}],"source_content_type":"application/json","patch_set":6,"id":"AAAAU3%2F%2F9ow%3D","line":21,"in_reply_to":"AAAAU3%2F%2F%2B9Y%3D","updated":"2014-02-23 13:39:40.000000000","message":"I thought i removed it.\nFor some reason it changed the description when running generate_samples.\nwill remove it.","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"}],"nova/api/openstack/compute/contrib/evacuate.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            if len(body) !\u003d 1:"},{"line_number":49,"context_line":"                raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":52,"context_line":"            host \u003d evacuate_body[\"host\"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bsyo%3D","side":"PARENT","line":49,"updated":"2013-11-21 11:40:12.000000000","message":"We still need this.","commit_id":"b68180fb39d2a1fb92bd75dfdf91d45b54e0babb"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            if len(body) !\u003d 1:"},{"line_number":49,"context_line":"                raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":52,"context_line":"            host \u003d evacuate_body[\"host\"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bo0Y%3D","side":"PARENT","line":49,"in_reply_to":"AAAATn%2F%2Bsyo%3D","updated":"2013-11-22 07:07:11.000000000","message":"Any method decorated with wsgi.action will need to have the said key, in this case \u0027evacuate\u0027, before it reaches the relevant code block. If not, a key error is raised when the wsgi.action code kicks in. Once it reaches here the body will have a length of 1.  So this feels like a redundant check.","commit_id":"b68180fb39d2a1fb92bd75dfdf91d45b54e0babb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":49,"context_line":"            host \u003d evacuate_body.get(\u0027host\u0027)"},{"line_number":50,"context_line":"            on_shared_storage \u003d strutils.bool_from_string("},{"line_number":51,"context_line":"                                            evacuate_body[\"onSharedStorage\"])"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BsyY%3D","line":49,"updated":"2013-11-21 11:40:12.000000000","message":"I am OK with this, but in v2 land we really need an extension to advertise this capability.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":49,"context_line":"            host \u003d evacuate_body.get(\u0027host\u0027)"},{"line_number":50,"context_line":"            on_shared_storage \u003d strutils.bool_from_string("},{"line_number":51,"context_line":"                                            evacuate_body[\"onSharedStorage\"])"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bo0M%3D","line":49,"in_reply_to":"AAAATn%2F%2BsyY%3D","updated":"2013-11-22 07:07:11.000000000","message":"Just figured that out. My mistake. Shall push in the relevant changes.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        if host:"},{"line_number":70,"context_line":"            try:"},{"line_number":71,"context_line":"                self.host_api.service_get_by_compute_host(context, host)"},{"line_number":72,"context_line":"            except exception.ComputeHostNotFound as e:"},{"line_number":73,"context_line":"                raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BsyE%3D","line":72,"updated":"2013-11-21 11:40:12.000000000","message":"Why has this exception changed? If it needs to change, make that a separate change please.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cb223a43c66def8cd29e9112ae4922d8ad87ab0a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        if host:"},{"line_number":70,"context_line":"            try:"},{"line_number":71,"context_line":"                self.host_api.service_get_by_compute_host(context, host)"},{"line_number":72,"context_line":"            except exception.ComputeHostNotFound as e:"},{"line_number":73,"context_line":"                raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BnLc%3D","line":72,"in_reply_to":"AAAATn%2F%2BoyE%3D","updated":"2013-11-22 14:13:26.000000000","message":"This should be a separate change I think, assuming its not strictly needed.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        if host:"},{"line_number":70,"context_line":"            try:"},{"line_number":71,"context_line":"                self.host_api.service_get_by_compute_host(context, host)"},{"line_number":72,"context_line":"            except exception.ComputeHostNotFound as e:"},{"line_number":73,"context_line":"                raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BoyE%3D","line":72,"in_reply_to":"AAAATn%2F%2BsyE%3D","updated":"2013-11-22 07:07:11.000000000","message":"I came across this while doing a code walkthru to understand the  evacuate logic. Proposed the changes as it was within the boundary of evacuate making host optional. If you feel its not required or should be another commit, I shall rollback the changes.\n\nservice_get_by_compute_host throws a ComputeHostNotFound exception. Made the code to be more specific about the possible exception that could be caught. And since is was a specific exception, we used the inbuilt message instead of creating one.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"0654a62fb8f70db32eeab2f4e0d9a96be46892fe","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        host \u003d evacuate_body.get(\"host\")"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if not host and \\"},{"line_number":56,"context_line":"                not self.ext_mgr.is_loaded(\u0027os-extended-evacuate-find-host\u0027):"},{"line_number":57,"context_line":"            msg \u003d _(\"host must be specified.\")"},{"line_number":58,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F%2B98%3D","line":55,"updated":"2014-02-23 03:53:23.000000000","message":"please use parentheses for long lines instead","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"6b5686f499bad5161a2e514c19a5c5c1a8e11544","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        host \u003d evacuate_body.get(\"host\")"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if not host and \\"},{"line_number":56,"context_line":"                not self.ext_mgr.is_loaded(\u0027os-extended-evacuate-find-host\u0027):"},{"line_number":57,"context_line":"            msg \u003d _(\"host must be specified.\")"},{"line_number":58,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F9oE%3D","line":55,"in_reply_to":"AAAAU3%2F%2F%2B98%3D","updated":"2014-02-23 13:39:40.000000000","message":"Done","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"}],"nova/api/openstack/compute/contrib/extended_evacuate_find_host.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"0654a62fb8f70db32eeab2f4e0d9a96be46892fe","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Extended_evacuate_find_host(extensions.ExtensionDescriptor):"},{"line_number":23,"context_line":"    \"\"\"Enables server evacuation without target host. Scheduler will select"},{"line_number":24,"context_line":"       one target."},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    name \u003d \"ExtendedEvacuateFindHost\""},{"line_number":27,"context_line":"    alias \u003d \"os-extended-evacuate-find-host\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F%2B9U%3D","line":24,"updated":"2014-02-23 03:53:23.000000000","message":"nit - \"one target\" -\u003e \"one to target\"","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"6b5686f499bad5161a2e514c19a5c5c1a8e11544","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Extended_evacuate_find_host(extensions.ExtensionDescriptor):"},{"line_number":23,"context_line":"    \"\"\"Enables server evacuation without target host. Scheduler will select"},{"line_number":24,"context_line":"       one target."},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    name \u003d \"ExtendedEvacuateFindHost\""},{"line_number":27,"context_line":"    alias \u003d \"os-extended-evacuate-find-host\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F9oA%3D","line":24,"in_reply_to":"AAAAU3%2F%2F%2B9U%3D","updated":"2014-02-23 13:39:40.000000000","message":"Done","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a44cf9a06f06955e4692142ab71635a4398b7aac","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova.api.openstack import extensions"},{"line_number":17,"context_line":"from nova.openstack.common import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAU3%2F%2F9QQ%3D","line":17,"updated":"2014-02-23 14:57:39.000000000","message":"from line 19 below this can be removed","commit_id":"5dd7041d3d1293b2dcb279f8f19e3da32d751abc"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"00674bed374606d2314e4da3b0f003af67d2b8a3","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova.api.openstack import extensions"},{"line_number":17,"context_line":"from nova.openstack.common import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAU3%2F%2F9LM%3D","line":17,"in_reply_to":"AAAAU3%2F%2F9QQ%3D","updated":"2014-02-23 15:36:20.000000000","message":"Done","commit_id":"5dd7041d3d1293b2dcb279f8f19e3da32d751abc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a44cf9a06f06955e4692142ab71635a4398b7aac","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from nova.api.openstack import extensions"},{"line_number":17,"context_line":"from nova.openstack.common import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Extended_evacuate_find_host(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAU3%2F%2F9QU%3D","line":19,"updated":"2014-02-23 14:57:39.000000000","message":"this is not used","commit_id":"5dd7041d3d1293b2dcb279f8f19e3da32d751abc"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"00674bed374606d2314e4da3b0f003af67d2b8a3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from nova.api.openstack import extensions"},{"line_number":17,"context_line":"from nova.openstack.common import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Extended_evacuate_find_host(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAU3%2F%2F9LE%3D","line":19,"in_reply_to":"AAAAU3%2F%2F9QU%3D","updated":"2014-02-23 15:36:20.000000000","message":"Done","commit_id":"5dd7041d3d1293b2dcb279f8f19e3da32d751abc"}],"nova/api/openstack/compute/plugins/v3/evacuate.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        authorize(context)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        try:"},{"line_number":50,"context_line":"            if len(body) !\u003d 1:"},{"line_number":51,"context_line":"                raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BsyA%3D","side":"PARENT","line":50,"updated":"2013-11-21 11:40:12.000000000","message":"We still need this.","commit_id":"b68180fb39d2a1fb92bd75dfdf91d45b54e0babb"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        authorize(context)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        try:"},{"line_number":50,"context_line":"            if len(body) !\u003d 1:"},{"line_number":51,"context_line":"                raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Box4%3D","side":"PARENT","line":50,"in_reply_to":"AAAATn%2F%2BsyA%3D","updated":"2013-11-22 07:07:11.000000000","message":"Same reason as stated earlier.","commit_id":"b68180fb39d2a1fb92bd75dfdf91d45b54e0babb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        if host:"},{"line_number":72,"context_line":"            try:"},{"line_number":73,"context_line":"                self.host_api.service_get_by_compute_host(context, host)"},{"line_number":74,"context_line":"            except exception.ComputeHostNotFound as e:"},{"line_number":75,"context_line":"                raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bsxo%3D","line":74,"updated":"2013-11-21 11:40:12.000000000","message":"Again, why this change?","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cb223a43c66def8cd29e9112ae4922d8ad87ab0a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        if host:"},{"line_number":72,"context_line":"            try:"},{"line_number":73,"context_line":"                self.host_api.service_get_by_compute_host(context, host)"},{"line_number":74,"context_line":"            except exception.ComputeHostNotFound as e:"},{"line_number":75,"context_line":"                raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BnLQ%3D","line":74,"in_reply_to":"AAAATn%2F%2Box0%3D","updated":"2013-11-22 14:13:26.000000000","message":"Same response, lets make that a follow on change we can debate separately.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        if host:"},{"line_number":72,"context_line":"            try:"},{"line_number":73,"context_line":"                self.host_api.service_get_by_compute_host(context, host)"},{"line_number":74,"context_line":"            except exception.ComputeHostNotFound as e:"},{"line_number":75,"context_line":"                raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Box0%3D","line":74,"in_reply_to":"AAAATn%2F%2Bsxo%3D","updated":"2013-11-22 07:07:11.000000000","message":"Same reason as stated earlier.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    name \u003d \"Evacuate\""},{"line_number":96,"context_line":"    alias \u003d ALIAS"},{"line_number":97,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v3\""},{"line_number":98,"context_line":"    version \u003d 1"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_resources(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bsx4%3D","line":97,"updated":"2013-11-21 11:40:12.000000000","message":"You need to bump this.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cb223a43c66def8cd29e9112ae4922d8ad87ab0a","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    name \u003d \"Evacuate\""},{"line_number":96,"context_line":"    alias \u003d ALIAS"},{"line_number":97,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v3\""},{"line_number":98,"context_line":"    version \u003d 1"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_resources(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BnKs%3D","line":97,"in_reply_to":"AAAATn%2F%2Boxs%3D","updated":"2013-11-22 14:13:26.000000000","message":"Yes, you have change the behaviour, so a client can tell if the extra behaviour is present.\n\nWhile we don\u0027t need to change versions until we release v3 API, I would like us to get used to changing the version now.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    name \u003d \"Evacuate\""},{"line_number":96,"context_line":"    alias \u003d ALIAS"},{"line_number":97,"context_line":"    namespace \u003d \"http://docs.openstack.org/compute/ext/evacuate/api/v3\""},{"line_number":98,"context_line":"    version \u003d 1"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_resources(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Boxs%3D","line":97,"in_reply_to":"AAAATn%2F%2Bsx4%3D","updated":"2013-11-22 07:07:11.000000000","message":"Didn\u0027t get it. Does it need a version increment?","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"}],"nova/compute/api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":2089,"context_line":"                new_pass\u003dadmin_password, injected_files\u003dfiles_to_inject,"},{"line_number":2090,"context_line":"                image_ref\u003dimage_href, orig_image_ref\u003dorig_image_ref,"},{"line_number":2091,"context_line":"                orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":2092,"context_line":"                host\u003dinstance[\u0027host\u0027])"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"    @wrap_check_policy"},{"line_number":2095,"context_line":"    @check_instance_lock"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bsxg%3D","line":2092,"updated":"2013-11-21 11:40:12.000000000","message":"Why is that needed here?","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cb223a43c66def8cd29e9112ae4922d8ad87ab0a","unresolved":false,"context_lines":[{"line_number":2089,"context_line":"                new_pass\u003dadmin_password, injected_files\u003dfiles_to_inject,"},{"line_number":2090,"context_line":"                image_ref\u003dimage_href, orig_image_ref\u003dorig_image_ref,"},{"line_number":2091,"context_line":"                orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":2092,"context_line":"                host\u003dinstance[\u0027host\u0027])"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"    @wrap_check_policy"},{"line_number":2095,"context_line":"    @check_instance_lock"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BnKU%3D","line":2092,"in_reply_to":"AAAATn%2F%2Bot4%3D","updated":"2013-11-22 14:13:26.000000000","message":"Yeah, I think the API is bad as its not backwards compatible. All our RPC APIs must be backwards compatible.\n\nYou should add a flag like \"pick_host_with_scheduler\u003dTrue\".","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":2089,"context_line":"                new_pass\u003dadmin_password, injected_files\u003dfiles_to_inject,"},{"line_number":2090,"context_line":"                image_ref\u003dimage_href, orig_image_ref\u003dorig_image_ref,"},{"line_number":2091,"context_line":"                orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":2092,"context_line":"                host\u003dinstance[\u0027host\u0027])"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"    @wrap_check_policy"},{"line_number":2095,"context_line":"    @check_instance_lock"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bot4%3D","line":2092,"in_reply_to":"AAAATn%2F%2Bsxg%3D","updated":"2013-11-22 07:07:11.000000000","message":"Since rebuild instance and evacuate use the same conductor task it becomes mandatory for the host to be specified at this point. Else the host scheduling workflow kicks in. \nThe other option would be to have 2 different conductor tasks, one specific to rebuild and the other specific to evacuate. This way the evacuate conductor task can get the host information from the instance.\nFor me compute api owns this information and therefore went with the first approach.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":2925,"context_line":"                               task_state\u003dtask_states.REBUILDING)"},{"line_number":2926,"context_line":"        else:"},{"line_number":2927,"context_line":"            instance \u003d self.update(context, instance, expected_task_state\u003dNone,"},{"line_number":2928,"context_line":"                               task_state\u003dtask_states.REBUILD_SCHEDULING)"},{"line_number":2929,"context_line":""},{"line_number":2930,"context_line":"        self._record_action_start(context, instance, instance_actions.EVACUATE)"},{"line_number":2931,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BsxQ%3D","line":2928,"updated":"2013-11-21 11:40:12.000000000","message":"I would rather we always go into REBUILD_SCHEDULING, but I guess this keeps API compatibility.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":2925,"context_line":"                               task_state\u003dtask_states.REBUILDING)"},{"line_number":2926,"context_line":"        else:"},{"line_number":2927,"context_line":"            instance \u003d self.update(context, instance, expected_task_state\u003dNone,"},{"line_number":2928,"context_line":"                               task_state\u003dtask_states.REBUILD_SCHEDULING)"},{"line_number":2929,"context_line":""},{"line_number":2930,"context_line":"        self._record_action_start(context, instance, instance_actions.EVACUATE)"},{"line_number":2931,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Boww%3D","line":2928,"in_reply_to":"AAAATn%2F%2BsxQ%3D","updated":"2013-11-22 07:07:11.000000000","message":"Yes.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":2203,"context_line":"                    power_state\u003dself._get_power_state(context, instance),"},{"line_number":2204,"context_line":"                    task_state\u003dtask_states.REBUILDING,"},{"line_number":2205,"context_line":"                    expected_task_state\u003d[task_states.REBUILDING,"},{"line_number":2206,"context_line":"                                         task_states.REBUILD_SCHEDULING])"},{"line_number":2207,"context_line":""},{"line_number":2208,"context_line":"            if recreate:"},{"line_number":2209,"context_line":"                self.network_api.setup_networks_on_host("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bsw8%3D","line":2206,"updated":"2013-11-21 11:40:12.000000000","message":"Surely by the time we reach compute we would be in the REBUILDING phase?","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":2203,"context_line":"                    power_state\u003dself._get_power_state(context, instance),"},{"line_number":2204,"context_line":"                    task_state\u003dtask_states.REBUILDING,"},{"line_number":2205,"context_line":"                    expected_task_state\u003d[task_states.REBUILDING,"},{"line_number":2206,"context_line":"                                         task_states.REBUILD_SCHEDULING])"},{"line_number":2207,"context_line":""},{"line_number":2208,"context_line":"            if recreate:"},{"line_number":2209,"context_line":"                self.network_api.setup_networks_on_host("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bork%3D","line":2206,"in_reply_to":"AAAATn%2F%2Bsw8%3D","updated":"2013-11-22 07:07:11.000000000","message":"Yes. will make the changes.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"}],"nova/conductor/manager.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"e00dedc576f79ecc7bb7c493dbd8d57877569704","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                    select_destinations(context, request_spec,"},{"line_number":848,"context_line":"                                        filter_properties)"},{"line_number":849,"context_line":"            except exception.NoValidHost as nvh:"},{"line_number":850,"context_line":"                scheduler_utils.set_vm_state_and_notify(context, \u0027conductor\u0027,"},{"line_number":851,"context_line":"                                                        \u0027rebuild_instance\u0027,"},{"line_number":852,"context_line":"                                                        {\u0027vm_state\u0027:"},{"line_number":853,"context_line":"                                                             vm_states.ERROR,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FH9I%3D","line":850,"updated":"2013-11-14 06:03:52.000000000","message":"we\u0027d better log something here like other operation does when exception occurred.","commit_id":"fab4ee5ebacfa32f1939aa31a22fac9038961353"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"52809b89027e1ed1f2e35041b90c562410a85169","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                    select_destinations(context, request_spec,"},{"line_number":848,"context_line":"                                        filter_properties)"},{"line_number":849,"context_line":"            except exception.NoValidHost as nvh:"},{"line_number":850,"context_line":"                scheduler_utils.set_vm_state_and_notify(context, \u0027conductor\u0027,"},{"line_number":851,"context_line":"                                                        \u0027rebuild_instance\u0027,"},{"line_number":852,"context_line":"                                                        {\u0027vm_state\u0027:"},{"line_number":853,"context_line":"                                                             vm_states.ERROR,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FHyU%3D","line":850,"in_reply_to":"AAAATn%2F%2FH9I%3D","updated":"2013-11-14 06:28:06.000000000","message":"scheduler_utils.set_vm_state_and_notify() does the same.","commit_id":"fab4ee5ebacfa32f1939aa31a22fac9038961353"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"446b13161f3a404858284234737826f8b8f1e267","unresolved":false,"context_lines":[{"line_number":843,"context_line":"            filter_properties \u003d {\u0027ignore_hosts\u0027: [instance[\u0027host\u0027]]}"},{"line_number":844,"context_line":"            request_spec \u003d scheduler_utils.build_request_spec(context,"},{"line_number":845,"context_line":"                                                              image_ref,"},{"line_number":846,"context_line":"                                                              instance)"},{"line_number":847,"context_line":"            try:"},{"line_number":848,"context_line":"                hosts \u003d self.scheduler_rpcapi.\\"},{"line_number":849,"context_line":"                    select_destinations(context, request_spec,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BjOk%3D","line":846,"updated":"2013-11-24 04:52:52.000000000","message":"scheduler_utils.build_request_spec expected a list of instances. But there just pass an instance, it will failed. It should be:\n\nrequest_spec \u003d scheduler_utils.build_request_spec(context, image_ref, [instance])","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ffceefe236b8e8878b69cc816b400fc05d270950","unresolved":false,"context_lines":[{"line_number":843,"context_line":"            filter_properties \u003d {\u0027ignore_hosts\u0027: [instance[\u0027host\u0027]]}"},{"line_number":844,"context_line":"            request_spec \u003d scheduler_utils.build_request_spec(context,"},{"line_number":845,"context_line":"                                                              image_ref,"},{"line_number":846,"context_line":"                                                              instance)"},{"line_number":847,"context_line":"            try:"},{"line_number":848,"context_line":"                hosts \u003d self.scheduler_rpcapi.\\"},{"line_number":849,"context_line":"                    select_destinations(context, request_spec,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bg0E%3D","line":846,"in_reply_to":"AAAATn%2F%2BjOk%3D","updated":"2013-11-25 10:06:18.000000000","message":"Good catch. Thanks. Shall make the change.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"28ca008100ea3bc995afdcef2c12c5491f02df91","unresolved":false,"context_lines":[{"line_number":849,"context_line":"                    select_destinations(context, request_spec,"},{"line_number":850,"context_line":"                                        filter_properties)"},{"line_number":851,"context_line":"            except exception.NoValidHost as nvh:"},{"line_number":852,"context_line":"                scheduler_utils.set_vm_state_and_notify(context, \u0027conductor\u0027,"},{"line_number":853,"context_line":"                                                        \u0027rebuild_instance\u0027,"},{"line_number":854,"context_line":"                                                        {\u0027vm_state\u0027:"},{"line_number":855,"context_line":"                                                             vm_states.ERROR,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BgzQ%3D","line":852,"updated":"2013-11-25 10:05:55.000000000","message":"Other uses of this method in ComputeTaskManager set the service label for the notification to \u0027compute_task\u0027 rather than \u0027conductor\u0027.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c6763326af73d65e2cd9e24b4d20ec974630c31","unresolved":false,"context_lines":[{"line_number":858,"context_line":"                                                        request_spec, self.db)"},{"line_number":859,"context_line":"                return"},{"line_number":860,"context_line":"            else:"},{"line_number":861,"context_line":"                host \u003d hosts.pop(0)[\u0027host\u0027]"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        self.compute_rpcapi.rebuild_instance(ctxt\u003dcontext,"},{"line_number":864,"context_line":"            instance\u003dinstance, new_pass\u003dnew_pass,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Bsws%3D","line":861,"updated":"2013-11-21 11:40:12.000000000","message":"Once we have the host we should go from REBUILDING_SCHEDULING into REBUILDING right?","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"5f1d2e8f2976037c8c6599c6d0265c60463f962a","unresolved":false,"context_lines":[{"line_number":858,"context_line":"                                                        request_spec, self.db)"},{"line_number":859,"context_line":"                return"},{"line_number":860,"context_line":"            else:"},{"line_number":861,"context_line":"                host \u003d hosts.pop(0)[\u0027host\u0027]"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        self.compute_rpcapi.rebuild_instance(ctxt\u003dcontext,"},{"line_number":864,"context_line":"            instance\u003dinstance, new_pass\u003dnew_pass,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BorE%3D","line":861,"in_reply_to":"AAAATn%2F%2Bsws%3D","updated":"2013-11-22 07:07:11.000000000","message":"Yes. Figured out my understanding was wrong. Shall make the changes.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"}],"nova/tests/api/openstack/compute/contrib/test_evacuate.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cb223a43c66def8cd29e9112ae4922d8ad87ab0a","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        res \u003d req.get_response(app)"},{"line_number":134,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_evacuate_instance_with_no_target(self):"},{"line_number":137,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":138,"context_line":"        ctxt.user_id \u003d \u0027fake\u0027"},{"line_number":139,"context_line":"        ctxt.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BnJ0%3D","side":"PARENT","line":136,"updated":"2013-11-22 14:13:26.000000000","message":"So we still need this test right? But we should ensure it how gives us a success response?","commit_id":"b68180fb39d2a1fb92bd75dfdf91d45b54e0babb"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c48b4d5339584229f6970c55ab9be4eef791992c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import mock"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2F9Hw%3D","line":28,"updated":"2014-02-23 15:53:10.000000000","message":"Move it under \"import webob\"","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"e67b706e46c70c00fbb1001e5f075d5984f58039","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import mock"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2F8%2BA%3D","line":28,"in_reply_to":"AAAAU3%2F%2F9Hw%3D","updated":"2014-02-23 17:04:10.000000000","message":"I will move the test to another file, so will remove this one","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c48b4d5339584229f6970c55ab9be4eef791992c","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual(res.status_int, 200)"},{"line_number":173,"context_line":"        evacuate_mock.assert_called_once_with(mock.ANY, mock.ANY, None,"},{"line_number":174,"context_line":"                                              mock.ANY, mock.ANY)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_evacuate_instance_without_on_shared_storage(self):"},{"line_number":177,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":178,"context_line":"        ctxt.user_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2F9GE%3D","line":175,"updated":"2014-02-23 15:53:10.000000000","message":"Can you please add a new file to test evacuate with api extension enabled? Seems the test case is not enough here.","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"e67b706e46c70c00fbb1001e5f075d5984f58039","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual(res.status_int, 200)"},{"line_number":173,"context_line":"        evacuate_mock.assert_called_once_with(mock.ANY, mock.ANY, None,"},{"line_number":174,"context_line":"                                              mock.ANY, mock.ANY)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_evacuate_instance_without_on_shared_storage(self):"},{"line_number":177,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":178,"context_line":"        ctxt.user_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2F8%2BI%3D","line":175,"in_reply_to":"AAAAU3%2F%2F9GE%3D","updated":"2014-02-23 17:04:10.000000000","message":"Done. Will add two test_evacuate_with_no_target on the new file, since this test is loading all the extensions.","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"679f014820fd933b7855da8d0b775a57b5134e48","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        res \u003d req.get_response(app)"},{"line_number":153,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_evacuate_instance_with_no_target(self):"},{"line_number":156,"context_line":"        ctxt \u003d self._get_admin_context()"},{"line_number":157,"context_line":"        app \u003d fakes.wsgi_app(fake_auth_context\u003dctxt)"},{"line_number":158,"context_line":"        req \u003d webob.Request.blank(\u0027/v2/fake/servers/%s/action\u0027 % self.UUID)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FpS8%3D","side":"PARENT","line":155,"updated":"2014-03-02 03:33:18.000000000","message":"Can we still keep this test for v2 API without extension?","commit_id":"3160656b2b6c20ca752a9c4396ed8fd56fcfed8b"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"8996674d47a62b5e96b0fb41ebb44d591e78813f","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        res \u003d req.get_response(app)"},{"line_number":153,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_evacuate_instance_with_no_target(self):"},{"line_number":156,"context_line":"        ctxt \u003d self._get_admin_context()"},{"line_number":157,"context_line":"        app \u003d fakes.wsgi_app(fake_auth_context\u003dctxt)"},{"line_number":158,"context_line":"        req \u003d webob.Request.blank(\u0027/v2/fake/servers/%s/action\u0027 % self.UUID)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FoPU%3D","side":"PARENT","line":155,"in_reply_to":"AAAAVX%2F%2FpS8%3D","updated":"2014-03-02 13:05:38.000000000","message":"Done","commit_id":"3160656b2b6c20ca752a9c4396ed8fd56fcfed8b"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"679f014820fd933b7855da8d0b775a57b5134e48","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"CONF.import_opt(\u0027password_length\u0027, \u0027nova.utils\u0027)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FpTw%3D","line":28,"updated":"2014-03-02 03:33:18.000000000","message":"Why adding this line?","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"8996674d47a62b5e96b0fb41ebb44d591e78813f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"CONF.import_opt(\u0027password_length\u0027, \u0027nova.utils\u0027)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FoPw%3D","line":28,"in_reply_to":"AAAAVX%2F%2FpTw%3D","updated":"2014-03-02 13:05:38.000000000","message":"Done","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"679f014820fd933b7855da8d0b775a57b5134e48","unresolved":false,"context_lines":[{"line_number":61,"context_line":"class EvacuateTest(test.NoDBTestCase):"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    _methods \u003d (\u0027resize\u0027, \u0027evacuate\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(EvacuateTest, self).setUp()"},{"line_number":67,"context_line":"        self.stubs.Set(compute_api.API, \u0027get\u0027, fake_compute_api_get)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FpS0%3D","line":64,"updated":"2014-03-02 03:33:18.000000000","message":"Just curious how the UT passed for this?\n \nIn v2, we added self.ext_mgr.is_loaded(), but no self.ext_mgr was defined here, how does the ut passed?","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"8996674d47a62b5e96b0fb41ebb44d591e78813f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"class EvacuateTest(test.NoDBTestCase):"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    _methods \u003d (\u0027resize\u0027, \u0027evacuate\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(EvacuateTest, self).setUp()"},{"line_number":67,"context_line":"        self.stubs.Set(compute_api.API, \u0027get\u0027, fake_compute_api_get)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FoPo%3D","line":64,"in_reply_to":"AAAAVX%2F%2FpS0%3D","updated":"2014-03-02 13:05:38.000000000","message":"Actually, in the next patch i have setup the specific extension, since by defaults it loads all, so test without target will pass.","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"}],"nova/tests/api/openstack/compute/plugins/v3/test_evacuate.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cb223a43c66def8cd29e9112ae4922d8ad87ab0a","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        return req, app"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_evacuate_instance_with_no_target(self):"},{"line_number":87,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027on_shared_storage\u0027: \u0027False\u0027,"},{"line_number":88,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":89,"context_line":"        res \u003d req.get_response(app)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BnJc%3D","side":"PARENT","line":86,"updated":"2013-11-22 14:13:26.000000000","message":"As before, we still need this test, just the response is now success.","commit_id":"b68180fb39d2a1fb92bd75dfdf91d45b54e0babb"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"0654a62fb8f70db32eeab2f4e0d9a96be46892fe","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027on_shared_storage\u0027: \u0027False\u0027,"},{"line_number":89,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":90,"context_line":"        res \u003d req.get_response(app)"},{"line_number":91,"context_line":"        self.assertEqual(200, res.status_int)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_evacuate_instance_with_empty_host(self):"},{"line_number":94,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F%2B9M%3D","line":91,"updated":"2014-02-23 03:53:23.000000000","message":"I think it would be a good idea to verify that host\u003dNone is passed to compute_api.evacuate","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"6b5686f499bad5161a2e514c19a5c5c1a8e11544","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027on_shared_storage\u0027: \u0027False\u0027,"},{"line_number":89,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":90,"context_line":"        res \u003d req.get_response(app)"},{"line_number":91,"context_line":"        self.assertEqual(200, res.status_int)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_evacuate_instance_with_empty_host(self):"},{"line_number":94,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F9nA%3D","line":91,"in_reply_to":"AAAAU3%2F%2F%2B9M%3D","updated":"2014-02-23 13:39:40.000000000","message":"Done","commit_id":"600d5b2a7b0045312818d4d0d829fe06ad3ceac1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c48b4d5339584229f6970c55ab9be4eef791992c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import mock"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":"CONF.import_opt(\u0027password_length\u0027, \u0027nova.utils\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2F9Hg%3D","line":28,"updated":"2014-02-23 15:53:10.000000000","message":"Move this under \"import webob\"","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"e67b706e46c70c00fbb1001e5f075d5984f58039","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests.api.openstack import fakes"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import mock"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":"CONF.import_opt(\u0027password_length\u0027, \u0027nova.utils\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2F89o%3D","line":28,"in_reply_to":"AAAAU3%2F%2F9Hg%3D","updated":"2014-02-23 17:04:10.000000000","message":"Done","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"}],"nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c5404b9f7583e10c82cc7bdc63740ea0470f4433","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_evacuate_find_host/api/v2\","},{"line_number":633,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":634,"context_line":"        }"},{"line_number":635,"context_line":"\t"},{"line_number":636,"context_line":"    ]"},{"line_number":637,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":4,"id":"AAAAUX%2F%2B9%2BI%3D","line":635,"updated":"2014-02-17 22:42:22.000000000","message":"Whitespace.","commit_id":"35868016ec23665361d9da64b52fb4b8b95bcb2f"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"aaa61afc4530d8ee558fdcfa877040bc7a05c82f","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_evacuate_find_host/api/v2\","},{"line_number":633,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":634,"context_line":"        }"},{"line_number":635,"context_line":"\t"},{"line_number":636,"context_line":"    ]"},{"line_number":637,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":4,"id":"AAAAUX%2F%2B9rI%3D","line":635,"in_reply_to":"AAAAUX%2F%2B9%2BI%3D","updated":"2014-02-18 18:21:39.000000000","message":"will fix that.","commit_id":"35868016ec23665361d9da64b52fb4b8b95bcb2f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a44cf9a06f06955e4692142ab71635a4398b7aac","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_services_delete/api/v2\","},{"line_number":633,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":634,"context_line":"        },"},{"line_number":635,"context_line":"  \t{"},{"line_number":636,"context_line":"            \"alias\": \"os-extended-evacuate-find-host\","},{"line_number":637,"context_line":"            \"description\": \"%(text)s\","},{"line_number":638,"context_line":"            \"links\": [],"}],"source_content_type":"text/x-smarty","patch_set":7,"id":"AAAAU3%2F%2F9P4%3D","line":635,"updated":"2014-02-23 14:57:39.000000000","message":"whitespace","commit_id":"5dd7041d3d1293b2dcb279f8f19e3da32d751abc"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"00674bed374606d2314e4da3b0f003af67d2b8a3","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_services_delete/api/v2\","},{"line_number":633,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":634,"context_line":"        },"},{"line_number":635,"context_line":"  \t{"},{"line_number":636,"context_line":"            \"alias\": \"os-extended-evacuate-find-host\","},{"line_number":637,"context_line":"            \"description\": \"%(text)s\","},{"line_number":638,"context_line":"            \"links\": [],"}],"source_content_type":"text/x-smarty","patch_set":7,"id":"AAAAU3%2F%2F9Ks%3D","line":635,"in_reply_to":"AAAAU3%2F%2F9P4%3D","updated":"2014-02-23 15:36:20.000000000","message":"Done","commit_id":"5dd7041d3d1293b2dcb279f8f19e3da32d751abc"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c48b4d5339584229f6970c55ab9be4eef791992c","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_services_delete/api/v2\","},{"line_number":633,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":634,"context_line":"        },"},{"line_number":635,"context_line":"  \t{"},{"line_number":636,"context_line":"            \"alias\": \"os-extended-evacuate-find-host\","},{"line_number":637,"context_line":"            \"description\": \"%(text)s\","},{"line_number":638,"context_line":"            \"links\": [],"}],"source_content_type":"text/x-smarty","patch_set":8,"id":"AAAAU3%2F%2F9HI%3D","line":635,"updated":"2014-02-23 15:53:10.000000000","message":"rebase error?","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"e67b706e46c70c00fbb1001e5f075d5984f58039","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/extended_services_delete/api/v2\","},{"line_number":633,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":634,"context_line":"        },"},{"line_number":635,"context_line":"  \t{"},{"line_number":636,"context_line":"            \"alias\": \"os-extended-evacuate-find-host\","},{"line_number":637,"context_line":"            \"description\": \"%(text)s\","},{"line_number":638,"context_line":"            \"links\": [],"}],"source_content_type":"text/x-smarty","patch_set":8,"id":"AAAAU3%2F%2F89I%3D","line":635,"in_reply_to":"AAAAU3%2F%2F9HI%3D","updated":"2014-02-23 17:04:10.000000000","message":"will try to fix it again. My editor seems to be against me :)","commit_id":"e617fd362366fd153708147dc3f392bf61b327a9"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"722cbfa7db503246bb1ad5a089856a5bee8eac10","unresolved":false,"context_lines":[{"line_number":3133,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":3134,"context_line":"        self._verify_response(\u0027server-evacuate-resp\u0027, subs, response, 200)"},{"line_number":3135,"context_line":""},{"line_number":3136,"context_line":"    def test_server_find_host_and_evacuate(self):"},{"line_number":3137,"context_line":"        uuid \u003d self._post_server()"},{"line_number":3138,"context_line":""},{"line_number":3139,"context_line":"        req_subs \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Biy0%3D","line":3136,"updated":"2013-11-24 16:02:02.000000000","message":"This needs to be put in your extension once the V2 extension was added. You can refer to ExtendedQuotas for detail.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7602,"name":"Claxton Correya","email":"claxton@gmail.com","username":"claxton"},"change_message_id":"ffceefe236b8e8878b69cc816b400fc05d270950","unresolved":false,"context_lines":[{"line_number":3133,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":3134,"context_line":"        self._verify_response(\u0027server-evacuate-resp\u0027, subs, response, 200)"},{"line_number":3135,"context_line":""},{"line_number":3136,"context_line":"    def test_server_find_host_and_evacuate(self):"},{"line_number":3137,"context_line":"        uuid \u003d self._post_server()"},{"line_number":3138,"context_line":""},{"line_number":3139,"context_line":"        req_subs \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BgwY%3D","line":3136,"in_reply_to":"AAAATn%2F%2Biy0%3D","updated":"2013-11-25 10:06:18.000000000","message":"Yes. Making the necessary changes.","commit_id":"f5aed20bdd492354825e3b93afc2837e6aebefca"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"679f014820fd933b7855da8d0b775a57b5134e48","unresolved":false,"context_lines":[{"line_number":3143,"context_line":"        }"},{"line_number":3144,"context_line":""},{"line_number":3145,"context_line":"        def fake_service_is_up(self, service):"},{"line_number":3146,"context_line":"            \"\"\"Simulate validation of instance host is down.\"\"\""},{"line_number":3147,"context_line":"            return False"},{"line_number":3148,"context_line":""},{"line_number":3149,"context_line":"        def fake_service_get_by_compute_host(self, context, host):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FpSo%3D","line":3146,"updated":"2014-03-02 03:33:18.000000000","message":"It is not supposed to use doc string for unit test. https://bugs.launchpad.net/hacking/+bug/1249612","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"8996674d47a62b5e96b0fb41ebb44d591e78813f","unresolved":false,"context_lines":[{"line_number":3143,"context_line":"        }"},{"line_number":3144,"context_line":""},{"line_number":3145,"context_line":"        def fake_service_is_up(self, service):"},{"line_number":3146,"context_line":"            \"\"\"Simulate validation of instance host is down.\"\"\""},{"line_number":3147,"context_line":"            return False"},{"line_number":3148,"context_line":""},{"line_number":3149,"context_line":"        def fake_service_get_by_compute_host(self, context, host):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FoO8%3D","line":3146,"in_reply_to":"AAAAVX%2F%2FpSo%3D","updated":"2014-03-02 13:05:38.000000000","message":"Jay, the link opens a IE6 related bug.\nThere are lot of docstrings in this unittest, but since this may be a \"new thing\" i will remove my tests docstring.\nthanks","commit_id":"a930938e19c7d76a1c8ec7881e398feba499b709"}]}
