)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"17f14aefe56ebb75518ec0f03bfb9f7d9ba79757","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to append the cyborg resource request to the"},{"line_number":11,"context_line":"request spec when performing an evacuate."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Note this patch does not create and bind arqs"},{"line_number":14,"context_line":"at the correct point to fully fix evac but"},{"line_number":15,"context_line":"it does correct the placment allocations."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I147bf4d95e6d86ff1f967a8ce37260730f21d236"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df33271e_5e15ad49","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":41},"updated":"2020-03-26 23:23:16.000000000","message":"i also developed this against the previous iteration and cherry picked it so i need to remove the api check in the next version to allow evacuation.","commit_id":"baa9edbc2c52fe2028e783d83285a309259f00de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4e7a13fb37cdde5bd2ef76898ce926923bb6a5aa","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-03-27 14:21:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] cyborg evacuate support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the conductor manager"},{"line_number":10,"context_line":"to append the cyborg resource request to the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"df33271e_880ece38","line":7,"range":{"start_line":7,"start_character":13,"end_line":7,"end_character":21},"updated":"2020-03-27 14:24:47.000000000","message":"this is actully evacuate and rebuild support\nsince the accel_info is missing for rebuild too","commit_id":"ac2ecf98775e3ccce1bf9a3025fdb13c2162ca03"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"720c13b1821c4043d26b4b66f41a50492a8126c7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-03-31 21:58:10 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] cyborg evacuate support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the conductor manager"},{"line_number":10,"context_line":"to append the cyborg resource request to the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"df33271e_fa4b9627","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2020-03-31 22:16:21.000000000","message":"i think rebuild is not working correctly and all that remains is to bind the arqs to make evacuate work as i am correctly handling the creation of the new allocations and arqs.","commit_id":"47eba4769359797622bb30c7a03070c610b5e096"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fa3421736b9abd47e18c0ce7a4740277ae28faa2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-03-31 21:58:10 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] cyborg evacuate support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the conductor manager"},{"line_number":10,"context_line":"to append the cyborg resource request to the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"df33271e_dacdf285","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"in_reply_to":"df33271e_fa4b9627","updated":"2020-03-31 22:29:30.000000000","message":"when i rebase this i proably should update the release note too.","commit_id":"47eba4769359797622bb30c7a03070c610b5e096"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2277c4da2fa9ee04d5dbbd83630d9371a5e3f131","unresolved":false,"context_lines":[{"line_number":14,"context_line":"and evacuate. On evacuate the existing ARQs will be deleted"},{"line_number":15,"context_line":"and new ARQs will be created an bound, during rebuild the"},{"line_number":16,"context_line":"existing ARQs are reused."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I147bf4d95e6d86ff1f967a8ce37260730f21d236"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df33271e_6d7f9365","line":17,"updated":"2020-04-03 01:29:07.000000000","message":"This change extents the comptue api by adding ...\n\nTodo: rebase on top of top of series then update release note\nto reflect rebuild and evacutate support.","commit_id":"d576810d14ece26d630a3a9210cacabbdaae758e"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3c3a5b118f9d9b68be5cdc318e087f680df783ab","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Implements: blueprint cyborg-rebuild-and-evacuate"},{"line_number":27,"context_line":"Change-Id: I147bf4d95e6d86ff1f967a8ce37260730f21d236"},{"line_number":28,"context_line":"(cherry picked from commit 20ffaa98830b8c35f60fbe4e5c7578f8cdae9324)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"9f560f44_91358249","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":68},"updated":"2020-07-30 02:48:03.000000000","message":"this is not necessary, will be removed in next patch.","commit_id":"7be5ef138b369fb2f81a0034111909d246775aef"}],"api-guide/source/accelerator-support.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    * Backup."},{"line_number":43,"context_line":"    * Rescue and unrescue."},{"line_number":44,"context_line":"    * Rebuild."},{"line_number":45,"context_line":"    * Resize."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  * Unsupported operations"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"df33271e_53f7368c","line":45,"range":{"start_line":45,"start_character":6,"end_line":45,"end_character":13},"updated":"2020-04-09 15:17:09.000000000","message":"Did you mean to bring evacuate up to this list with rebuild?","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    * Backup."},{"line_number":43,"context_line":"    * Rescue and unrescue."},{"line_number":44,"context_line":"    * Rebuild."},{"line_number":45,"context_line":"    * Resize."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  * Unsupported operations"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"df33271e_eebc9ddd","line":45,"range":{"start_line":45,"start_character":6,"end_line":45,"end_character":13},"in_reply_to":"df33271e_53f7368c","updated":"2020-04-09 15:48:23.000000000","message":"crap yes i did","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e342d13a335685c5870e9e38c129bd808b445f97","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    * Backup."},{"line_number":43,"context_line":"    * Rescue and unrescue."},{"line_number":44,"context_line":"    * Rebuild."},{"line_number":45,"context_line":"    * Resize."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  * Unsupported operations"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1f493fa4_2800ab67","line":45,"range":{"start_line":45,"start_character":6,"end_line":45,"end_character":13},"in_reply_to":"df33271e_eebc9ddd","updated":"2020-04-22 04:33:14.000000000","message":"Done","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* Supported operations."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    * Creation and deletion."},{"line_number":39,"context_line":"    * Reboots (soft and hard)."},{"line_number":40,"context_line":"    * Pause and unpause."},{"line_number":41,"context_line":"    * Stop and start."}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_092d55fd","line":38,"range":{"start_line":38,"start_character":2,"end_line":38,"end_character":4},"updated":"2020-08-25 09:36:38.000000000","message":"you need to align the * under the first char (\u0027S)\u0027 of the parent list\n\n* Supported operations.\n\n  * Creation and deletion.\n  * Reboots (soft and hard).\n  * Pause and unpause.\n  * Stop and start.\n  * Take a snapshot.\n  * Backup.\n  * Rescue and unrescue.\n  * Rebuild.\n  * Evacuate.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* Supported operations."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    * Creation and deletion."},{"line_number":39,"context_line":"    * Reboots (soft and hard)."},{"line_number":40,"context_line":"    * Pause and unpause."},{"line_number":41,"context_line":"    * Stop and start."}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_e3646b24","line":38,"range":{"start_line":38,"start_character":2,"end_line":38,"end_character":4},"in_reply_to":"9f560f44_092d55fd","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":48,"context_line":"* Unsupported operations"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Resize."},{"line_number":51,"context_line":"    * Suspend and resume."},{"line_number":52,"context_line":"    * Shelve and unshelve."},{"line_number":53,"context_line":"    * Cold migration."},{"line_number":54,"context_line":"    * Live migration."}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_29365952","line":51,"updated":"2020-08-25 09:36:38.000000000","message":"dito","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"* Unsupported operations"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Resize."},{"line_number":51,"context_line":"    * Suspend and resume."},{"line_number":52,"context_line":"    * Shelve and unshelve."},{"line_number":53,"context_line":"    * Cold migration."},{"line_number":54,"context_line":"    * Live migration."}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_c367a724","line":51,"in_reply_to":"9f560f44_29365952","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  * Take a snapshot."},{"line_number":43,"context_line":"  * Backup."},{"line_number":44,"context_line":"  * Rescue and unrescue."},{"line_number":45,"context_line":"  * Rebuild."},{"line_number":46,"context_line":"  * Evacuate."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Unsupported operations"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9f560f44_52c86420","line":45,"updated":"2020-08-27 13:22:02.000000000","message":"Do you want to add a \u0027versionchanged\u0027 directive or some other note indicating that things have changed?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    openstack server create --flavor $myflavor --image $myimage $servername"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"As of 21.0.0 (Ussuri), nova supports only specific operations for instances"},{"line_number":33,"context_line":"with accelerators. The lists of supported and unsupported operations are as"},{"line_number":34,"context_line":"below:"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_1cfed56a","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":24},"updated":"2020-08-31 10:09:38.000000000","message":"Drop this","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    openstack server create --flavor $myflavor --image $myimage $servername"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"As of 21.0.0 (Ussuri), nova supports only specific operations for instances"},{"line_number":33,"context_line":"with accelerators. The lists of supported and unsupported operations are as"},{"line_number":34,"context_line":"below:"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_a257c426","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":24},"in_reply_to":"9f560f44_1cfed56a","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Cold migration."},{"line_number":54,"context_line":"  * Live migration."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"   .. versionchanged:: 21.1.0"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      Support ``Rebuild`` and ``Evacuate`` by the Victoria release and"},{"line_number":59,"context_line":"      later versions."}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_dc03bd75","line":56,"range":{"start_line":56,"start_character":23,"end_line":56,"end_character":29},"updated":"2020-08-31 10:09:38.000000000","message":"22.0.0 (Victoria)","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Cold migration."},{"line_number":54,"context_line":"  * Live migration."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"   .. versionchanged:: 21.1.0"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      Support ``Rebuild`` and ``Evacuate`` by the Victoria release and"},{"line_number":59,"context_line":"      later versions."}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_425a2850","line":56,"range":{"start_line":56,"start_character":23,"end_line":56,"end_character":29},"in_reply_to":"9f560f44_dc03bd75","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"   .. versionchanged:: 21.1.0"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      Support ``Rebuild`` and ``Evacuate`` by the Victoria release and"},{"line_number":59,"context_line":"      later versions."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Some operations, such as lock and unlock, work as they are effectively"},{"line_number":62,"context_line":"no-ops for accelerators."}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_bc088991","line":59,"range":{"start_line":58,"start_character":6,"end_line":59,"end_character":21},"updated":"2020-08-31 10:09:38.000000000","message":"Added support for rebuild and evacuate operations.","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"   .. versionchanged:: 21.1.0"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      Support ``Rebuild`` and ``Evacuate`` by the Victoria release and"},{"line_number":59,"context_line":"      later versions."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Some operations, such as lock and unlock, work as they are effectively"},{"line_number":62,"context_line":"no-ops for accelerators."}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_625dac47","line":59,"range":{"start_line":58,"start_character":6,"end_line":59,"end_character":21},"in_reply_to":"9f560f44_bc088991","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a53caccda017944947d99340c7d4261570a1381f","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      Support ``Rebuild`` and ``Evacuate`` by the Victoria release and"},{"line_number":59,"context_line":"      later versions."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Some operations, such as lock and unlock, work as they are effectively"},{"line_number":62,"context_line":"no-ops for accelerators."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_b9c09be2","line":60,"updated":"2020-08-31 09:00:25.000000000","message":"I\u0027m wondering if this is now confusing as rebuild and evacuate is also in the list above where the header says Ussuri.","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      Support ``Rebuild`` and ``Evacuate`` by the Victoria release and"},{"line_number":59,"context_line":"      later versions."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Some operations, such as lock and unlock, work as they are effectively"},{"line_number":62,"context_line":"no-ops for accelerators."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_5cf7ad8d","line":60,"in_reply_to":"9f560f44_b9c09be2","updated":"2020-08-31 10:09:38.000000000","message":"+1. I think we should drop the \"As of 21.0.0 (Ussuri), \" prefix","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fddce3d4c47f347f77a2d543d552b38832dc2799","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  * Cold migration."},{"line_number":53,"context_line":"  * Live migration."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"   .. versionchanged:: 22.0.0(Victoria)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      Added support for rebuild and evacuate operations."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9f560f44_70e1ed2a","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":3},"updated":"2020-08-31 16:45:08.000000000","message":"This needs to be dedented. As it stands, it will appear under the \u0027Unsupported operations\u0027 bullet, which is incorrect","commit_id":"f837a6b754df41c31da25ad10af6eccdc39f03ef"}],"nova/accelerator/cyborg.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":309,"context_line":"           :param instance: Instance Object"},{"line_number":310,"context_line":"           :param dp_name: Device Profile Name"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        dp_name \u003d dp_name or instance.flavor.extra_specs.get("},{"line_number":313,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":314,"context_line":"        if not dp_name:"},{"line_number":315,"context_line":"            return []"},{"line_number":316,"context_line":"        return [arq[\u0027uuid\u0027]"},{"line_number":317,"context_line":"                for arq in self.get_arqs_for_instance(instance.uuid)]"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_34f49487","line":315,"range":{"start_line":312,"start_character":0,"end_line":315,"end_character":21},"updated":"2020-07-20 11:02:26.000000000","message":"This feels overly complicated. The only caller of this now already has a dp_name guard condition so this is unnecessary here.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":309,"context_line":"           :param instance: Instance Object"},{"line_number":310,"context_line":"           :param dp_name: Device Profile Name"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        dp_name \u003d dp_name or instance.flavor.extra_specs.get("},{"line_number":313,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":314,"context_line":"        if not dp_name:"},{"line_number":315,"context_line":"            return []"},{"line_number":316,"context_line":"        return [arq[\u0027uuid\u0027]"},{"line_number":317,"context_line":"                for arq in self.get_arqs_for_instance(instance.uuid)]"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_d7a24a9a","line":315,"range":{"start_line":312,"start_character":0,"end_line":315,"end_character":21},"in_reply_to":"bf51134e_34f49487","updated":"2020-07-30 09:16:25.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    def get_arq_uuids_for_instance(self, instance):"},{"line_number":307,"context_line":"        \"\"\"Get ARQ UUIDs for the instance."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"           :param instance: Instance Object"},{"line_number":310,"context_line":"           :return: ARQ uuids."},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        return [arq[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_b23c60bf","line":309,"range":{"start_line":309,"start_character":8,"end_line":309,"end_character":11},"updated":"2020-08-27 13:22:02.000000000","message":"nit","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":310,"context_line":"           :return: ARQ uuids."},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        return [arq[\u0027uuid\u0027]"},{"line_number":313,"context_line":"                for arq in self.get_arqs_for_instance(instance.uuid)]"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_52634442","line":313,"updated":"2020-08-27 13:22:02.000000000","message":"This appears to have a single caller. Do we need it? Could we just flatten this into the caller instead?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f219bb8e92c6eb2df9156128e5199229a51ca728","unresolved":false,"context_lines":[{"line_number":310,"context_line":"           :return: ARQ uuids."},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        return [arq[\u0027uuid\u0027]"},{"line_number":313,"context_line":"                for arq in self.get_arqs_for_instance(instance.uuid)]"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_06e4f13a","line":313,"in_reply_to":"9f560f44_52634442","updated":"2020-08-27 13:38:04.000000000","message":"We will use this function in the cyborg shelve/unshelve support patch [1], not only in this feature. May in the cyborg suspend/resume support also need to use, so we will keep it here, just fix above nit.\n\n[1]https://review.opendev.org/#/c/729563/8/nova/compute/api.py@4033","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    def get_arq_uuids_for_instance(self, instance):"},{"line_number":307,"context_line":"        \"\"\"Get ARQ UUIDs for the instance."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"           :param instance: Instance Object"},{"line_number":310,"context_line":"           :return: ARQ uuids."},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        return [arq[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_fc37a14c","line":309,"range":{"start_line":309,"start_character":8,"end_line":309,"end_character":11},"updated":"2020-08-31 10:09:38.000000000","message":"https://review.opendev.org/#/c/715326/22/nova/accelerator/cyborg.py@309","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    def get_arq_uuids_for_instance(self, instance):"},{"line_number":307,"context_line":"        \"\"\"Get ARQ UUIDs for the instance."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"           :param instance: Instance Object"},{"line_number":310,"context_line":"           :return: ARQ uuids."},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        return [arq[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_0d86a1dc","line":309,"range":{"start_line":309,"start_character":8,"end_line":309,"end_character":11},"in_reply_to":"9f560f44_fc37a14c","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/compute/api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":3382,"context_line":"            if img_arch:"},{"line_number":3383,"context_line":"                fields_obj.Architecture.canonicalize(img_arch)"},{"line_number":3384,"context_line":""},{"line_number":3385,"context_line":"    @block_accelerators"},{"line_number":3386,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3387,"context_line":"    @check_instance_lock"},{"line_number":3388,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_ce3399aa","side":"PARENT","line":3385,"updated":"2020-04-09 15:17:09.000000000","message":"This will allow us to do this operation via the API, even if the instance is running on an older compute that does not yet know how to do rebuild or evacuate with accelerators.\n\nYou have a new service version to indicate support, so we might as well check that everything has been upgraded before allowing right?","commit_id":"cad737271b9b5e00dd5262a156ae072006f121dc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e342d13a335685c5870e9e38c129bd808b445f97","unresolved":false,"context_lines":[{"line_number":3382,"context_line":"            if img_arch:"},{"line_number":3383,"context_line":"                fields_obj.Architecture.canonicalize(img_arch)"},{"line_number":3384,"context_line":""},{"line_number":3385,"context_line":"    @block_accelerators"},{"line_number":3386,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3387,"context_line":"    @check_instance_lock"},{"line_number":3388,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_68f9137f","side":"PARENT","line":3385,"in_reply_to":"3f4c43b2_887114e4","updated":"2020-04-22 04:33:14.000000000","message":"Done","commit_id":"cad737271b9b5e00dd5262a156ae072006f121dc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":3382,"context_line":"            if img_arch:"},{"line_number":3383,"context_line":"                fields_obj.Architecture.canonicalize(img_arch)"},{"line_number":3384,"context_line":""},{"line_number":3385,"context_line":"    @block_accelerators"},{"line_number":3386,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3387,"context_line":"    @check_instance_lock"},{"line_number":3388,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_ee065d86","side":"PARENT","line":3385,"in_reply_to":"df33271e_ce3399aa","updated":"2020-04-09 15:48:23.000000000","message":"... yes i can do that\n\nim wondering if that is something i should do as a generic extentions to the existing decorator or if i should just do that check inline.\n\ni think inline as i dont see a way to do it generically via a decorator.","commit_id":"cad737271b9b5e00dd5262a156ae072006f121dc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":3382,"context_line":"            if img_arch:"},{"line_number":3383,"context_line":"                fields_obj.Architecture.canonicalize(img_arch)"},{"line_number":3384,"context_line":""},{"line_number":3385,"context_line":"    @block_accelerators"},{"line_number":3386,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3387,"context_line":"    @check_instance_lock"},{"line_number":3388,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_887114e4","side":"PARENT","line":3385,"in_reply_to":"df33271e_ee065d86","updated":"2020-04-13 13:49:27.000000000","message":"@block_accelerators(until_service\u003d53) ?","commit_id":"cad737271b9b5e00dd5262a156ae072006f121dc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c092cb776f3b77a1135066d9d10816565dae320","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    return image_meta"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"def block_accelerators(until_service\u003dNone):"},{"line_number":289,"context_line":"    def inner(func):"},{"line_number":290,"context_line":"        @functools.wraps(func)"},{"line_number":291,"context_line":"        def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":292,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":293,"context_line":"                    until_service \u003c service_obj.SERVICE_VERSION)"},{"line_number":294,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":295,"context_line":"            if dp_name and not skip:"},{"line_number":296,"context_line":"                raise exception.ForbiddenWithAccelerators()"},{"line_number":297,"context_line":"            return func(self, context, instance, *args, **kwargs)"},{"line_number":298,"context_line":"        return wrapper"},{"line_number":299,"context_line":"    return inner"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"@profiler.trace_cls(\"compute_api\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f493fa4_fe6cb409","line":299,"range":{"start_line":288,"start_character":1,"end_line":299,"end_character":16},"updated":"2020-04-22 12:16:15.000000000","message":"the test failfure might be related to this.","commit_id":"ca9e34a3c9ac74778dedb720f2b825918178ebf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c092cb776f3b77a1135066d9d10816565dae320","unresolved":false,"context_lines":[{"line_number":3820,"context_line":""},{"line_number":3821,"context_line":"        return node"},{"line_number":3822,"context_line":""},{"line_number":3823,"context_line":"    @block_accelerators"},{"line_number":3824,"context_line":"    @check_instance_lock"},{"line_number":3825,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"},{"line_number":3826,"context_line":"    @check_instance_host(check_is_up\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f493fa4_7e59c458","line":3823,"range":{"start_line":3823,"start_character":5,"end_line":3823,"end_character":23},"updated":"2020-04-22 12:16:15.000000000","message":"i might need to update these to have @block_accelerators()","commit_id":"ca9e34a3c9ac74778dedb720f2b825918178ebf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"98fba5928c4b8f46672b070780d7c7f3e7056103","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    def inner(func):"},{"line_number":290,"context_line":"        @functools.wraps(func)"},{"line_number":291,"context_line":"        def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":292,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":293,"context_line":"                    until_service \u003c service_obj.SERVICE_VERSION)"},{"line_number":294,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":295,"context_line":"            if dp_name and not skip:"},{"line_number":296,"context_line":"                raise exception.ForbiddenWithAccelerators()"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_ad95b542","line":293,"range":{"start_line":292,"start_character":12,"end_line":293,"end_character":64},"updated":"2020-05-14 09:16:18.000000000","message":"hum the functional tests are not working as i expect.\ni need to retest this locally but maybe i have this comparison backwards.\n\ni have not locally tested it since i added the service version check i think this should actully be\n skip \u003d (until_service is not None and\n                    service_obj.SERVICE_VERSION \u003e\u003d until_service)","commit_id":"2c27f5f5622635c6c21f959f4796f009210d0d97"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        @functools.wraps(func)"},{"line_number":290,"context_line":"        def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":291,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":292,"context_line":"                    service_obj.SERVICE_VERSION \u003e\u003d until_service)"},{"line_number":293,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":294,"context_line":"            if dp_name and not skip:"},{"line_number":295,"context_line":"                raise exception.ForbiddenWithAccelerators()"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_9475a035","line":292,"range":{"start_line":292,"start_character":20,"end_line":292,"end_character":47},"updated":"2020-07-20 11:02:26.000000000","message":"This is the service version of the service calling the compute.api. During evacuate the nova-api service calls the compute.api.evacuate function. So this service version will be the version of the nova-api not the version of the compute service we are evacuating to.\n\nSo this check will not prevent the evacuation to target an older compute.\n\nI think what you need is to block the evacuate of a server with cyborg devices if there is at least one compute in the system that is older than service version 52.\nYou can get the minimum service version in the whole deployment with the service.get_minimum_version_all_cells(ctxt, [\u0027nova-compute\u0027]) call.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        @functools.wraps(func)"},{"line_number":290,"context_line":"        def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":291,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":292,"context_line":"                    service_obj.SERVICE_VERSION \u003e\u003d until_service)"},{"line_number":293,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":294,"context_line":"            if dp_name and not skip:"},{"line_number":295,"context_line":"                raise exception.ForbiddenWithAccelerators()"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_779c1e5d","line":292,"range":{"start_line":292,"start_character":20,"end_line":292,"end_character":47},"in_reply_to":"bf51134e_9475a035","updated":"2020-07-30 09:16:25.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            # NOTE(brinzhang): Catch a request operating a mixed instance,"},{"line_number":315,"context_line":"            # make sure all nova-compute services have been upgraded and"},{"line_number":316,"context_line":"            # support the accelerators."},{"line_number":317,"context_line":"            minimal_version \u003d objects.service.get_minimum_version_all_cells("},{"line_number":318,"context_line":"                nova_context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":319,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":320,"context_line":"                    minimal_version \u003e\u003d until_service)"},{"line_number":321,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_a96f0926","line":318,"range":{"start_line":317,"start_character":0,"end_line":318,"end_character":67},"updated":"2020-08-25 09:36:38.000000000","message":"This could be an expensive operation as it might need to call down to all cells. So I would only do this if the instance has accelerators (i.e. there is a dp_name)","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            # NOTE(brinzhang): Catch a request operating a mixed instance,"},{"line_number":315,"context_line":"            # make sure all nova-compute services have been upgraded and"},{"line_number":316,"context_line":"            # support the accelerators."},{"line_number":317,"context_line":"            minimal_version \u003d objects.service.get_minimum_version_all_cells("},{"line_number":318,"context_line":"                nova_context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":319,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":320,"context_line":"                    minimal_version \u003e\u003d until_service)"},{"line_number":321,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_400f0d2d","line":318,"range":{"start_line":317,"start_character":0,"end_line":318,"end_character":67},"in_reply_to":"9f560f44_a96f0926","updated":"2020-08-26 09:01:02.000000000","message":"Done. check the dp_name first.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            # support the accelerators."},{"line_number":317,"context_line":"            minimal_version \u003d objects.service.get_minimum_version_all_cells("},{"line_number":318,"context_line":"                nova_context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":319,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":320,"context_line":"                    minimal_version \u003e\u003d until_service)"},{"line_number":321,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":322,"context_line":"            if dp_name and not skip:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_a9dd49de","line":319,"range":{"start_line":319,"start_character":12,"end_line":319,"end_character":16},"updated":"2020-08-25 09:36:38.000000000","message":"I suggest to rename this to \u0027supported\u0027 or \u0027service_support\u0027","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            # support the accelerators."},{"line_number":317,"context_line":"            minimal_version \u003d objects.service.get_minimum_version_all_cells("},{"line_number":318,"context_line":"                nova_context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":319,"context_line":"            skip \u003d (until_service is not None and"},{"line_number":320,"context_line":"                    minimal_version \u003e\u003d until_service)"},{"line_number":321,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":322,"context_line":"            if dp_name and not skip:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_a01a696b","line":319,"range":{"start_line":319,"start_character":12,"end_line":319,"end_character":16},"in_reply_to":"9f560f44_a9dd49de","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":3402,"context_line":"                fields_obj.Architecture.canonicalize(img_arch)"},{"line_number":3403,"context_line":""},{"line_number":3404,"context_line":"    @reject_vtpm_instances(instance_actions.REBUILD)"},{"line_number":3405,"context_line":"    @block_accelerators(until_service\u003d53)"},{"line_number":3406,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3407,"context_line":"    @check_instance_lock"},{"line_number":3408,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_e9f4615d","line":3405,"range":{"start_line":3405,"start_character":38,"end_line":3405,"end_character":40},"updated":"2020-08-25 09:36:38.000000000","message":"could you please add a constant for this magic number","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3402,"context_line":"                fields_obj.Architecture.canonicalize(img_arch)"},{"line_number":3403,"context_line":""},{"line_number":3404,"context_line":"    @reject_vtpm_instances(instance_actions.REBUILD)"},{"line_number":3405,"context_line":"    @block_accelerators(until_service\u003d53)"},{"line_number":3406,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3407,"context_line":"    @check_instance_lock"},{"line_number":3408,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_e029018a","line":3405,"range":{"start_line":3405,"start_character":38,"end_line":3405,"end_character":40},"in_reply_to":"9f560f44_e9f4615d","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":5132,"context_line":"                instance, migration.id)"},{"line_number":5133,"context_line":""},{"line_number":5134,"context_line":"    @reject_vtpm_instances(instance_actions.EVACUATE)"},{"line_number":5135,"context_line":"    @block_accelerators(until_service\u003d53)"},{"line_number":5136,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5137,"context_line":"                                    vm_states.ERROR])"},{"line_number":5138,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_29ebf977","line":5135,"range":{"start_line":5135,"start_character":38,"end_line":5135,"end_character":40},"updated":"2020-08-25 09:36:38.000000000","message":"ditto","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":5132,"context_line":"                instance, migration.id)"},{"line_number":5133,"context_line":""},{"line_number":5134,"context_line":"    @reject_vtpm_instances(instance_actions.EVACUATE)"},{"line_number":5135,"context_line":"    @block_accelerators(until_service\u003d53)"},{"line_number":5136,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5137,"context_line":"                                    vm_states.ERROR])"},{"line_number":5138,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_6305fb45","line":5135,"range":{"start_line":5135,"start_character":38,"end_line":5135,"end_character":40},"in_reply_to":"9f560f44_29ebf977","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            # support the accelerators."},{"line_number":319,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":320,"context_line":"            if dp_name:"},{"line_number":321,"context_line":"                min_version \u003d objects.service.get_minimum_version_all_cells("},{"line_number":322,"context_line":"                    nova_context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":323,"context_line":"                service_support \u003d (until_service is not None and"},{"line_number":324,"context_line":"                                   min_version \u003e\u003d until_service)"},{"line_number":325,"context_line":"                if not service_support:"},{"line_number":326,"context_line":"                    raise exception.ForbiddenWithAccelerators()"},{"line_number":327,"context_line":"            return func(self, context, instance, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_f2b09842","line":324,"range":{"start_line":321,"start_character":0,"end_line":324,"end_character":64},"updated":"2020-08-27 13:22:02.000000000","message":"nit:\n\n  service_support \u003d False\n  if until_service:\n      min_version \u003d objects.service.get_minimum_version_all_cells(\n          nova_context.get_admin_context(), [\u0027nova-compute\u0027])\n      service_support \u003d min_version \u003e\u003d until_service\n\nwhich avoids the service lookup unless necessary","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            # support the accelerators."},{"line_number":319,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":320,"context_line":"            if dp_name:"},{"line_number":321,"context_line":"                min_version \u003d objects.service.get_minimum_version_all_cells("},{"line_number":322,"context_line":"                    nova_context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":323,"context_line":"                service_support \u003d (until_service is not None and"},{"line_number":324,"context_line":"                                   min_version \u003e\u003d until_service)"},{"line_number":325,"context_line":"                if not service_support:"},{"line_number":326,"context_line":"                    raise exception.ForbiddenWithAccelerators()"},{"line_number":327,"context_line":"            return func(self, context, instance, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_c00f742d","line":324,"range":{"start_line":321,"start_character":0,"end_line":324,"end_character":64},"in_reply_to":"9f560f44_f2b09842","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":3903,"context_line":""},{"line_number":3904,"context_line":"    # TODO(stephenfin): This logic would be so much easier to grok if we"},{"line_number":3905,"context_line":"    # finally split resize and cold migration into separate code paths"},{"line_number":3906,"context_line":"    # TODO(stephenfin): The \u0027block_accelerators\u0027 decorator doesn\u0027t take into"},{"line_number":3907,"context_line":"    # account the accelerators requested in the new flavor"},{"line_number":3908,"context_line":"    @block_accelerators()"},{"line_number":3909,"context_line":"    @check_instance_lock"},{"line_number":3910,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_f289b86e","line":3907,"range":{"start_line":3906,"start_character":0,"end_line":3907,"end_character":58},"updated":"2020-08-27 13:22:02.000000000","message":"This needs to be resolved. Could you do a follow-up?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":3903,"context_line":""},{"line_number":3904,"context_line":"    # TODO(stephenfin): This logic would be so much easier to grok if we"},{"line_number":3905,"context_line":"    # finally split resize and cold migration into separate code paths"},{"line_number":3906,"context_line":"    # TODO(stephenfin): The \u0027block_accelerators\u0027 decorator doesn\u0027t take into"},{"line_number":3907,"context_line":"    # account the accelerators requested in the new flavor"},{"line_number":3908,"context_line":"    @block_accelerators()"},{"line_number":3909,"context_line":"    @check_instance_lock"},{"line_number":3910,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_600b0824","line":3907,"range":{"start_line":3906,"start_character":0,"end_line":3907,"end_character":58},"in_reply_to":"9f560f44_f289b86e","updated":"2020-08-28 08:13:48.000000000","message":"Done. Please see the patch: https://review.opendev.org/#/c/748560/","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":5044,"context_line":"        return _metadata"},{"line_number":5045,"context_line":""},{"line_number":5046,"context_line":"    @reject_vtpm_instances(instance_actions.LIVE_MIGRATION)"},{"line_number":5047,"context_line":"    @block_accelerators()"},{"line_number":5048,"context_line":"    @reject_sev_instances(instance_actions.LIVE_MIGRATION)"},{"line_number":5049,"context_line":"    @check_instance_lock"},{"line_number":5050,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED])"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_3c39193f","line":5047,"updated":"2020-08-31 10:09:38.000000000","message":"There\u0027s no reason to move this","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"229e9315248835205b1f4a48543eb2e177a5012c","unresolved":false,"context_lines":[{"line_number":3241,"context_line":"        if migration:"},{"line_number":3242,"context_line":"            migration.status \u003d status"},{"line_number":3243,"context_line":"            migration.save()"},{"line_number":3244,"context_line":""},{"line_number":3245,"context_line":"    def _recreate_cyborg_arq(self, instance, image_meta):"},{"line_number":3246,"context_line":"        # TODO(sean-k-mooney): this should delete the current"},{"line_number":3247,"context_line":"        # ARQ and then create a new one."},{"line_number":3248,"context_line":"        pass"},{"line_number":3249,"context_line":""},{"line_number":3250,"context_line":"    def _get_cyborg_arq(self, instance):"},{"line_number":3251,"context_line":"        # TODO(sean-k-mooney): this shoudl just retrive the current"},{"line_number":3252,"context_line":"        # arq group info."},{"line_number":3253,"context_line":"        pass"},{"line_number":3254,"context_line":""},{"line_number":3255,"context_line":"    def _rebuild_default_impl(self, context, instance, image_meta,"},{"line_number":3256,"context_line":"                              injected_files, admin_password, allocations,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_17713aaa","line":3253,"range":{"start_line":3244,"start_character":0,"end_line":3253,"end_character":12},"updated":"2020-03-27 18:00:23.000000000","message":"these are split out to make the testing simpler.","commit_id":"ac2ecf98775e3ccce1bf9a3025fdb13c2162ca03"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"229e9315248835205b1f4a48543eb2e177a5012c","unresolved":false,"context_lines":[{"line_number":3268,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":3269,"context_line":"        if evacuate:"},{"line_number":3270,"context_line":"            if device_profile:"},{"line_number":3271,"context_line":"                cyborg_info \u003d _recreate_cyborg_arq(instance, image_meta)"},{"line_number":3272,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3273,"context_line":"        else:"},{"line_number":3274,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_7746c651","line":3271,"range":{"start_line":3271,"start_character":30,"end_line":3271,"end_character":31},"updated":"2020-03-27 18:00:23.000000000","message":"self.","commit_id":"ac2ecf98775e3ccce1bf9a3025fdb13c2162ca03"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b1fcebc3a686108234d27823da6ddab7540b8881","unresolved":false,"context_lines":[{"line_number":3287,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":3288,"context_line":"            if device_profile:"},{"line_number":3289,"context_line":"                try:"},{"line_number":3290,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3291,"context_line":"                        context, device_profile, instance)"},{"line_number":3292,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3293,"context_line":"                    LOG.exception(exc.format_message())"},{"line_number":3294,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_ac560a5b","line":3291,"range":{"start_line":3290,"start_character":20,"end_line":3291,"end_character":58},"updated":"2020-03-31 12:58:10.000000000","message":"i am not calling this correclty it need the set of uuids but i can just use self._get_accel_info(context, instance)\ninstead which is what we do for reboot.","commit_id":"660d08796e6dfec6a10ebef31115dd0381ebdf43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b1fcebc3a686108234d27823da6ddab7540b8881","unresolved":false,"context_lines":[{"line_number":3290,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3291,"context_line":"                        context, device_profile, instance)"},{"line_number":3292,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3293,"context_line":"                    LOG.exception(exc.format_message())"},{"line_number":3294,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3295,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"},{"line_number":3296,"context_line":"                    raise exception.BuildAbortException("}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_2f002c01","line":3293,"range":{"start_line":3293,"start_character":19,"end_line":3293,"end_character":55},"updated":"2020-03-31 12:58:10.000000000","message":"This is only present on NovaExceptions.\n\nwhich means the other patch i copied this from is incorrect.","commit_id":"660d08796e6dfec6a10ebef31115dd0381ebdf43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"720c13b1821c4043d26b4b66f41a50492a8126c7","unresolved":false,"context_lines":[{"line_number":3250,"context_line":"            cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":3251,"context_line":"            resource_provider_mapping \u003d ("},{"line_number":3252,"context_line":"                request_spec.get_request_group_mapping())"},{"line_number":3253,"context_line":"            return cyclient.create_arqs_and_match_resource_providers("},{"line_number":3254,"context_line":"                device_profile, resource_provider_mapping)"},{"line_number":3255,"context_line":"        except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3256,"context_line":"            LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_dac33288","line":3253,"range":{"start_line":3253,"start_character":28,"end_line":3253,"end_character":68},"updated":"2020-03-31 22:16:21.000000000","message":"this is recreating the arqs but i also need to bind them before i return here.","commit_id":"47eba4769359797622bb30c7a03070c610b5e096"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fa3421736b9abd47e18c0ce7a4740277ae28faa2","unresolved":false,"context_lines":[{"line_number":3250,"context_line":"            cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":3251,"context_line":"            resource_provider_mapping \u003d ("},{"line_number":3252,"context_line":"                request_spec.get_request_group_mapping())"},{"line_number":3253,"context_line":"            return cyclient.create_arqs_and_match_resource_providers("},{"line_number":3254,"context_line":"                device_profile, resource_provider_mapping)"},{"line_number":3255,"context_line":"        except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3256,"context_line":"            LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_1afd9ab0","line":3253,"range":{"start_line":3253,"start_character":28,"end_line":3253,"end_character":68},"in_reply_to":"df33271e_dac33288","updated":"2020-03-31 22:29:30.000000000","message":"actully i wonder if i shoudl do this in the conductor instead of the compute manager since that is where we normally start the binding.","commit_id":"47eba4769359797622bb30c7a03070c610b5e096"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"95e7c955a5294b4e0f8ebc998d4fdc6aa6323edb","unresolved":false,"context_lines":[{"line_number":3242,"context_line":"            migration.status \u003d status"},{"line_number":3243,"context_line":"            migration.save()"},{"line_number":3244,"context_line":""},{"line_number":3245,"context_line":"    def _rebuild_default_impl("},{"line_number":3246,"context_line":"            self, context, instance, image_meta, injected_files,"},{"line_number":3247,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3248,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_c8420d3e","line":3245,"updated":"2020-04-03 03:13:16.000000000","message":"pep8: N322: Method\u0027s default argument shouldn\u0027t be mutable!","commit_id":"d576810d14ece26d630a3a9210cacabbdaae758e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f40463339ce01f88f06a68c791d9015e307d4da6","unresolved":false,"context_lines":[{"line_number":3247,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3248,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"},{"line_number":3249,"context_line":"            block_device_info\u003dNone, preserve_ephemeral\u003dFalse,"},{"line_number":3250,"context_line":"            accel_uuids\u003d[]):"},{"line_number":3251,"context_line":"        if preserve_ephemeral:"},{"line_number":3252,"context_line":"            # The default code path does not support preserving ephemeral"},{"line_number":3253,"context_line":"            # partitions."}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_75a2b04d","line":3250,"range":{"start_line":3250,"start_character":24,"end_line":3250,"end_character":26},"updated":"2020-04-03 15:17:47.000000000","message":"its complaining baout this i guess it could be an empty tuple () or None","commit_id":"d576810d14ece26d630a3a9210cacabbdaae758e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":3260,"context_line":"            if device_profile:"},{"line_number":3261,"context_line":"                try:"},{"line_number":3262,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3263,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3264,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3265,"context_line":"                    LOG.exception(exc)"},{"line_number":3266,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_6e740d69","line":3263,"range":{"start_line":3263,"start_character":59,"end_line":3263,"end_character":76},"updated":"2020-04-09 15:17:09.000000000","message":"Doesn\u0027t this call expect None for the compatibility scenario? I know it\u0027s checks for falsey-ness but I would think we should mimic the same behavior.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e342d13a335685c5870e9e38c129bd808b445f97","unresolved":false,"context_lines":[{"line_number":3260,"context_line":"            if device_profile:"},{"line_number":3261,"context_line":"                try:"},{"line_number":3262,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3263,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3264,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3265,"context_line":"                    LOG.exception(exc)"},{"line_number":3266,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_a8dafb13","line":3263,"range":{"start_line":3263,"start_character":59,"end_line":3263,"end_character":76},"in_reply_to":"3f4c43b2_e85ed843","updated":"2020-04-22 04:33:14.000000000","message":"if you want me to change this ill rework it in another version but for now im going to leave this as it is and you can let me know if its ok after i upload the one im working on now.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":3260,"context_line":"            if device_profile:"},{"line_number":3261,"context_line":"                try:"},{"line_number":3262,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3263,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3264,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3265,"context_line":"                    LOG.exception(exc)"},{"line_number":3266,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_aee1f59d","line":3263,"range":{"start_line":3263,"start_character":59,"end_line":3263,"end_character":76},"in_reply_to":"df33271e_6e740d69","updated":"2020-04-09 15:48:23.000000000","message":"so i wanted accel_uuids to default to [] but we are not allowed to have mutible default.\n\nif we pass None directly it will do an api lookup internally to check if there are ARQ based on the instance uuid.\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2664-L2666\n\ndoing that api lookup kind of defeats the reason for passing the uuids in the rpc so that is why i want to pass an empty list.\n\nthat siad i have guarded this on the flaovr having a device profile so i guess if i did pass none then this would allow it to maybe work with an old prc request.\n\nbut that still wont do the right thing since we wont have recreated the ARQs for the new host.\n\nif you want me to supprot an old conductor with a new compute node then i could by checking if accel_uuids was none and recreating them before this call but i was considering that out of scope sicne we require the control plane to be upgrade before the computes.\n\nill start adressing the patch before this so let me know what you want me to do in this cases and ill come back to it once that is done.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":3260,"context_line":"            if device_profile:"},{"line_number":3261,"context_line":"                try:"},{"line_number":3262,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3263,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3264,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3265,"context_line":"                    LOG.exception(exc)"},{"line_number":3266,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_e85ed843","line":3263,"range":{"start_line":3263,"start_character":59,"end_line":3263,"end_character":76},"in_reply_to":"df33271e_aee1f59d","updated":"2020-04-13 13:49:27.000000000","message":"\u003e that siad i have guarded this on the flaovr having a device profile\n \u003e so i guess if i did pass none then this would allow it to maybe\n \u003e work with an old prc request.\n \u003e \n \u003e but that still wont do the right thing since we wont have recreated\n \u003e the ARQs for the new host.\n\nAh, I see, I was thinking you were trying to provide that support, but I see you\u0027re assuming no ARQs are needed if the client didn\u0027t pass that arg.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"        except NotImplementedError:"},{"line_number":3665,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3666,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3667,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3668,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3669,"context_line":"        self._update_instance_after_spawn(context, instance)"},{"line_number":3670,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_ceeef920","line":3667,"updated":"2020-04-09 15:17:09.000000000","message":"Seems like we should apply this change to all the rebuild interfaces for consistency, no? Especially since we\u0027re claiming that any compute capable of doing accelerators in the first place are capable of doing evac/rebuild with it.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e342d13a335685c5870e9e38c129bd808b445f97","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"        except NotImplementedError:"},{"line_number":3665,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3666,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3667,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3668,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3669,"context_line":"        self._update_instance_after_spawn(context, instance)"},{"line_number":3670,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_280eeb8c","line":3667,"in_reply_to":"df33271e_ceeef920","updated":"2020-04-22 04:33:14.000000000","message":"as in extend the virt driver api\nhere https://github.com/openstack/nova/blob/58aaffade9f78c5fdc6b0d26ec26b70908b7a6aa/nova/virt/driver.py#L282-L286\n\nand then update all in tree drivers to accept the new arg.\nya i could do that but i was trying to avoid modifying the driver api since the only dirver that support acclerator at the moment is libvirt and it does not implement a driver specific rebuild funtions.\n\nwould you be ok with me just adding a TODO in the code to extend the virt driver rebuild function if support is added for cyborg to a driver that uses it?\n\nbeyond the consitency point which is valid the only use case i can think of that this would enable is out of tree drivers to support rebuid with accelerators but if i add it i will break them and force them to update even if dont support accelerators.\n\ni have a question for you earlier too so ill adress this and that in a respin after this current version and leave this unchanged for now.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":3212,"context_line":"        if evacuate:"},{"line_number":3213,"context_line":"            if device_profile:"},{"line_number":3214,"context_line":"                try:"},{"line_number":3215,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3216,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3217,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3218,"context_line":"                    LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_949000f0","line":3215,"range":{"start_line":3215,"start_character":20,"end_line":3215,"end_character":31},"updated":"2020-07-20 11:02:26.000000000","message":"please rename it to accel_info for consistency","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":3212,"context_line":"        if evacuate:"},{"line_number":3213,"context_line":"            if device_profile:"},{"line_number":3214,"context_line":"                try:"},{"line_number":3215,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3216,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3217,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3218,"context_line":"                    LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_da7d4f1d","line":3215,"range":{"start_line":3215,"start_character":20,"end_line":3215,"end_character":31},"in_reply_to":"bf51134e_949000f0","updated":"2020-07-30 09:16:25.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3212,"context_line":"        if evacuate:"},{"line_number":3213,"context_line":"            if device_profile:"},{"line_number":3214,"context_line":"                try:"},{"line_number":3215,"context_line":"                    cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":3216,"context_line":"                        context, device_profile, instance, accel_uuids or [])"},{"line_number":3217,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3218,"context_line":"                    LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_8929e9f3","line":3215,"range":{"start_line":3215,"start_character":20,"end_line":3215,"end_character":31},"in_reply_to":"bf51134e_949000f0","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":3217,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3218,"context_line":"                    LOG.exception(exc)"},{"line_number":3219,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3220,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"},{"line_number":3221,"context_line":"                    raise exception.BuildAbortException("},{"line_number":3222,"context_line":"                        instance_uuid\u003dinstance.uuid, reason\u003dmsg)"},{"line_number":3223,"context_line":"            detach_block_devices(context, bdms)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_149d100a","line":3220,"range":{"start_line":3220,"start_character":57,"end_line":3220,"end_character":65},"updated":"2020-07-20 11:02:26.000000000","message":"are you sure this is a request that you failed to get here?","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":3217,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3218,"context_line":"                    LOG.exception(exc)"},{"line_number":3219,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3220,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"},{"line_number":3221,"context_line":"                    raise exception.BuildAbortException("},{"line_number":3222,"context_line":"                        instance_uuid\u003dinstance.uuid, reason\u003dmsg)"},{"line_number":3223,"context_line":"            detach_block_devices(context, bdms)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_ba9dfb58","line":3220,"range":{"start_line":3220,"start_character":57,"end_line":3220,"end_character":65},"in_reply_to":"bf51134e_149d100a","updated":"2020-07-30 09:16:25.000000000","message":"s/requests/resource is suitable.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":3229,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_34ac9434","line":3232,"range":{"start_line":3232,"start_character":39,"end_line":3232,"end_character":54},"updated":"2020-07-20 11:02:26.000000000","message":"_get_accel_info already guarded against empty device_profile so the above \u0027if device_profile\u0027 is unnecessary","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":3229,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_d4bb9872","line":3232,"range":{"start_line":3232,"start_character":20,"end_line":3232,"end_character":31},"updated":"2020-07-20 11:02:26.000000000","message":"accel_info","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3229,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_c9b6418b","line":3232,"range":{"start_line":3232,"start_character":39,"end_line":3232,"end_character":54},"in_reply_to":"bf51134e_34ac9434","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":3229,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_7ab523cd","line":3232,"range":{"start_line":3232,"start_character":39,"end_line":3232,"end_character":54},"in_reply_to":"bf51134e_34ac9434","updated":"2020-07-30 09:16:25.000000000","message":"right, remove.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3229,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_69bf3560","line":3232,"range":{"start_line":3232,"start_character":20,"end_line":3232,"end_character":31},"in_reply_to":"bf51134e_d4bb9872","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3236,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_b4654420","line":3233,"range":{"start_line":3233,"start_character":34,"end_line":3233,"end_character":59},"updated":"2020-07-20 11:02:26.000000000","message":"I don\u0027t see how _get_accel_info() can lead to eventlet timeout","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3236,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_a96e6dfd","line":3233,"range":{"start_line":3233,"start_character":34,"end_line":3233,"end_character":59},"in_reply_to":"bf51134e_b4654420","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"da2bb084f05a7fb56657a8fb42cfa66af2cdf1c8","unresolved":false,"context_lines":[{"line_number":3230,"context_line":"            if device_profile:"},{"line_number":3231,"context_line":"                try:"},{"line_number":3232,"context_line":"                    cyborg_info \u003d self._get_accel_info(context, instance)"},{"line_number":3233,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3234,"context_line":"                    LOG.exception(exc)"},{"line_number":3235,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3236,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator requests.\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_6a47037a","line":3233,"range":{"start_line":3233,"start_character":34,"end_line":3233,"end_character":59},"in_reply_to":"bf51134e_b4654420","updated":"2020-08-03 06:01:34.000000000","message":"I am not sure, but if it is raised it also will still be caught by the generic exception. So I think we can remove it.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":3615,"context_line":"        except NotImplementedError:"},{"line_number":3616,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3617,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3618,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3619,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3620,"context_line":"        self._update_instance_after_spawn(context, instance)"},{"line_number":3621,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_b4338413","line":3618,"updated":"2020-07-20 11:02:26.000000000","message":"This is strange. I would expect that the rebuild and rebuild_default_impl has the same signature. Or maybe that the default impl needs less parameter. But having the default impl taking more parameters than the driver specific ones feels bad.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":3615,"context_line":"        except NotImplementedError:"},{"line_number":3616,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3617,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3618,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3619,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3620,"context_line":"        self._update_instance_after_spawn(context, instance)"},{"line_number":3621,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_9a83d7cc","line":3618,"in_reply_to":"bf51134e_b4338413","updated":"2020-07-30 09:16:25.000000000","message":"Many drivers do not support rebuild, I think we can add it to the implemented interface by default (keep the current changes).","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3615,"context_line":"        except NotImplementedError:"},{"line_number":3616,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3617,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3618,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3619,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3620,"context_line":"        self._update_instance_after_spawn(context, instance)"},{"line_number":3621,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_cf6e41c8","line":3618,"in_reply_to":"bf51134e_b4338413","updated":"2020-08-26 09:01:02.000000000","message":"So far, only the ironic driver support rebuild. So we only add the accel_uuids to defalut impl to reduce the risk.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":3296,"context_line":"            context, instance, self.host,"},{"line_number":3297,"context_line":"            phase\u003dfields.NotificationPhase.ERROR, exception\u003derror, bdms\u003dbdms)"},{"line_number":3298,"context_line":""},{"line_number":3299,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3300,"context_line":"    @wrap_exception()"},{"line_number":3301,"context_line":"    @reverts_task_state"},{"line_number":3302,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_890fa535","line":3299,"updated":"2020-08-25 09:36:38.000000000","message":"You added BuildAbortException to the rebuild codepath so I think that should also be added here as expected exception","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"5f29cb2873f17aa46b67a82d722713a0181d81ac","unresolved":false,"context_lines":[{"line_number":3296,"context_line":"            context, instance, self.host,"},{"line_number":3297,"context_line":"            phase\u003dfields.NotificationPhase.ERROR, exception\u003derror, bdms\u003dbdms)"},{"line_number":3298,"context_line":""},{"line_number":3299,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3300,"context_line":"    @wrap_exception()"},{"line_number":3301,"context_line":"    @reverts_task_state"},{"line_number":3302,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_19b1fa44","line":3299,"in_reply_to":"9f560f44_890fa535","updated":"2020-08-27 02:45:31.000000000","message":"\u003e You added BuildAbortException to the rebuild codepath so I think\n \u003e that should also be added here as expected exception","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3296,"context_line":"            context, instance, self.host,"},{"line_number":3297,"context_line":"            phase\u003dfields.NotificationPhase.ERROR, exception\u003derror, bdms\u003dbdms)"},{"line_number":3298,"context_line":""},{"line_number":3299,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3300,"context_line":"    @wrap_exception()"},{"line_number":3301,"context_line":"    @reverts_task_state"},{"line_number":3302,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_36cd0466","line":3299,"in_reply_to":"9f560f44_890fa535","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":3651,"context_line":"        except NotImplementedError:"},{"line_number":3652,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3653,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3654,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3655,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3656,"context_line":"        self._update_instance_after_spawn(instance)"},{"line_number":3657,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_247fa066","line":3654,"updated":"2020-08-25 09:36:38.000000000","message":"Lets add a accel_uuids parameter to the rebuild method of the virt/driver interface instead. When you do it please also drop a mail to the ML to notify the out-of-tree virt drivers about this interface change.\n\nBy keep this to defaul_impl specific prevents other virt drivers to start using this information.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":3651,"context_line":"        except NotImplementedError:"},{"line_number":3652,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3653,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3654,"context_line":"            kwargs[\u0027accel_uuids\u0027] \u003d accel_uuids"},{"line_number":3655,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3656,"context_line":"        self._update_instance_after_spawn(instance)"},{"line_number":3657,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_e363cb40","line":3654,"in_reply_to":"9f560f44_247fa066","updated":"2020-08-26 09:01:02.000000000","message":"Done. Add `accel_uuids` to the rebuild() and _rebuild_default_impl() interfact.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37c2a327a1ded05b94add5202800e30eed7bbb68","unresolved":false,"context_lines":[{"line_number":3296,"context_line":"            context, instance, self.host,"},{"line_number":3297,"context_line":"            phase\u003dfields.NotificationPhase.ERROR, exception\u003derror, bdms\u003dbdms)"},{"line_number":3298,"context_line":""},{"line_number":3299,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3300,"context_line":"    @wrap_exception()"},{"line_number":3301,"context_line":"    @reverts_task_state"},{"line_number":3302,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_eb68bd21","line":3299,"updated":"2020-08-26 13:27:33.000000000","message":"This still missing the BuildAbortException (see my original comment in PS19)","commit_id":"e766d76ab0a2692053a20b49543abea4906c82cd"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"5f29cb2873f17aa46b67a82d722713a0181d81ac","unresolved":false,"context_lines":[{"line_number":3296,"context_line":"            context, instance, self.host,"},{"line_number":3297,"context_line":"            phase\u003dfields.NotificationPhase.ERROR, exception\u003derror, bdms\u003dbdms)"},{"line_number":3298,"context_line":""},{"line_number":3299,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3300,"context_line":"    @wrap_exception()"},{"line_number":3301,"context_line":"    @reverts_task_state"},{"line_number":3302,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_99ea2a71","line":3299,"in_reply_to":"9f560f44_eb68bd21","updated":"2020-08-27 02:45:31.000000000","message":"Done. Sorry missing this.","commit_id":"e766d76ab0a2692053a20b49543abea4906c82cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":3233,"context_line":"            migration.save()"},{"line_number":3234,"context_line":""},{"line_number":3235,"context_line":"    def _rebuild_default_impl("},{"line_number":3236,"context_line":"            self, context, instance, image_meta, injected_files,"},{"line_number":3237,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3238,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"},{"line_number":3239,"context_line":"            block_device_info\u003dNone, preserve_ephemeral\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_d2dd9470","line":3236,"range":{"start_line":3236,"start_character":8,"end_line":3236,"end_character":12},"updated":"2020-08-27 13:22:02.000000000","message":"nit","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":3233,"context_line":"            migration.save()"},{"line_number":3234,"context_line":""},{"line_number":3235,"context_line":"    def _rebuild_default_impl("},{"line_number":3236,"context_line":"            self, context, instance, image_meta, injected_files,"},{"line_number":3237,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3238,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"},{"line_number":3239,"context_line":"            block_device_info\u003dNone, preserve_ephemeral\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_673e5eba","line":3236,"range":{"start_line":3236,"start_character":8,"end_line":3236,"end_character":12},"in_reply_to":"9f560f44_4b5f0575","updated":"2020-08-31 10:09:38.000000000","message":"There are also examples of the other style so this would be okay too, but if you insist","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":3233,"context_line":"            migration.save()"},{"line_number":3234,"context_line":""},{"line_number":3235,"context_line":"    def _rebuild_default_impl("},{"line_number":3236,"context_line":"            self, context, instance, image_meta, injected_files,"},{"line_number":3237,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3238,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"},{"line_number":3239,"context_line":"            block_device_info\u003dNone, preserve_ephemeral\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_4b5f0575","line":3236,"range":{"start_line":3236,"start_character":8,"end_line":3236,"end_character":12},"in_reply_to":"9f560f44_d2dd9470","updated":"2020-08-28 08:13:48.000000000","message":"Consistant with other functions. Not suggetion to modify.","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":3237,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3238,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"},{"line_number":3239,"context_line":"            block_device_info\u003dNone, preserve_ephemeral\u003dFalse,"},{"line_number":3240,"context_line":"            accel_uuids\u003dNone):"},{"line_number":3241,"context_line":"        if preserve_ephemeral:"},{"line_number":3242,"context_line":"            # The default code path does not support preserving ephemeral"},{"line_number":3243,"context_line":"            # partitions."}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_f2ded867","line":3240,"range":{"start_line":3240,"start_character":12,"end_line":3240,"end_character":30},"updated":"2020-08-27 13:22:02.000000000","message":"nit:\n\n      ...,\n      accel_uuids\u003dNone,\n  ):","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":3237,"context_line":"            admin_password, allocations, bdms, detach_block_devices,"},{"line_number":3238,"context_line":"            attach_block_devices, network_info\u003dNone, evacuate\u003dFalse,"},{"line_number":3239,"context_line":"            block_device_info\u003dNone, preserve_ephemeral\u003dFalse,"},{"line_number":3240,"context_line":"            accel_uuids\u003dNone):"},{"line_number":3241,"context_line":"        if preserve_ephemeral:"},{"line_number":3242,"context_line":"            # The default code path does not support preserving ephemeral"},{"line_number":3243,"context_line":"            # partitions."}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_8b80fdc1","line":3240,"range":{"start_line":3240,"start_character":12,"end_line":3240,"end_character":30},"in_reply_to":"9f560f44_f2ded867","updated":"2020-08-28 08:13:48.000000000","message":"ditto","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":3243,"context_line":"            # partitions."},{"line_number":3244,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":3245,"context_line":""},{"line_number":3246,"context_line":"        accel_info \u003d []"},{"line_number":3247,"context_line":"        device_profile \u003d instance.flavor.extra_specs.get("},{"line_number":3248,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":3249,"context_line":"        if evacuate:"},{"line_number":3250,"context_line":"            if device_profile:"},{"line_number":3251,"context_line":"                try:"},{"line_number":3252,"context_line":"                    accel_info \u003d self._get_bound_arq_resources("},{"line_number":3253,"context_line":"                        context, instance, accel_uuids or [])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_d23f5422","line":3250,"range":{"start_line":3246,"start_character":0,"end_line":3250,"end_character":30},"updated":"2020-08-27 13:22:02.000000000","message":"nit:\n\n  accel_info \u003d []\n  if evacuate:\n      if instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027):\n          try:\n              ...\n\nYou don\u0027t seem to be using device_profile otherwise.\n\nLater: in fact, it might make sense to move this check and the exception handling into \u0027_get_bound_arq_resources\u0027. This is identical to the code in \u0027_build_resources\u0027. I\u0027d be okay with that piece as a follow-up","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":3243,"context_line":"            # partitions."},{"line_number":3244,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":3245,"context_line":""},{"line_number":3246,"context_line":"        accel_info \u003d []"},{"line_number":3247,"context_line":"        device_profile \u003d instance.flavor.extra_specs.get("},{"line_number":3248,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":3249,"context_line":"        if evacuate:"},{"line_number":3250,"context_line":"            if device_profile:"},{"line_number":3251,"context_line":"                try:"},{"line_number":3252,"context_line":"                    accel_info \u003d self._get_bound_arq_resources("},{"line_number":3253,"context_line":"                        context, instance, accel_uuids or [])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_a748765c","line":3250,"range":{"start_line":3246,"start_character":0,"end_line":3250,"end_character":30},"in_reply_to":"9f560f44_cb695527","updated":"2020-08-31 10:09:38.000000000","message":"You\u0027ve done the first part but not the second part (moving the exception handling to \u0027_get_bound_arq_resources\u0027","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":3243,"context_line":"            # partitions."},{"line_number":3244,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":3245,"context_line":""},{"line_number":3246,"context_line":"        accel_info \u003d []"},{"line_number":3247,"context_line":"        device_profile \u003d instance.flavor.extra_specs.get("},{"line_number":3248,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":3249,"context_line":"        if evacuate:"},{"line_number":3250,"context_line":"            if device_profile:"},{"line_number":3251,"context_line":"                try:"},{"line_number":3252,"context_line":"                    accel_info \u003d self._get_bound_arq_resources("},{"line_number":3253,"context_line":"                        context, instance, accel_uuids or [])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_cb695527","line":3250,"range":{"start_line":3246,"start_character":0,"end_line":3250,"end_character":30},"in_reply_to":"9f560f44_d23f5422","updated":"2020-08-28 08:13:48.000000000","message":"Done. Will follow-up soon","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":3504,"context_line":"            injected_files, new_pass, orig_sys_metadata, bdms, evacuate,"},{"line_number":3505,"context_line":"            on_shared_storage, preserve_ephemeral, migration, request_spec,"},{"line_number":3506,"context_line":"            allocations, request_group_resource_providers_mapping,"},{"line_number":3507,"context_line":"            accel_uuids):"},{"line_number":3508,"context_line":"        orig_vm_state \u003d instance.vm_state"},{"line_number":3509,"context_line":""},{"line_number":3510,"context_line":"        if evacuate:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_d2c6349a","line":3507,"updated":"2020-08-27 13:22:02.000000000","message":"ditto","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":3269,"context_line":""},{"line_number":3270,"context_line":"        accel_info \u003d []"},{"line_number":3271,"context_line":"        if evacuate:"},{"line_number":3272,"context_line":"            if instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":3273,"context_line":"                try:"},{"line_number":3274,"context_line":"                    accel_info \u003d self._get_bound_arq_resources("},{"line_number":3275,"context_line":"                        context, instance, accel_uuids or [])"},{"line_number":3276,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3277,"context_line":"                    LOG.exception(exc)"},{"line_number":3278,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3279,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator resources.\u0027)"},{"line_number":3280,"context_line":"                    raise exception.BuildAbortException("},{"line_number":3281,"context_line":"                        instance_uuid\u003dinstance.uuid, reason\u003dmsg)"},{"line_number":3282,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3283,"context_line":"        else:"},{"line_number":3284,"context_line":"            self._power_off_instance(instance, clean_shutdown\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_dc761d0d","line":3281,"range":{"start_line":3272,"start_character":0,"end_line":3281,"end_character":64},"updated":"2020-08-31 10:09:38.000000000","message":"This check and exception should be moved into \u0027_get_bound_arq_resources\u0027. This is identical to \u0027_build_resources\u0027","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":3269,"context_line":""},{"line_number":3270,"context_line":"        accel_info \u003d []"},{"line_number":3271,"context_line":"        if evacuate:"},{"line_number":3272,"context_line":"            if instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":3273,"context_line":"                try:"},{"line_number":3274,"context_line":"                    accel_info \u003d self._get_bound_arq_resources("},{"line_number":3275,"context_line":"                        context, instance, accel_uuids or [])"},{"line_number":3276,"context_line":"                except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":3277,"context_line":"                    LOG.exception(exc)"},{"line_number":3278,"context_line":"                    self._build_resources_cleanup(instance, network_info)"},{"line_number":3279,"context_line":"                    msg \u003d _(\u0027Failure getting accelerator resources.\u0027)"},{"line_number":3280,"context_line":"                    raise exception.BuildAbortException("},{"line_number":3281,"context_line":"                        instance_uuid\u003dinstance.uuid, reason\u003dmsg)"},{"line_number":3282,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3283,"context_line":"        else:"},{"line_number":3284,"context_line":"            self._power_off_instance(instance, clean_shutdown\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_283f1388","line":3281,"range":{"start_line":3272,"start_character":0,"end_line":3281,"end_character":64},"in_reply_to":"9f560f44_dc761d0d","updated":"2020-09-01 00:28:31.000000000","message":"Done. Please see the follow up patch:\nhttps://review.opendev.org/#/c/749052/","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        if not client.can_send_version(version):"},{"line_number":1078,"context_line":"            del msg_args[\u0027accel_uuids\u0027]"},{"line_number":1079,"context_line":"            version \u003d \u00275.0\u0027"},{"line_number":1080,"context_line":"        cctxt \u003d client.prepare("},{"line_number":1081,"context_line":"            server\u003d_compute_host(host, instance), version\u003dversion)"},{"line_number":1082,"context_line":"        cctxt.cast("},{"line_number":1083,"context_line":"            ctxt, \u0027rebuild_instance\u0027, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1084,"context_line":"            injected_files\u003dinjected_files, image_ref\u003dimage_ref,"},{"line_number":1085,"context_line":"            orig_image_ref\u003dorig_image_ref,"},{"line_number":1086,"context_line":"            orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":1087,"context_line":"            recreate\u003drecreate, on_shared_storage\u003don_shared_storage,"},{"line_number":1088,"context_line":"            **msg_args)"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"    def remove_aggregate_host(self, ctxt, host, aggregate, host_param,"},{"line_number":1091,"context_line":"                              slave_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_d39a2612","line":1088,"range":{"start_line":1080,"start_character":0,"end_line":1088,"end_character":23},"updated":"2020-04-09 15:17:09.000000000","message":"AFAICT, none of this has changed, you just reformatted it? This makes it really difficult to tell, and erases history. Please don\u0027t do that.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e342d13a335685c5870e9e38c129bd808b445f97","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        if not client.can_send_version(version):"},{"line_number":1078,"context_line":"            del msg_args[\u0027accel_uuids\u0027]"},{"line_number":1079,"context_line":"            version \u003d \u00275.0\u0027"},{"line_number":1080,"context_line":"        cctxt \u003d client.prepare("},{"line_number":1081,"context_line":"            server\u003d_compute_host(host, instance), version\u003dversion)"},{"line_number":1082,"context_line":"        cctxt.cast("},{"line_number":1083,"context_line":"            ctxt, \u0027rebuild_instance\u0027, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1084,"context_line":"            injected_files\u003dinjected_files, image_ref\u003dimage_ref,"},{"line_number":1085,"context_line":"            orig_image_ref\u003dorig_image_ref,"},{"line_number":1086,"context_line":"            orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":1087,"context_line":"            recreate\u003drecreate, on_shared_storage\u003don_shared_storage,"},{"line_number":1088,"context_line":"            **msg_args)"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"    def remove_aggregate_host(self, ctxt, host, aggregate, host_param,"},{"line_number":1091,"context_line":"                              slave_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_e87883f9","line":1088,"range":{"start_line":1080,"start_character":0,"end_line":1088,"end_character":23},"in_reply_to":"df33271e_6e252dc2","updated":"2020-04-22 04:33:14.000000000","message":"Done","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        if not client.can_send_version(version):"},{"line_number":1078,"context_line":"            del msg_args[\u0027accel_uuids\u0027]"},{"line_number":1079,"context_line":"            version \u003d \u00275.0\u0027"},{"line_number":1080,"context_line":"        cctxt \u003d client.prepare("},{"line_number":1081,"context_line":"            server\u003d_compute_host(host, instance), version\u003dversion)"},{"line_number":1082,"context_line":"        cctxt.cast("},{"line_number":1083,"context_line":"            ctxt, \u0027rebuild_instance\u0027, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1084,"context_line":"            injected_files\u003dinjected_files, image_ref\u003dimage_ref,"},{"line_number":1085,"context_line":"            orig_image_ref\u003dorig_image_ref,"},{"line_number":1086,"context_line":"            orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":1087,"context_line":"            recreate\u003drecreate, on_shared_storage\u003don_shared_storage,"},{"line_number":1088,"context_line":"            **msg_args)"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"    def remove_aggregate_host(self, ctxt, host, aggregate, host_param,"},{"line_number":1091,"context_line":"                              slave_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_6e252dc2","line":1088,"range":{"start_line":1080,"start_character":0,"end_line":1088,"end_character":23},"in_reply_to":"df33271e_d39a2612","updated":"2020-04-09 15:48:23.000000000","message":"oh i completly change how this worked since i tought that these were actully postional args using the keyword syntax to i tried to fix that and then discovered that the signitor is actully different.\n\nwhen i undid this after i copy pasted it back but not the same apparently. ya ill revert this.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"            self, ctxt, instance, new_pass, injected_files,"},{"line_number":1063,"context_line":"            image_ref, orig_image_ref, orig_sys_metadata, bdms,"},{"line_number":1064,"context_line":"            recreate, on_shared_storage, host, node,"},{"line_number":1065,"context_line":"            preserve_ephemeral, migration, limits, request_spec, accel_uuids):"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"        # NOTE(edleafe): compute nodes can only use the dict form of limits."},{"line_number":1068,"context_line":"        if isinstance(limits, objects.SchedulerLimits):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_b2c10083","line":1065,"updated":"2020-08-27 13:22:02.000000000","message":"ditto\n\n  def rebuild_instance(\n      self, ctxt, instance, new_pass, injected_files,\n      ...\n  ):","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        msg_args \u003d {"},{"line_number":1072,"context_line":"            \u0027preserve_ephemeral\u0027: preserve_ephemeral, \u0027migration\u0027: migration,"},{"line_number":1073,"context_line":"            \u0027scheduled_node\u0027: node, \u0027limits\u0027: limits,"},{"line_number":1074,"context_line":"            \u0027request_spec\u0027: request_spec, \u0027accel_uuids\u0027: accel_uuids"},{"line_number":1075,"context_line":"        }"},{"line_number":1076,"context_line":"        version \u003d \u00275.12\u0027"},{"line_number":1077,"context_line":"        client \u003d self.router.client(ctxt)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_12bd4c01","line":1074,"updated":"2020-08-27 13:22:02.000000000","message":"nit: these would be nicer on separate lines","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        msg_args \u003d {"},{"line_number":1072,"context_line":"            \u0027preserve_ephemeral\u0027: preserve_ephemeral, \u0027migration\u0027: migration,"},{"line_number":1073,"context_line":"            \u0027scheduled_node\u0027: node, \u0027limits\u0027: limits,"},{"line_number":1074,"context_line":"            \u0027request_spec\u0027: request_spec, \u0027accel_uuids\u0027: accel_uuids"},{"line_number":1075,"context_line":"        }"},{"line_number":1076,"context_line":"        version \u003d \u00275.12\u0027"},{"line_number":1077,"context_line":"        client \u003d self.router.client(ctxt)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_60b828e5","line":1074,"in_reply_to":"9f560f44_12bd4c01","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"}],"nova/conductor/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fa3421736b9abd47e18c0ce7a4740277ae28faa2","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                availability_zones.get_host_availability_zone("},{"line_number":1214,"context_line":"                    context, host))"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"            self.compute_rpcapi.rebuild_instance(context,"},{"line_number":1217,"context_line":"                    instance\u003dinstance,"},{"line_number":1218,"context_line":"                    new_pass\u003dnew_pass,"},{"line_number":1219,"context_line":"                    injected_files\u003dinjected_files,"},{"line_number":1220,"context_line":"                    image_ref\u003dimage_ref,"},{"line_number":1221,"context_line":"                    orig_image_ref\u003dorig_image_ref,"},{"line_number":1222,"context_line":"                    orig_sys_metadata\u003dorig_sys_metadata,"},{"line_number":1223,"context_line":"                    bdms\u003dbdms,"},{"line_number":1224,"context_line":"                    recreate\u003devacuate,"},{"line_number":1225,"context_line":"                    on_shared_storage\u003don_shared_storage,"},{"line_number":1226,"context_line":"                    preserve_ephemeral\u003dpreserve_ephemeral,"},{"line_number":1227,"context_line":"                    migration\u003dmigration,"},{"line_number":1228,"context_line":"                    host\u003dhost, node\u003dnode, limits\u003dlimits,"},{"line_number":1229,"context_line":"                    request_spec\u003drequest_spec)"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"    def _validate_image_traits_for_rebuild(self, context, instance, image_ref):"},{"line_number":1232,"context_line":"        \"\"\"Validates that the traits specified in the image can be satisfied"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_7ad4a620","line":1229,"range":{"start_line":1216,"start_character":10,"end_line":1229,"end_character":46},"updated":"2020-03-31 22:29:30.000000000","message":"if i bind the arqs above i could pass them here.\nalthough it proably would be better not to alter the rpc signiture and instead just wait in the compute node since the binding is async anyway.","commit_id":"47eba4769359797622bb30c7a03070c610b5e096"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fa3421736b9abd47e18c0ce7a4740277ae28faa2","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"                    request_spec.get_request_group_mapping())"},{"line_number":1633,"context_line":"                # Using nodename instead of hostname. See:"},{"line_number":1634,"context_line":"                # http://lists.openstack.org/pipermail/openstack-discuss/2019-November/011044.html  # noqa"},{"line_number":1635,"context_line":"                accel_uuids \u003d self._create_and_bind_arqs("},{"line_number":1636,"context_line":"                    context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1637,"context_line":"                    host.nodename, resource_provider_mapping)"},{"line_number":1638,"context_line":"            except Exception as exc:"},{"line_number":1639,"context_line":"                # If anything failed here we need to cleanup and bail out."},{"line_number":1640,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":1641,"context_line":"                    self._cleanup_build_artifacts("},{"line_number":1642,"context_line":"                        context, exc, instances, build_requests, request_specs,"},{"line_number":1643,"context_line":"                        block_device_mapping, tags, cell_mapping_cache)"},{"line_number":1644,"context_line":""},{"line_number":1645,"context_line":"            # NOTE(danms): Compute RPC expects security group names or ids"},{"line_number":1646,"context_line":"            # not objects, so convert this to a list of names until we can"},{"line_number":1647,"context_line":"            # pass the objects."},{"line_number":1648,"context_line":"            legacy_secgroups \u003d [s.identifier"},{"line_number":1649,"context_line":"                                for s in request_spec.security_groups]"},{"line_number":1650,"context_line":"            with obj_target_cell(instance, cell) as cctxt:"},{"line_number":1651,"context_line":"                self.compute_rpcapi.build_and_run_instance("},{"line_number":1652,"context_line":"                    cctxt, instance\u003dinstance, image\u003dimage,"},{"line_number":1653,"context_line":"                    request_spec\u003drequest_spec,"},{"line_number":1654,"context_line":"                    filter_properties\u003dfilter_props,"},{"line_number":1655,"context_line":"                    admin_password\u003dadmin_password,"},{"line_number":1656,"context_line":"                    injected_files\u003dinjected_files,"},{"line_number":1657,"context_line":"                    requested_networks\u003drequested_networks,"},{"line_number":1658,"context_line":"                    security_groups\u003dlegacy_secgroups,"},{"line_number":1659,"context_line":"                    block_device_mapping\u003dinstance_bdms,"},{"line_number":1660,"context_line":"                    host\u003dhost.service_host, node\u003dhost.nodename,"},{"line_number":1661,"context_line":"                    limits\u003dhost.limits, host_list\u003dhost_list,"},{"line_number":1662,"context_line":"                    accel_uuids\u003daccel_uuids)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def _create_and_bind_arqs(self, context, instance_uuid, extra_specs,"},{"line_number":1665,"context_line":"                              hostname, resource_provider_mapping):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_9ab88ae5","line":1662,"range":{"start_line":1635,"start_character":15,"end_line":1662,"end_character":44},"updated":"2020-03-31 22:29:30.000000000","message":"that said we did alter the rpc signiture here.\n\ndan what do you think is the right approch here.\n\nshould i move the bindings to the conductor method above and mirror this modifying the signiture? should i continue with binding on the compute node or should i bind in the conductor and wait on the compute node without passing the bindings.","commit_id":"47eba4769359797622bb30c7a03070c610b5e096"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"95e7c955a5294b4e0f8ebc998d4fdc6aa6323edb","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"                        # \u0027evacuate\u0027, but this is part of the API now, so it"},{"line_number":1197,"context_line":"                        # would be nontrivial to change."},{"line_number":1198,"context_line":"                        self._set_vm_state_and_notify("},{"line_number":1199,"context_line":"                            context, instance.uuid,\u0027rebuild_server\u0027,"},{"line_number":1200,"context_line":"                            {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":1201,"context_line":"                             \u0027task_state\u0027: None}, ex, request_spec)"},{"line_number":1202,"context_line":"                        LOG.warning(\u0027Rebuild failed: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_68582130","line":1199,"updated":"2020-04-03 03:13:16.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"d576810d14ece26d630a3a9210cacabbdaae758e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f40463339ce01f88f06a68c791d9015e307d4da6","unresolved":false,"context_lines":[{"line_number":1214,"context_line":"                    context, host))"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"            accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1217,"context_line":"                context, instance, host, request_spec, evacuate)"},{"line_number":1218,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1219,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1220,"context_line":"                injected_files\u003dinjected_files, image_ref\u003dimage_ref,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_1049b25f","line":1217,"range":{"start_line":1217,"start_character":35,"end_line":1217,"end_character":39},"updated":"2020-04-03 15:17:47.000000000","message":"host should be selection.nodename so we can jsut pass host hwere i think.","commit_id":"d576810d14ece26d630a3a9210cacabbdaae758e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f40463339ce01f88f06a68c791d9015e307d4da6","unresolved":false,"context_lines":[{"line_number":1243,"context_line":"        # http://lists.openstack.org/pipermail/openstack-discuss/2019-November/011044.html  # noqa"},{"line_number":1244,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1245,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1246,"context_line":"            host.nodename, resource_provider_mapping)"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def _validate_image_traits_for_rebuild(self, context, instance, image_ref):"},{"line_number":1249,"context_line":"        \"\"\"Validates that the traits specified in the image can be satisfied"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_f502400b","line":1246,"range":{"start_line":1246,"start_character":11,"end_line":1246,"end_character":25},"updated":"2020-04-03 15:17:47.000000000","message":"this should just be host and we will handel geting the nodename at the call site if needed","commit_id":"d576810d14ece26d630a3a9210cacabbdaae758e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                        # separate events, one for \u0027rebuild\u0027 and one for"},{"line_number":1196,"context_line":"                        # \u0027evacuate\u0027, but this is part of the API now, so it"},{"line_number":1197,"context_line":"                        # would be nontrivial to change."},{"line_number":1198,"context_line":"                        self._set_vm_state_and_notify("},{"line_number":1199,"context_line":"                            context, instance.uuid, \u0027rebuild_server\u0027,"},{"line_number":1200,"context_line":"                            {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":1201,"context_line":"                             \u0027task_state\u0027: None}, ex, request_spec)"},{"line_number":1202,"context_line":"                        LOG.warning(\u0027Rebuild failed: %s\u0027,"},{"line_number":1203,"context_line":"                                    six.text_type(ex), instance\u003dinstance)"},{"line_number":1204,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_d3c346ec","line":1201,"range":{"start_line":1198,"start_character":0,"end_line":1201,"end_character":67},"updated":"2020-04-09 15:17:09.000000000","message":"Another pointless reformat?","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                        # separate events, one for \u0027rebuild\u0027 and one for"},{"line_number":1196,"context_line":"                        # \u0027evacuate\u0027, but this is part of the API now, so it"},{"line_number":1197,"context_line":"                        # would be nontrivial to change."},{"line_number":1198,"context_line":"                        self._set_vm_state_and_notify("},{"line_number":1199,"context_line":"                            context, instance.uuid, \u0027rebuild_server\u0027,"},{"line_number":1200,"context_line":"                            {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":1201,"context_line":"                             \u0027task_state\u0027: None}, ex, request_spec)"},{"line_number":1202,"context_line":"                        LOG.warning(\u0027Rebuild failed: %s\u0027,"},{"line_number":1203,"context_line":"                                    six.text_type(ex), instance\u003dinstance)"},{"line_number":1204,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_396d31cc","line":1201,"range":{"start_line":1198,"start_character":0,"end_line":1201,"end_character":67},"in_reply_to":"df33271e_d3c346ec","updated":"2020-04-09 15:48:23.000000000","message":"ya this i dont actully know why i change it but it was not intentional.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"                accel_uuids\u003daccel_uuids)"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"    def _rebuild_cyborg_arq("},{"line_number":1229,"context_line":"            self, context, instance, host, request_spec, evacuate):"},{"line_number":1230,"context_line":"        dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1231,"context_line":"        if not dp_name:"},{"line_number":1232,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_7377dad5","line":1229,"updated":"2020-04-09 15:17:09.000000000","message":"Why this two-line format? unless there\u0027s something that won\u0027t fit on a line after the paren, there\u0027s no reason to do this, IMHO.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"                accel_uuids\u003daccel_uuids)"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"    def _rebuild_cyborg_arq("},{"line_number":1229,"context_line":"            self, context, instance, host, request_spec, evacuate):"},{"line_number":1230,"context_line":"        dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1231,"context_line":"        if not dp_name:"},{"line_number":1232,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_99b27d48","line":1229,"in_reply_to":"df33271e_7377dad5","updated":"2020-04-09 15:48:23.000000000","message":"yes it does not fit on the previous line.\n\nthe pep8 guidelines on hanging indents recommend that there should be no arguments on the first line and that you should indet an extra 4 spaces to ditinguish them form varibles in the function\n\nhttps://www.python.org/dev/peps/pep-0008/#indentation\n\n\npep8 allows either hanning indents or alingment with opening delimiter.\n\ni try to use hanging indent where ever possible to not waste\nhorizontal and vertical space.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"                accel_uuids\u003daccel_uuids)"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"    def _rebuild_cyborg_arq("},{"line_number":1229,"context_line":"            self, context, instance, host, request_spec, evacuate):"},{"line_number":1230,"context_line":"        dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1231,"context_line":"        if not dp_name:"},{"line_number":1232,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_481eec70","line":1229,"in_reply_to":"df33271e_99b27d48","updated":"2020-04-13 13:49:27.000000000","message":"That\u0027s fine when one or more of the arguments won\u0027t fit in the space between the paren and the end of the line. However, overwhelmingly our style is to finish the def line when possible.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f034b85b3680211d5d8222123745d777b799d840","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"        cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":1240,"context_line":"        resource_provider_mapping \u003d ("},{"line_number":1241,"context_line":"            request_spec.get_request_group_mapping())"},{"line_number":1242,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1243,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1244,"context_line":"            host, resource_provider_mapping)"},{"line_number":1245,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_73607a02","line":1242,"range":{"start_line":1242,"start_character":41,"end_line":1242,"end_character":42},"updated":"2020-04-09 15:17:09.000000000","message":"Here too.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"        cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":1240,"context_line":"        resource_provider_mapping \u003d ("},{"line_number":1241,"context_line":"            request_spec.get_request_group_mapping())"},{"line_number":1242,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1243,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1244,"context_line":"            host, resource_provider_mapping)"},{"line_number":1245,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_59959586","line":1242,"range":{"start_line":1242,"start_character":41,"end_line":1242,"end_character":42},"in_reply_to":"df33271e_73607a02","updated":"2020-04-09 15:48:23.000000000","message":"again its just the hanging indent style and it does need to span multiple lines.\n\nif it fits on one line i put them on one line.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":1327,"context_line":"        return size"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"    def _create_block_device_mapping(self, cell, instance_type, instance_uuid,"},{"line_number":1330,"context_line":"                                     block_device_mapping):"},{"line_number":1331,"context_line":"        \"\"\"Create the BlockDeviceMapping objects in the db."},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"        This method makes a copy of the list in order to avoid using the same"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_2807201f","line":1330,"updated":"2020-04-13 13:49:27.000000000","message":"Example here.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":1379,"context_line":"    def _bury_in_cell0(self, context, request_spec, exc,"},{"line_number":1380,"context_line":"                       build_requests\u003dNone, instances\u003dNone,"},{"line_number":1381,"context_line":"                       block_device_mapping\u003dNone,"},{"line_number":1382,"context_line":"                       tags\u003dNone):"},{"line_number":1383,"context_line":"        \"\"\"Ensure all provided build_requests and instances end up in cell0."},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"        Cell0 is the fake cell we schedule dead instances to when we can\u0027t"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_8efe3d03","line":1382,"updated":"2020-04-13 13:49:27.000000000","message":"Example here.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":1477,"context_line":"                                     request_specs, image,"},{"line_number":1478,"context_line":"                                     admin_password, injected_files,"},{"line_number":1479,"context_line":"                                     requested_networks, block_device_mapping,"},{"line_number":1480,"context_line":"                                     tags\u003dNone):"},{"line_number":1481,"context_line":"        # Add all the UUIDs for the instances"},{"line_number":1482,"context_line":"        instance_uuids \u003d [spec.instance_uuid for spec in request_specs]"},{"line_number":1483,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_ce08452a","line":1480,"updated":"2020-04-13 13:49:27.000000000","message":"Example here.","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ae936f6133bef21f7ee7a07008c7eada5344774","unresolved":false,"context_lines":[{"line_number":1677,"context_line":"                    accel_uuids\u003daccel_uuids)"},{"line_number":1678,"context_line":""},{"line_number":1679,"context_line":"    def _create_and_bind_arqs(self, context, instance_uuid, extra_specs,"},{"line_number":1680,"context_line":"                              hostname, resource_provider_mapping):"},{"line_number":1681,"context_line":"        \"\"\"Create ARQs, determine their RPs and initiate ARQ binding."},{"line_number":1682,"context_line":""},{"line_number":1683,"context_line":"           The binding is asynchronous; Cyborg will notify on completion."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_ee0ee130","line":1680,"updated":"2020-04-13 13:49:27.000000000","message":"Example here (and so on...)","commit_id":"d65a44d1e81e5aabab71f687271c269ca22ac008"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b7bfdbe66ebb2d2bdce7464e526d2edc219a830","unresolved":false,"context_lines":[{"line_number":1228,"context_line":"                availability_zones.get_host_availability_zone("},{"line_number":1229,"context_line":"                    context, host))"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"            accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1232,"context_line":"                context, instance, host, request_spec, evacuate)"},{"line_number":1233,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1234,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1235,"context_line":"                injected_files\u003dinjected_files, image_ref\u003dimage_ref,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_46972c49","line":1232,"range":{"start_line":1231,"start_character":11,"end_line":1232,"end_character":64},"updated":"2020-05-20 02:41:22.000000000","message":"This need to add a try...except to catch the create or bind arqs failed exception (exception.AcceleratorRequestOpFailed), such as in https://review.opendev.org/#/c/715326/11/nova/conductor/manager.py@1964","commit_id":"83d9cfb81a0150af34af5c0aa968264232a94526"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9afc1aac84dba5acbd86f1e0e89e9778c8789055","unresolved":false,"context_lines":[{"line_number":1228,"context_line":"                availability_zones.get_host_availability_zone("},{"line_number":1229,"context_line":"                    context, host))"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"            accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1232,"context_line":"                context, instance, host, request_spec, evacuate)"},{"line_number":1233,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1234,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1235,"context_line":"                injected_files\u003dinjected_files, image_ref\u003dimage_ref,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_9d2d0eaa","line":1232,"range":{"start_line":1231,"start_character":11,"end_line":1232,"end_character":64},"in_reply_to":"ff570b3c_46972c49","updated":"2020-05-20 11:43:07.000000000","message":"did you have a typo there.\nthat code has no exception handling.","commit_id":"83d9cfb81a0150af34af5c0aa968264232a94526"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"67f6fba31cee3388c5cdbf3de8311d8afbc78ae9","unresolved":false,"context_lines":[{"line_number":1228,"context_line":"                availability_zones.get_host_availability_zone("},{"line_number":1229,"context_line":"                    context, host))"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"            accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1232,"context_line":"                context, instance, host, request_spec, evacuate)"},{"line_number":1233,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1234,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"},{"line_number":1235,"context_line":"                injected_files\u003dinjected_files, image_ref\u003dimage_ref,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_20277566","line":1232,"range":{"start_line":1231,"start_character":11,"end_line":1232,"end_character":64},"in_reply_to":"ff570b3c_9d2d0eaa","updated":"2020-05-20 12:13:34.000000000","message":"https://review.opendev.org/#/c/715326/11/nova/conductor/manager.py@1257 _create_and_bind_arqs() will have an exception.","commit_id":"83d9cfb81a0150af34af5c0aa968264232a94526"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                    external_resources +\u003d ("},{"line_number":1153,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1154,"context_line":"                            context, instance.uuid))"},{"line_number":1155,"context_line":"                    # NOTE(gibi): When cyborg or other module wants to handle"},{"line_number":1156,"context_line":"                    # similar non-nova resources then here we have to collect"},{"line_number":1157,"context_line":"                    # all the external resource requests in a single list and"},{"line_number":1158,"context_line":"                    # add them to the RequestSpec."},{"line_number":1159,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1160,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1161,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_140cf092","line":1158,"range":{"start_line":1155,"start_character":1,"end_line":1158,"end_character":50},"updated":"2020-07-20 11:02:26.000000000","message":"rephrase it as cyborg is covered by the this code now.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                    external_resources +\u003d ("},{"line_number":1153,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1154,"context_line":"                            context, instance.uuid))"},{"line_number":1155,"context_line":"                    # NOTE(gibi): When cyborg or other module wants to handle"},{"line_number":1156,"context_line":"                    # similar non-nova resources then here we have to collect"},{"line_number":1157,"context_line":"                    # all the external resource requests in a single list and"},{"line_number":1158,"context_line":"                    # add them to the RequestSpec."},{"line_number":1159,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1160,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1161,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_9ad117d1","line":1158,"range":{"start_line":1155,"start_character":1,"end_line":1158,"end_character":50},"in_reply_to":"bf51134e_140cf092","updated":"2020-07-30 09:16:25.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                    external_resources +\u003d ("},{"line_number":1153,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1154,"context_line":"                            context, instance.uuid))"},{"line_number":1155,"context_line":"                    # NOTE(gibi): When cyborg or other module wants to handle"},{"line_number":1156,"context_line":"                    # similar non-nova resources then here we have to collect"},{"line_number":1157,"context_line":"                    # all the external resource requests in a single list and"},{"line_number":1158,"context_line":"                    # add them to the RequestSpec."},{"line_number":1159,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1160,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1161,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_2fea5dd7","line":1158,"range":{"start_line":1155,"start_character":1,"end_line":1158,"end_character":50},"in_reply_to":"bf51134e_140cf092","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"            try:"},{"line_number":1231,"context_line":"                accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1232,"context_line":"                    context, instance, host, request_spec, evacuate)"},{"line_number":1233,"context_line":"            except Exception as exc:"},{"line_number":1234,"context_line":"                if isinstance(exc, exception.AcceleratorRequestBindingFailed):"},{"line_number":1235,"context_line":"                    cyclient \u003d cyborg.get_client(context)"},{"line_number":1236,"context_line":"                    cyclient.delete_arqs_by_uuid(exc.arqs)"},{"line_number":1237,"context_line":"                LOG.exception(\u0027Failed to rebuild. Reason: %s\u0027, exc)"},{"line_number":1238,"context_line":"                raise exc"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1241,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_7471ec0c","line":1238,"range":{"start_line":1233,"start_character":0,"end_line":1238,"end_character":25},"updated":"2020-07-20 11:02:26.000000000","message":"just handle the specific exception here and let the other exception type bubble up","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"            try:"},{"line_number":1231,"context_line":"                accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1232,"context_line":"                    context, instance, host, request_spec, evacuate)"},{"line_number":1233,"context_line":"            except Exception as exc:"},{"line_number":1234,"context_line":"                if isinstance(exc, exception.AcceleratorRequestBindingFailed):"},{"line_number":1235,"context_line":"                    cyclient \u003d cyborg.get_client(context)"},{"line_number":1236,"context_line":"                    cyclient.delete_arqs_by_uuid(exc.arqs)"},{"line_number":1237,"context_line":"                LOG.exception(\u0027Failed to rebuild. Reason: %s\u0027, exc)"},{"line_number":1238,"context_line":"                raise exc"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1241,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_7abb6371","line":1238,"range":{"start_line":1233,"start_character":0,"end_line":1238,"end_character":25},"in_reply_to":"bf51134e_7471ec0c","updated":"2020-07-30 09:16:25.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"            try:"},{"line_number":1231,"context_line":"                accel_uuids \u003d self._rebuild_cyborg_arq("},{"line_number":1232,"context_line":"                    context, instance, host, request_spec, evacuate)"},{"line_number":1233,"context_line":"            except Exception as exc:"},{"line_number":1234,"context_line":"                if isinstance(exc, exception.AcceleratorRequestBindingFailed):"},{"line_number":1235,"context_line":"                    cyclient \u003d cyborg.get_client(context)"},{"line_number":1236,"context_line":"                    cyclient.delete_arqs_by_uuid(exc.arqs)"},{"line_number":1237,"context_line":"                LOG.exception(\u0027Failed to rebuild. Reason: %s\u0027, exc)"},{"line_number":1238,"context_line":"                raise exc"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"            self.compute_rpcapi.rebuild_instance("},{"line_number":1241,"context_line":"                context, instance\u003dinstance, new_pass\u003dnew_pass,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_8fd0c955","line":1238,"range":{"start_line":1233,"start_character":0,"end_line":1238,"end_character":25},"in_reply_to":"bf51134e_7471ec0c","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1262,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1263,"context_line":"            host, resource_provider_mapping)"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"    def _validate_image_traits_for_rebuild(self, context, instance, image_ref):"},{"line_number":1266,"context_line":"        \"\"\"Validates that the traits specified in the image can be satisfied"},{"line_number":1267,"context_line":"        by the providers of the current allocations for the instance during"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_944da0c6","line":1264,"updated":"2020-07-20 11:02:26.000000000","message":"please add an empty line after the first two return statements to make this code more readable.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"95749824e481688f5164340404ed5ef2b1a99d45","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1262,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1263,"context_line":"            host, resource_provider_mapping)"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"    def _validate_image_traits_for_rebuild(self, context, instance, image_ref):"},{"line_number":1266,"context_line":"        \"\"\"Validates that the traits specified in the image can be satisfied"},{"line_number":1267,"context_line":"        by the providers of the current allocations for the instance during"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_1aace732","line":1264,"in_reply_to":"bf51134e_944da0c6","updated":"2020-07-30 09:16:25.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1262,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1263,"context_line":"            host, resource_provider_mapping)"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"    def _validate_image_traits_for_rebuild(self, context, instance, image_ref):"},{"line_number":1266,"context_line":"        \"\"\"Validates that the traits specified in the image can be satisfied"},{"line_number":1267,"context_line":"        by the providers of the current allocations for the instance during"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_0fdb197d","line":1264,"in_reply_to":"bf51134e_944da0c6","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":1151,"context_line":"                    external_resources +\u003d ("},{"line_number":1152,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1153,"context_line":"                            context, instance.uuid))"},{"line_number":1154,"context_line":"                    # NOTE(gibi): When other module (except cyborg) wants to"},{"line_number":1155,"context_line":"                    # handle similar non-nova resources then here we have to"},{"line_number":1156,"context_line":"                    # collect all the external resource requests in a single"},{"line_number":1157,"context_line":"                    # list and add them to the RequestSpec."},{"line_number":1158,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1159,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1160,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_72e768e4","line":1157,"range":{"start_line":1154,"start_character":0,"end_line":1157,"end_character":59},"updated":"2020-08-27 13:22:02.000000000","message":"This comment should be done before the \u0027request_spec.requested_resources\u0027 line. You can drop the \u0027(except cyborg)\u0027 piece and keep it generic too","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":1151,"context_line":"                    external_resources +\u003d ("},{"line_number":1152,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1153,"context_line":"                            context, instance.uuid))"},{"line_number":1154,"context_line":"                    # NOTE(gibi): When other module (except cyborg) wants to"},{"line_number":1155,"context_line":"                    # handle similar non-nova resources then here we have to"},{"line_number":1156,"context_line":"                    # collect all the external resource requests in a single"},{"line_number":1157,"context_line":"                    # list and add them to the RequestSpec."},{"line_number":1158,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1159,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1160,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_e0c39856","line":1157,"range":{"start_line":1154,"start_character":0,"end_line":1157,"end_character":59},"in_reply_to":"9f560f44_72e768e4","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"                orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":1243,"context_line":"                recreate\u003devacuate, on_shared_storage\u003don_shared_storage,"},{"line_number":1244,"context_line":"                preserve_ephemeral\u003dpreserve_ephemeral, migration\u003dmigration,"},{"line_number":1245,"context_line":"                host\u003dhost, node\u003dnode, limits\u003dlimits, request_spec\u003drequest_spec,"},{"line_number":1246,"context_line":"                accel_uuids\u003daccel_uuids)"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def _rebuild_cyborg_arq("}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_d2d114fd","line":1245,"updated":"2020-08-27 13:22:02.000000000","message":"nit: any chance we could keep things on the same line?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"                orig_sys_metadata\u003dorig_sys_metadata, bdms\u003dbdms,"},{"line_number":1243,"context_line":"                recreate\u003devacuate, on_shared_storage\u003don_shared_storage,"},{"line_number":1244,"context_line":"                preserve_ephemeral\u003dpreserve_ephemeral, migration\u003dmigration,"},{"line_number":1245,"context_line":"                host\u003dhost, node\u003dnode, limits\u003dlimits, request_spec\u003drequest_spec,"},{"line_number":1246,"context_line":"                accel_uuids\u003daccel_uuids)"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def _rebuild_cyborg_arq("}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_4b9265fe","line":1245,"in_reply_to":"9f560f44_d2d114fd","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":1246,"context_line":"                accel_uuids\u003daccel_uuids)"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def _rebuild_cyborg_arq("},{"line_number":1249,"context_line":"            self, context, instance, host, request_spec, evacuate):"},{"line_number":1250,"context_line":"        dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1251,"context_line":"        if not dp_name:"},{"line_number":1252,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_b2cc6061","line":1249,"updated":"2020-08-27 13:22:02.000000000","message":"nit:\n\n  def _rebuild_cyborg_arq(\n      self, context, instance, host, request_spec, evacuate,\n  ):","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"            return cyclient.get_arq_uuids_for_instance(instance)"},{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"        cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":1259,"context_line":"        resource_provider_mapping \u003d ("},{"line_number":1260,"context_line":"            request_spec.get_request_group_mapping())"},{"line_number":1261,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1262,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1263,"context_line":"            host, resource_provider_mapping)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_320a1089","line":1260,"range":{"start_line":1259,"start_character":0,"end_line":1260,"end_character":53},"updated":"2020-08-27 13:22:02.000000000","message":"nit: fits on one line","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"            return cyclient.get_arq_uuids_for_instance(instance)"},{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"        cyclient.delete_arqs_for_instance(instance.uuid)"},{"line_number":1259,"context_line":"        resource_provider_mapping \u003d ("},{"line_number":1260,"context_line":"            request_spec.get_request_group_mapping())"},{"line_number":1261,"context_line":"        return self._create_and_bind_arqs("},{"line_number":1262,"context_line":"            context, instance.uuid, instance.flavor.extra_specs,"},{"line_number":1263,"context_line":"            host, resource_provider_mapping)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_208c7034","line":1260,"range":{"start_line":1259,"start_character":0,"end_line":1260,"end_character":53},"in_reply_to":"9f560f44_320a1089","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":1151,"context_line":"                    external_resources +\u003d ("},{"line_number":1152,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1153,"context_line":"                            context, instance.uuid))"},{"line_number":1154,"context_line":"                    # NOTE(gibi): When other module wants to handle similar"},{"line_number":1155,"context_line":"                    # non-nova resources then here we have to  collect all"},{"line_number":1156,"context_line":"                    # the external resource requests in a single list and"},{"line_number":1157,"context_line":"                    # add them to the RequestSpec."}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_c74f6a68","line":1154,"range":{"start_line":1154,"start_character":45,"end_line":1154,"end_character":58},"updated":"2020-08-31 10:09:38.000000000","message":"modules want","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1153,"context_line":"                            context, instance.uuid))"},{"line_number":1154,"context_line":"                    # NOTE(gibi): When other module wants to handle similar"},{"line_number":1155,"context_line":"                    # non-nova resources then here we have to  collect all"},{"line_number":1156,"context_line":"                    # the external resource requests in a single list and"},{"line_number":1157,"context_line":"                    # add them to the RequestSpec."},{"line_number":1158,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_275586fb","line":1155,"range":{"start_line":1155,"start_character":62,"end_line":1155,"end_character":63},"updated":"2020-08-31 10:09:38.000000000","message":"nit (extra space)","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":1151,"context_line":"                    external_resources +\u003d ("},{"line_number":1152,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":1153,"context_line":"                            context, instance.uuid))"},{"line_number":1154,"context_line":"                    # NOTE(gibi): When other module wants to handle similar"},{"line_number":1155,"context_line":"                    # non-nova resources then here we have to  collect all"},{"line_number":1156,"context_line":"                    # the external resource requests in a single list and"},{"line_number":1157,"context_line":"                    # add them to the RequestSpec."},{"line_number":1158,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1159,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1160,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_7c71d10c","line":1157,"range":{"start_line":1154,"start_character":0,"end_line":1157,"end_character":50},"updated":"2020-08-31 10:09:38.000000000","message":"As noted before [1], this comment should be placed before the \u0027request_spec.requested_resources\u0027 line. It doesn\u0027t make sense here.\n\n[1] https://review.opendev.org/#/c/715326/22/nova/conductor/manager.py@1157","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        return self._wait_for_state_change(server, expected_state)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def _evacuate_server(self, server, num_hosts):"},{"line_number":481,"context_line":"        \"\"\"Evacuate a server.\"\"\""},{"line_number":482,"context_line":"        server_hostname \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":483,"context_line":"        for i in range(num_hosts):"},{"line_number":484,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_5cd84def","line":481,"range":{"start_line":481,"start_character":8,"end_line":481,"end_character":32},"updated":"2020-08-31 10:09:38.000000000","message":"This is misleading. You\u0027re not evacuating a server, you\u0027re stopping the host that the server is on and finding another host to evacuate the server to. This doesn\u0027t belong here. Can you move it back to the main test file, possibly in a function called \u0027_test_evacuate\u0027 or something?","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fddce3d4c47f347f77a2d543d552b38832dc2799","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":483,"context_line":"        self._wait_for_server_parameter("},{"line_number":484,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: host,"},{"line_number":485,"context_line":"                          \u0027status\u0027: expected_state})"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"class PlacementHelperMixin:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f560f44_90bda104","line":485,"updated":"2020-08-31 16:45:08.000000000","message":"Much better. Thanks!","commit_id":"f837a6b754df41c31da25ad10af6eccdc39f03ef"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":8111,"context_line":"        self.NUM_HOSTS \u003d 2  # 2nd host needed for evacuate"},{"line_number":8112,"context_line":"        super(AcceleratorServerOpsTest, self).setUp()"},{"line_number":8113,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":8114,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":8115,"context_line":"        flavor_id \u003d self._create_acc_flavor()"},{"line_number":8116,"context_line":"        server_name \u003d \u0027accel_server1\u0027"},{"line_number":8117,"context_line":"        self.server \u003d self._create_server("}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_3408142c","line":8114,"updated":"2020-07-20 11:02:26.000000000","message":"You added this but I don\u0027t see that you are using it during your test.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":8236,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8237,"context_line":"        self.api.post_server_action("},{"line_number":8238,"context_line":"            self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8239,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8240,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8241,"context_line":"        compute_to_stop.start()"},{"line_number":8242,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_77172e47","line":8239,"updated":"2020-07-20 11:02:26.000000000","message":"if the test is slower than nova making the evacuation then this test might not see the instance in REBUILD state at all but only in ACTIVE. This will lead to a randomly failing test case.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":8237,"context_line":"        self.api.post_server_action("},{"line_number":8238,"context_line":"            self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8239,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8240,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8241,"context_line":"        compute_to_stop.start()"},{"line_number":8242,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8243,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_1720729b","line":8240,"updated":"2020-07-20 11:02:26.000000000","message":"you can wait for the ACTIVE state plus for the \u0027OS-EXT-SRV-ATTR:host\u0027 attribute to point to the another compute in this test.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":8241,"context_line":"        compute_to_stop.start()"},{"line_number":8242,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8243,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8244,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8245,"context_line":""},{"line_number":8246,"context_line":"    def test_rebuild(self):"},{"line_number":8247,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_1707d21a","line":8244,"updated":"2020-07-20 11:02:26.000000000","message":"I would also check that the cyborg side is updated accordingly.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[{"line_number":8249,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8250,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8251,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8252,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8253,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8254,"context_line":"        self._check_allocations_usage(self.server)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_b72a667b","line":8252,"range":{"start_line":8252,"start_character":0,"end_line":8252,"end_character":59},"updated":"2020-07-20 11:02:26.000000000","message":"ditto","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b98ab57ab4cba1e196608aa7a3dbe627f1a229","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"bf51134e_7429ec99","line":8255,"updated":"2020-07-20 11:02:26.000000000","message":"Please add a functional test that shows that evacuate and/or rebuild is blocked for old computes.","commit_id":"00febc2d82fde6a2751363ef4ed2d7963235fc06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":8077,"context_line":"    def setUp(self):"},{"line_number":8078,"context_line":"        self.NUM_HOSTS \u003d 2  # 2nd host needed for evacuate"},{"line_number":8079,"context_line":"        super(AcceleratorServerOpsTest, self).setUp()"},{"line_number":8080,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":8081,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":8082,"context_line":"        flavor_id \u003d self._create_acc_flavor()"},{"line_number":8083,"context_line":"        server_name \u003d \u0027accel_server1\u0027"},{"line_number":8084,"context_line":"        self.server \u003d self._create_server("}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_24104000","line":8081,"range":{"start_line":8080,"start_character":0,"end_line":8081,"end_character":44},"updated":"2020-08-25 09:36:38.000000000","message":"You added this but I don\u0027t see that you are using it during your test.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":8077,"context_line":"    def setUp(self):"},{"line_number":8078,"context_line":"        self.NUM_HOSTS \u003d 2  # 2nd host needed for evacuate"},{"line_number":8079,"context_line":"        super(AcceleratorServerOpsTest, self).setUp()"},{"line_number":8080,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":8081,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":8082,"context_line":"        flavor_id \u003d self._create_acc_flavor()"},{"line_number":8083,"context_line":"        server_name \u003d \u0027accel_server1\u0027"},{"line_number":8084,"context_line":"        self.server \u003d self._create_server("}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_000a351e","line":8081,"range":{"start_line":8080,"start_character":0,"end_line":8081,"end_character":44},"in_reply_to":"9f560f44_24104000","updated":"2020-08-26 09:01:02.000000000","message":"Removed.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":8207,"context_line":"        compute_to_stop.start()"},{"line_number":8208,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8209,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8210,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8211,"context_line":""},{"line_number":8212,"context_line":"    def test_rebuild(self):"},{"line_number":8213,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_44b454f2","line":8210,"updated":"2020-08-25 09:36:38.000000000","message":"My comments are still valid from PS15 https://review.opendev.org/#/c/715326/15/nova/tests/functional/test_servers.py","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":8207,"context_line":"        compute_to_stop.start()"},{"line_number":8208,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8209,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8210,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8211,"context_line":""},{"line_number":8212,"context_line":"    def test_rebuild(self):"},{"line_number":8213,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_c0031d0c","line":8210,"in_reply_to":"9f560f44_44b454f2","updated":"2020-08-26 09:01:02.000000000","message":"Done. Removed `REBUILD` state.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":8215,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8216,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8217,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8218,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8219,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8220,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8221,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_64ccf888","line":8218,"updated":"2020-08-25 09:36:38.000000000","message":"if the test is slower than nova making the rebuild then this test might not see the instance in REBUILD state at all but only in ACTIVE. This will lead to a randomly failing test case.","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":8215,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8216,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8217,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8218,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8219,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8220,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8221,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_2007791a","line":8218,"in_reply_to":"9f560f44_64ccf888","updated":"2020-08-26 09:01:02.000000000","message":"Done. ditto","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37c2a327a1ded05b94add5202800e30eed7bbb68","unresolved":false,"context_lines":[{"line_number":8198,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8199,"context_line":"        self.api.post_server_action("},{"line_number":8200,"context_line":"            self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8201,"context_line":"        self._wait_for_server_parameter("},{"line_number":8202,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: compute_to_evacuate.host})"},{"line_number":8203,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8204,"context_line":"        compute_to_stop.start()"},{"line_number":8205,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8206,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_6e2cbb98","line":8203,"range":{"start_line":8201,"start_character":0,"end_line":8203,"end_character":58},"updated":"2020-08-26 13:27:33.000000000","message":"you can combine these two into a single _wait_for_server_parameter() call","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"5f29cb2873f17aa46b67a82d722713a0181d81ac","unresolved":false,"context_lines":[{"line_number":8198,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8199,"context_line":"        self.api.post_server_action("},{"line_number":8200,"context_line":"            self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8201,"context_line":"        self._wait_for_server_parameter("},{"line_number":8202,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: compute_to_evacuate.host})"},{"line_number":8203,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8204,"context_line":"        compute_to_stop.start()"},{"line_number":8205,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8206,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_d9ff8231","line":8203,"range":{"start_line":8201,"start_character":0,"end_line":8203,"end_character":58},"in_reply_to":"9f560f44_6e2cbb98","updated":"2020-08-27 02:45:31.000000000","message":"Done","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37c2a327a1ded05b94add5202800e30eed7bbb68","unresolved":false,"context_lines":[{"line_number":8204,"context_line":"        compute_to_stop.start()"},{"line_number":8205,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8206,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8207,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8208,"context_line":""},{"line_number":8209,"context_line":"    def test_rebuild(self):"},{"line_number":8210,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_ee372be2","line":8207,"updated":"2020-08-26 13:27:33.000000000","message":"As I noted in PS15 please assert that cyborg is updated accordingly","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"5f29cb2873f17aa46b67a82d722713a0181d81ac","unresolved":false,"context_lines":[{"line_number":8204,"context_line":"        compute_to_stop.start()"},{"line_number":8205,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8206,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8207,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8208,"context_line":""},{"line_number":8209,"context_line":"    def test_rebuild(self):"},{"line_number":8210,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_39fb1e47","line":8207,"in_reply_to":"9f560f44_ee372be2","updated":"2020-08-27 02:45:31.000000000","message":"Done","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37c2a327a1ded05b94add5202800e30eed7bbb68","unresolved":false,"context_lines":[{"line_number":8212,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8213,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8214,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8215,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8216,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8217,"context_line":""},{"line_number":8218,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_2eb12345","line":8215,"updated":"2020-08-26 13:27:33.000000000","message":"You need an extra\n\nfake_notifier.wait_for_versioned_notifications(\u0027instance.rebuild.end\u0027)\n\nbefore the wait for state change to avoid the case when the rebuild fails and puts the instance back to ACTIVE","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"5f29cb2873f17aa46b67a82d722713a0181d81ac","unresolved":false,"context_lines":[{"line_number":8212,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8213,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8214,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8215,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8216,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8217,"context_line":""},{"line_number":8218,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_19f61a5e","line":8215,"in_reply_to":"9f560f44_2eb12345","updated":"2020-08-27 02:45:31.000000000","message":"Done","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":8184,"context_line":"        self.assertEqual(403, ex.response.status_code)"},{"line_number":8185,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8186,"context_line":""},{"line_number":8187,"context_line":"    def test_evacuate(self):"},{"line_number":8188,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8189,"context_line":"        arqs \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"},{"line_number":8190,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8191,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8192,"context_line":"                compute_to_stop \u003d self.compute_services[i]"},{"line_number":8193,"context_line":"            else:"},{"line_number":8194,"context_line":"                compute_to_evacuate \u003d self.compute_services[i]"},{"line_number":8195,"context_line":"        # Stop and force down the compute service."},{"line_number":8196,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":8197,"context_line":"            host\u003dserver_hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":8198,"context_line":"        compute_to_stop.stop()"},{"line_number":8199,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8200,"context_line":"        self.api.post_server_action("},{"line_number":8201,"context_line":"            self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8202,"context_line":"        self._wait_for_server_parameter("},{"line_number":8203,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: compute_to_evacuate.host,"},{"line_number":8204,"context_line":"                \u0027status\u0027: \u0027ACTIVE\u0027})"},{"line_number":8205,"context_line":"        compute_to_stop.start()"},{"line_number":8206,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8207,"context_line":"        arqs_new \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"},{"line_number":8208,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8209,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8210,"context_line":"        self.assertEqual(server_hostname, arqs[0][\u0027hostname\u0027])"},{"line_number":8211,"context_line":"        self.assertEqual(evac_hostname, arqs_new[0][\u0027hostname\u0027])"},{"line_number":8212,"context_line":""},{"line_number":8213,"context_line":"    def test_rebuild(self):"},{"line_number":8214,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"},{"line_number":8215,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8216,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8217,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8218,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8219,"context_line":"        fake_notifier.wait_for_versioned_notifications(\u0027instance.rebuild.end\u0027)"},{"line_number":8220,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8221,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8222,"context_line":""},{"line_number":8223,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027)"},{"line_number":8224,"context_line":"    def test_evacuate_old_compute(self, old_compute_version):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_d27e3417","line":8221,"range":{"start_line":8187,"start_character":0,"end_line":8221,"end_character":50},"updated":"2020-08-27 13:22:02.000000000","message":"It\u0027d be nicer if these were grouped with their passing \u0027_ok\u0027 tests above","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":8184,"context_line":"        self.assertEqual(403, ex.response.status_code)"},{"line_number":8185,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8186,"context_line":""},{"line_number":8187,"context_line":"    def test_evacuate(self):"},{"line_number":8188,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8189,"context_line":"        arqs \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"},{"line_number":8190,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8191,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8192,"context_line":"                compute_to_stop \u003d self.compute_services[i]"},{"line_number":8193,"context_line":"            else:"},{"line_number":8194,"context_line":"                compute_to_evacuate \u003d self.compute_services[i]"},{"line_number":8195,"context_line":"        # Stop and force down the compute service."},{"line_number":8196,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":8197,"context_line":"            host\u003dserver_hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":8198,"context_line":"        compute_to_stop.stop()"},{"line_number":8199,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8200,"context_line":"        self.api.post_server_action("},{"line_number":8201,"context_line":"            self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8202,"context_line":"        self._wait_for_server_parameter("},{"line_number":8203,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: compute_to_evacuate.host,"},{"line_number":8204,"context_line":"                \u0027status\u0027: \u0027ACTIVE\u0027})"},{"line_number":8205,"context_line":"        compute_to_stop.start()"},{"line_number":8206,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8207,"context_line":"        arqs_new \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"},{"line_number":8208,"context_line":"        evac_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8209,"context_line":"        self.assertNotEqual(server_hostname, evac_hostname)"},{"line_number":8210,"context_line":"        self.assertEqual(server_hostname, arqs[0][\u0027hostname\u0027])"},{"line_number":8211,"context_line":"        self.assertEqual(evac_hostname, arqs_new[0][\u0027hostname\u0027])"},{"line_number":8212,"context_line":""},{"line_number":8213,"context_line":"    def test_rebuild(self):"},{"line_number":8214,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"},{"line_number":8215,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8216,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8217,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8218,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8219,"context_line":"        fake_notifier.wait_for_versioned_notifications(\u0027instance.rebuild.end\u0027)"},{"line_number":8220,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8221,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8222,"context_line":""},{"line_number":8223,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027)"},{"line_number":8224,"context_line":"    def test_evacuate_old_compute(self, old_compute_version):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_609b0866","line":8221,"range":{"start_line":8187,"start_character":0,"end_line":8221,"end_character":50},"in_reply_to":"9f560f44_d27e3417","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":8222,"context_line":""},{"line_number":8223,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027)"},{"line_number":8224,"context_line":"    def test_evacuate_old_compute(self, old_compute_version):"},{"line_number":8225,"context_line":"        old_compute_version.return_value \u003d 52"},{"line_number":8226,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8227,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8228,"context_line":"            hostname \u003d \u0027accel_host\u0027 + str(i)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_d2a3d49c","line":8225,"range":{"start_line":8225,"start_character":8,"end_line":8225,"end_character":45},"updated":"2020-08-27 13:22:02.000000000","message":"This test wasn\u0027t great because it fails but it\u0027s not immediately apparent why it fails. It would be nice to add a docstring here.\n\nAlso, the first half of the test is shared. Could we have a \u0027_test_evacuate\u0027 helper?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":8222,"context_line":""},{"line_number":8223,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027)"},{"line_number":8224,"context_line":"    def test_evacuate_old_compute(self, old_compute_version):"},{"line_number":8225,"context_line":"        old_compute_version.return_value \u003d 52"},{"line_number":8226,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8227,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8228,"context_line":"            hostname \u003d \u0027accel_host\u0027 + str(i)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_8baf5d7c","line":8225,"range":{"start_line":8225,"start_character":8,"end_line":8225,"end_character":45},"in_reply_to":"9f560f44_d2a3d49c","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":8165,"context_line":"        arqs \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"},{"line_number":8166,"context_line":"        compute_to_stop, compute_to_evacuate \u003d self._evacuate_server("},{"line_number":8167,"context_line":"                self.server, self.NUM_HOSTS)"},{"line_number":8168,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8169,"context_line":"        self._wait_for_server_parameter("},{"line_number":8170,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: compute_to_evacuate.host,"},{"line_number":8171,"context_line":"                          \u0027status\u0027: \u0027ACTIVE\u0027})"},{"line_number":8172,"context_line":"        compute_to_stop.start()"},{"line_number":8173,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8174,"context_line":"        arqs_new \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_9c9025f0","line":8171,"range":{"start_line":8168,"start_character":0,"end_line":8171,"end_character":46},"updated":"2020-08-31 10:09:38.000000000","message":"*This* is what should be in the \u0027_evacuate_server\u0027 helper, not what you have","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":8165,"context_line":"        arqs \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"},{"line_number":8166,"context_line":"        compute_to_stop, compute_to_evacuate \u003d self._evacuate_server("},{"line_number":8167,"context_line":"                self.server, self.NUM_HOSTS)"},{"line_number":8168,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027], {\u0027evacuate\u0027: {}})"},{"line_number":8169,"context_line":"        self._wait_for_server_parameter("},{"line_number":8170,"context_line":"            self.server, {\u0027OS-EXT-SRV-ATTR:host\u0027: compute_to_evacuate.host,"},{"line_number":8171,"context_line":"                          \u0027status\u0027: \u0027ACTIVE\u0027})"},{"line_number":8172,"context_line":"        compute_to_stop.start()"},{"line_number":8173,"context_line":"        self.server \u003d self.api.get_server(self.server[\u0027id\u0027])"},{"line_number":8174,"context_line":"        arqs_new \u003d self.cyborg.fake_get_arqs_for_instance(self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_e25d3ced","line":8171,"range":{"start_line":8168,"start_character":0,"end_line":8171,"end_character":46},"in_reply_to":"9f560f44_9c9025f0","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/tests/unit/accelerator/test_cyborg.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        mock_cyborg_get.assert_called_once_with("},{"line_number":415,"context_line":"            self.client.ARQ_URL, params\u003dquery)"},{"line_number":416,"context_line":"        bound_arqs \u003d [bound_arq[\u0027uuid\u0027] for bound_arq in bound_arqs]"},{"line_number":417,"context_line":"        bound_arqs.sort(key\u003dlambda x: x)"},{"line_number":418,"context_line":"        ret_arqs.sort(key\u003dlambda x: x)"},{"line_number":419,"context_line":"        self.assertEqual(bound_arqs, ret_arqs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_72dda83f","line":417,"range":{"start_line":417,"start_character":24,"end_line":417,"end_character":39},"updated":"2020-08-27 13:22:02.000000000","message":"Isn\u0027t this unnecessary?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        mock_cyborg_get.assert_called_once_with("},{"line_number":415,"context_line":"            self.client.ARQ_URL, params\u003dquery)"},{"line_number":416,"context_line":"        bound_arqs \u003d [bound_arq[\u0027uuid\u0027] for bound_arq in bound_arqs]"},{"line_number":417,"context_line":"        bound_arqs.sort(key\u003dlambda x: x)"},{"line_number":418,"context_line":"        ret_arqs.sort(key\u003dlambda x: x)"},{"line_number":419,"context_line":"        self.assertEqual(bound_arqs, ret_arqs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_cbcdd55f","line":417,"range":{"start_line":417,"start_character":24,"end_line":417,"end_character":39},"in_reply_to":"9f560f44_72dda83f","updated":"2020-08-28 08:13:48.000000000","message":"Yeah, this is necessary to sort arq uuids for comparing with another array.","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        mock_cyborg_get.assert_called_once_with("},{"line_number":415,"context_line":"            self.client.ARQ_URL, params\u003dquery)"},{"line_number":416,"context_line":"        bound_arqs \u003d [bound_arq[\u0027uuid\u0027] for bound_arq in bound_arqs]"},{"line_number":417,"context_line":"        bound_arqs.sort(key\u003dlambda x: x)"},{"line_number":418,"context_line":"        ret_arqs.sort(key\u003dlambda x: x)"},{"line_number":419,"context_line":"        self.assertEqual(bound_arqs, ret_arqs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_fc168155","line":417,"range":{"start_line":417,"start_character":24,"end_line":417,"end_character":39},"in_reply_to":"9f560f44_cbcdd55f","updated":"2020-08-31 10:09:38.000000000","message":"Sorting things is necessary. I don\u0027t think passing the key argument is though?\n\n  \u003e\u003e\u003e x \u003d list(range(5, 0, -1))\n  \u003e\u003e\u003e x\n  [5, 4, 3, 2, 1]\n  \u003e\u003e\u003e x.sort(key\u003dlambda x: x)\n  \u003e\u003e\u003e x\n  [1, 2, 3, 4, 5]\n  \u003e\u003e\u003e x \u003d list(range(5, 0, -1))\n  \u003e\u003e\u003e x.sort()\n  \u003e\u003e\u003e x\n  [1, 2, 3, 4, 5]\n\nThis would be useful if you wanted to sort objects by a given attribute, however, I don\u0027t think you\u0027re doing that here","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        mock_cyborg_get.assert_called_once_with("},{"line_number":415,"context_line":"            self.client.ARQ_URL, params\u003dquery)"},{"line_number":416,"context_line":"        bound_arqs \u003d [bound_arq[\u0027uuid\u0027] for bound_arq in bound_arqs]"},{"line_number":417,"context_line":"        bound_arqs.sort(key\u003dlambda x: x)"},{"line_number":418,"context_line":"        ret_arqs.sort(key\u003dlambda x: x)"},{"line_number":419,"context_line":"        self.assertEqual(bound_arqs, ret_arqs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_42450815","line":417,"range":{"start_line":417,"start_character":24,"end_line":417,"end_character":39},"in_reply_to":"9f560f44_fc168155","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        mock_cyborg_get.assert_called_once_with("},{"line_number":415,"context_line":"            self.client.ARQ_URL, params\u003dquery)"},{"line_number":416,"context_line":"        bound_arqs \u003d [bound_arq[\u0027uuid\u0027] for bound_arq in bound_arqs]"},{"line_number":417,"context_line":"        bound_arqs.sort(key\u003dlambda x: x)"},{"line_number":418,"context_line":"        ret_arqs.sort(key\u003dlambda x: x)"},{"line_number":419,"context_line":"        self.assertEqual(bound_arqs, ret_arqs)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_7c02710d","line":417,"range":{"start_line":417,"start_character":24,"end_line":417,"end_character":40},"updated":"2020-08-31 10:09:38.000000000","message":"I think my comment from [1] is valid\n\n[1] https://review.opendev.org/#/c/715326/22/nova/tests/unit/accelerator/test_cyborg.py@417","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/tests/unit/compute/test_api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"264e9ef95e78a051993586250f0dd06a2d1c2b29","unresolved":false,"context_lines":[{"line_number":7565,"context_line":"            self._test_block_accelerators, instance, args_info)"},{"line_number":7566,"context_line":"        # myfunc was not called"},{"line_number":7567,"context_line":"        self.assertEqual({}, args_info)"},{"line_number":7568,"context_line":""},{"line_number":7569,"context_line":"    # TODO(huaqiang): Remove in Wallaby"},{"line_number":7570,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027)"},{"line_number":7571,"context_line":"    def test__check_compute_service_for_mixed_instance(self, mock_ver):"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_24acc09d","line":7568,"updated":"2020-08-25 09:36:38.000000000","message":"Could you please add a unit test that covers the until_service parameter handling of the block_accelerators decorator?","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4dcd69c75870a1184fe67d30da421e5cfa6b5ae3","unresolved":false,"context_lines":[{"line_number":7565,"context_line":"            self._test_block_accelerators, instance, args_info)"},{"line_number":7566,"context_line":"        # myfunc was not called"},{"line_number":7567,"context_line":"        self.assertEqual({}, args_info)"},{"line_number":7568,"context_line":""},{"line_number":7569,"context_line":"    # TODO(huaqiang): Remove in Wallaby"},{"line_number":7570,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027)"},{"line_number":7571,"context_line":"    def test__check_compute_service_for_mixed_instance(self, mock_ver):"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_4d8586ac","line":7568,"in_reply_to":"9f560f44_24acc09d","updated":"2020-08-26 09:01:02.000000000","message":"Done","commit_id":"c3ea1d3b805c1285d016c33637207045c8abbc0d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":7569,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027,"},{"line_number":7570,"context_line":"                return_value\u003d54)"},{"line_number":7571,"context_line":"    def test_block_accelerators_until_service(self, mock_get_min):"},{"line_number":7572,"context_line":"        @compute_api.block_accelerators(until_service\u003d53)"},{"line_number":7573,"context_line":"        def myfunc(self, context, instance, *args, **kwargs):"},{"line_number":7574,"context_line":"            args_info[\u0027args\u0027] \u003d (context, instance, *args)"},{"line_number":7575,"context_line":"            args_info[\u0027kwargs\u0027] \u003d dict(**kwargs)"},{"line_number":7576,"context_line":""},{"line_number":7577,"context_line":"        extra_specs \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":7578,"context_line":"        flavor \u003d self._create_flavor(extra_specs\u003dextra_specs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_f21378ff","line":7575,"range":{"start_line":7572,"start_character":0,"end_line":7575,"end_character":48},"updated":"2020-08-27 13:22:02.000000000","message":"Rather than duplicating this, you could have simply passed an \u0027until_service\u0027 parameter to \u0027_test_block_accelerators\u0027 that defaulted to None.","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":7587,"context_line":""},{"line_number":7588,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027,"},{"line_number":7589,"context_line":"                return_value\u003d52)"},{"line_number":7590,"context_line":"    def test_block_accelerators_until_service_forbbiden(self, mock_get_min):"},{"line_number":7591,"context_line":"        @compute_api.block_accelerators(until_service\u003d53)"},{"line_number":7592,"context_line":"        def myfunc(self, context, instance, *args, **kwargs):"},{"line_number":7593,"context_line":"            args_info[\u0027args\u0027] \u003d (context, instance, *args)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_b26f4090","line":7590,"range":{"start_line":7590,"start_character":47,"end_line":7590,"end_character":55},"updated":"2020-08-27 13:22:02.000000000","message":"forbidden","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":7588,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027,"},{"line_number":7589,"context_line":"                return_value\u003d52)"},{"line_number":7590,"context_line":"    def test_block_accelerators_until_service_forbbiden(self, mock_get_min):"},{"line_number":7591,"context_line":"        @compute_api.block_accelerators(until_service\u003d53)"},{"line_number":7592,"context_line":"        def myfunc(self, context, instance, *args, **kwargs):"},{"line_number":7593,"context_line":"            args_info[\u0027args\u0027] \u003d (context, instance, *args)"},{"line_number":7594,"context_line":"            args_info[\u0027kwargs\u0027] \u003d dict(**kwargs)"},{"line_number":7595,"context_line":""},{"line_number":7596,"context_line":"        extra_specs \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":7597,"context_line":"        flavor \u003d self._create_flavor(extra_specs\u003dextra_specs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_52d4e41f","line":7594,"range":{"start_line":7591,"start_character":0,"end_line":7594,"end_character":48},"updated":"2020-08-27 13:22:02.000000000","message":"As above","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d203c86f45d6df0e3cb3d019674eb7c011b5d36e","unresolved":false,"context_lines":[{"line_number":2174,"context_line":"        new\u003dmock.Mock(return_value\u003dFalse))"},{"line_number":2175,"context_line":"    @mock.patch.object(flavors, \u0027get_flavor_by_flavor_id\u0027)"},{"line_number":2176,"context_line":"    def test_resize__with_accelerator(self, mock_get_flavor):"},{"line_number":2177,"context_line":"        \"\"\"Ensure resizes are rejected if either flavor requests "},{"line_number":2178,"context_line":"        accelerator.\"\"\""},{"line_number":2179,"context_line":"        fake_inst \u003d self._create_instance_obj()"},{"line_number":2180,"context_line":"        new_flavor \u003d self._create_flavor("}],"source_content_type":"text/x-python","patch_set":24,"id":"9f560f44_0a1cdebf","line":2177,"updated":"2020-08-28 15:32:59.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"c9f3df86df7a8245265d1a008ddbc0996d0e547d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d203c86f45d6df0e3cb3d019674eb7c011b5d36e","unresolved":false,"context_lines":[{"line_number":2174,"context_line":"        new\u003dmock.Mock(return_value\u003dFalse))"},{"line_number":2175,"context_line":"    @mock.patch.object(flavors, \u0027get_flavor_by_flavor_id\u0027)"},{"line_number":2176,"context_line":"    def test_resize__with_accelerator(self, mock_get_flavor):"},{"line_number":2177,"context_line":"        \"\"\"Ensure resizes are rejected if either flavor requests "},{"line_number":2178,"context_line":"        accelerator.\"\"\""},{"line_number":2179,"context_line":"        fake_inst \u003d self._create_instance_obj()"},{"line_number":2180,"context_line":"        new_flavor \u003d self._create_flavor("}],"source_content_type":"text/x-python","patch_set":24,"id":"9f560f44_6a763a0f","line":2177,"updated":"2020-08-28 15:32:59.000000000","message":"pep8: W291 trailing whitespace","commit_id":"c9f3df86df7a8245265d1a008ddbc0996d0e547d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d203c86f45d6df0e3cb3d019674eb7c011b5d36e","unresolved":false,"context_lines":[{"line_number":2175,"context_line":"    @mock.patch.object(flavors, \u0027get_flavor_by_flavor_id\u0027)"},{"line_number":2176,"context_line":"    def test_resize__with_accelerator(self, mock_get_flavor):"},{"line_number":2177,"context_line":"        \"\"\"Ensure resizes are rejected if either flavor requests "},{"line_number":2178,"context_line":"        accelerator.\"\"\""},{"line_number":2179,"context_line":"        fake_inst \u003d self._create_instance_obj()"},{"line_number":2180,"context_line":"        new_flavor \u003d self._create_flavor("},{"line_number":2181,"context_line":"            id\u003d200, flavorid\u003d\u0027new-flavor-id\u0027, name\u003d\u0027new_flavor\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9f560f44_4a7b76f3","line":2178,"updated":"2020-08-28 15:32:59.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"c9f3df86df7a8245265d1a008ddbc0996d0e547d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":7607,"context_line":""},{"line_number":7608,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027,"},{"line_number":7609,"context_line":"                return_value\u003d54)"},{"line_number":7610,"context_line":"    def test_block_accelerators_until_service(self, mock_get_min):"},{"line_number":7611,"context_line":"        extra_specs \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":7612,"context_line":"        flavor \u003d self._create_flavor(extra_specs\u003dextra_specs)"},{"line_number":7613,"context_line":"        instance \u003d self._create_instance_obj(flavor\u003dflavor)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_7ca6f155","line":7610,"updated":"2020-08-31 10:09:38.000000000","message":"Some docstrings explaining the differences between these would be helpful","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":7607,"context_line":""},{"line_number":7608,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027,"},{"line_number":7609,"context_line":"                return_value\u003d54)"},{"line_number":7610,"context_line":"    def test_block_accelerators_until_service(self, mock_get_min):"},{"line_number":7611,"context_line":"        extra_specs \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":7612,"context_line":"        flavor \u003d self._create_flavor(extra_specs\u003dextra_specs)"},{"line_number":7613,"context_line":"        instance \u003d self._create_instance_obj(flavor\u003dflavor)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_c23918a4","line":7610,"in_reply_to":"9f560f44_7ca6f155","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"97e01cb407cee257c9d956be2140dd6068dde2e8","unresolved":false,"context_lines":[{"line_number":2769,"context_line":"            new_pass\u003d\"new_password\", orig_sys_metadata\u003dsys_metadata,"},{"line_number":2770,"context_line":"            bdms\u003d[], recreate\u003dFalse, on_shared_storage\u003dFalse,"},{"line_number":2771,"context_line":"            preserve_ephemeral\u003dFalse, migration\u003dNone, scheduled_node\u003dNone,"},{"line_number":2772,"context_line":"            limits\u003d{}, request_spec\u003dNone, accel_uuids\u003d())"},{"line_number":2773,"context_line":"        self.compute.terminate_instance(self.context, instance, [])"},{"line_number":2774,"context_line":""},{"line_number":2775,"context_line":"    def test_rebuild_driver(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_5299196c","line":2772,"range":{"start_line":2772,"start_character":53,"end_line":2772,"end_character":57},"updated":"2020-04-09 15:48:23.000000000","message":"i want to restrict the types pased here to None or list so im going to change this to [] and do the same elsewhere.","commit_id":"7fce9bbb6aafb2aa75520742600ca13edf63a1ca"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6f346069e35ca39b79d5f766b3c77be74f5f98e2","unresolved":false,"context_lines":[{"line_number":2869,"context_line":"            self.context, instance, \u0027\u0027, \u0027\u0027, injected_files\u003d[],"},{"line_number":2870,"context_line":"            new_pass\u003d\"new_password\", orig_sys_metadata\u003dsys_metadata, bdms\u003d[],"},{"line_number":2871,"context_line":"            recreate\u003dFalse, on_shared_storage\u003dFalse, preserve_ephemeral\u003dFalse,"},{"line_number":2872,"context_line":"            migration\u003dNone, scheduled_node\u003dNone, limits\u003dNone, request_spec\u003dNone,"},{"line_number":2873,"context_line":"            accel_uuids\u003d())"},{"line_number":2874,"context_line":"        self.compute.terminate_instance(self.context, instance, [])"},{"line_number":2875,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_d5bfe0f8","line":2872,"updated":"2020-04-08 01:33:36.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"7fce9bbb6aafb2aa75520742600ca13edf63a1ca"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":13102,"context_line":"            \u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":13103,"context_line":"            \u0027remove_provider_tree_from_instance_allocation\u0027)"},{"line_number":13104,"context_line":"        with patch_spawn, patch_on_disk, patch_claim, patch_remove_allocs:"},{"line_number":13105,"context_line":"            self.assertRaises(messaging.ExpectedException,"},{"line_number":13106,"context_line":"                              self._rebuild, migration\u003dmigration,"},{"line_number":13107,"context_line":"                              send_node\u003dTrue)"},{"line_number":13108,"context_line":"        self.assertEqual(\"failed\", migration.status)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_920cbcec","line":13105,"range":{"start_line":13105,"start_character":30,"end_line":13105,"end_character":58},"updated":"2020-08-27 13:22:02.000000000","message":"hmm, is this related?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":13102,"context_line":"            \u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":13103,"context_line":"            \u0027remove_provider_tree_from_instance_allocation\u0027)"},{"line_number":13104,"context_line":"        with patch_spawn, patch_on_disk, patch_claim, patch_remove_allocs:"},{"line_number":13105,"context_line":"            self.assertRaises(messaging.ExpectedException,"},{"line_number":13106,"context_line":"                              self._rebuild, migration\u003dmigration,"},{"line_number":13107,"context_line":"                              send_node\u003dTrue)"},{"line_number":13108,"context_line":"        self.assertEqual(\"failed\", migration.status)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_4b170556","line":13105,"range":{"start_line":13105,"start_character":30,"end_line":13105,"end_character":58},"in_reply_to":"9f560f44_920cbcec","updated":"2020-08-28 08:13:48.000000000","message":"Yeah, we add `BuildAbortException` for rebuild instance, and this exception is decoratored by messaging.expected_exceptions, so raise messaging.ExpectedException here. Please see the related review: https://review.opendev.org/#/c/715326/19/nova/compute/manager.py@3299","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"658ee7e023af3f349d32b554bc02906146ccb1ff","unresolved":false,"context_lines":[{"line_number":700,"context_line":"            orig_sys_metadata\u003dNone, recreate\u003dTrue, on_shared_storage\u003dTrue,"},{"line_number":701,"context_line":"            preserve_ephemeral\u003dTrue, migration\u003dNone, node\u003dNone,"},{"line_number":702,"context_line":"            limits\u003dNone, request_spec\u003dNone, accel_uuids\u003d[], version\u003d\u00275.12\u0027)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    def test_reserve_block_device_name(self):"},{"line_number":705,"context_line":"        self.flags(long_rpc_timeout\u003d1234)"},{"line_number":706,"context_line":"        self._test_compute_api(\u0027reserve_block_device_name\u0027, \u0027call\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_2b681f85","line":703,"updated":"2020-06-26 01:31:29.000000000","message":"This also need to covered the rpc verion\u003d\u00275.0\u0027, such as in https://review.opendev.org/#/c/704227/25/nova/tests/unit/compute/test_rpcapi.py@949","commit_id":"6fa38a3ab923fafb99932adb0ba0376a036f5826"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":717,"context_line":"        mock_cctx \u003d mock.MagicMock()"},{"line_number":718,"context_line":"        mock_client.prepare.return_value \u003d mock_cctx"},{"line_number":719,"context_line":"        rebuild_args \u003d {\u0027new_pass\u0027: \u0027admin_password\u0027,"},{"line_number":720,"context_line":"                        \u0027injected_files\u0027: \u0027files_to_inject\u0027,"},{"line_number":721,"context_line":"                        \u0027image_ref\u0027: uuids.image_ref,"},{"line_number":722,"context_line":"                        \u0027orig_image_ref\u0027: uuids.orig_image_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_929cbc0e","line":719,"range":{"start_line":719,"start_character":24,"end_line":719,"end_character":53},"updated":"2020-08-27 13:22:02.000000000","message":"nit: you changed this in other places but not here :)\n\n  rebuild_args \u003d {\n      \u0027new_pass\u0027: \u0027admin_password\u0027,\n      ...,\n  }","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":717,"context_line":"        mock_cctx \u003d mock.MagicMock()"},{"line_number":718,"context_line":"        mock_client.prepare.return_value \u003d mock_cctx"},{"line_number":719,"context_line":"        rebuild_args \u003d {\u0027new_pass\u0027: \u0027admin_password\u0027,"},{"line_number":720,"context_line":"                        \u0027injected_files\u0027: \u0027files_to_inject\u0027,"},{"line_number":721,"context_line":"                        \u0027image_ref\u0027: uuids.image_ref,"},{"line_number":722,"context_line":"                        \u0027orig_image_ref\u0027: uuids.orig_image_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_ab2181ff","line":719,"range":{"start_line":719,"start_character":24,"end_line":719,"end_character":53},"in_reply_to":"9f560f44_929cbc0e","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":717,"context_line":"        mock_cctx \u003d mock.MagicMock()"},{"line_number":718,"context_line":"        mock_client.prepare.return_value \u003d mock_cctx"},{"line_number":719,"context_line":"        rebuild_args \u003d {\u0027new_pass\u0027: \u0027admin_password\u0027,"},{"line_number":720,"context_line":"                        \u0027injected_files\u0027: \u0027files_to_inject\u0027,"},{"line_number":721,"context_line":"                        \u0027image_ref\u0027: uuids.image_ref,"},{"line_number":722,"context_line":"                        \u0027orig_image_ref\u0027: uuids.orig_image_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_2707461b","line":719,"range":{"start_line":719,"start_character":24,"end_line":719,"end_character":53},"in_reply_to":"9f560f44_ab2181ff","updated":"2020-08-31 10:09:38.000000000","message":"Not done?","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5b110c5af507f37ef34e733e653d83b90e69e9d","unresolved":false,"context_lines":[{"line_number":729,"context_line":"                        \u0027migration\u0027: None,"},{"line_number":730,"context_line":"                        \u0027limits\u0027: None}"},{"line_number":731,"context_line":"        compute_api.rebuild_instance("},{"line_number":732,"context_line":"                ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":733,"context_line":"                accel_uuids\u003d[\u0027938af7f9-f136-4e5a-bdbe-3b6feab54311\u0027],"},{"line_number":734,"context_line":"                node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_12fb8c46","line":732,"range":{"start_line":732,"start_character":12,"end_line":732,"end_character":16},"updated":"2020-08-27 13:22:02.000000000","message":"nit","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3c90660fca8511abfea1dda704bd570f79c06855","unresolved":false,"context_lines":[{"line_number":729,"context_line":"                        \u0027migration\u0027: None,"},{"line_number":730,"context_line":"                        \u0027limits\u0027: None}"},{"line_number":731,"context_line":"        compute_api.rebuild_instance("},{"line_number":732,"context_line":"                ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":733,"context_line":"                accel_uuids\u003d[\u0027938af7f9-f136-4e5a-bdbe-3b6feab54311\u0027],"},{"line_number":734,"context_line":"                node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_cb24b511","line":732,"range":{"start_line":732,"start_character":12,"end_line":732,"end_character":16},"in_reply_to":"9f560f44_12fb8c46","updated":"2020-08-28 08:13:48.000000000","message":"Done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":729,"context_line":"                        \u0027migration\u0027: None,"},{"line_number":730,"context_line":"                        \u0027limits\u0027: None}"},{"line_number":731,"context_line":"        compute_api.rebuild_instance("},{"line_number":732,"context_line":"                ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":733,"context_line":"                accel_uuids\u003d[\u0027938af7f9-f136-4e5a-bdbe-3b6feab54311\u0027],"},{"line_number":734,"context_line":"                node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_070cc239","line":732,"range":{"start_line":732,"start_character":12,"end_line":732,"end_character":16},"in_reply_to":"9f560f44_cb24b511","updated":"2020-08-31 10:09:38.000000000","message":"Not done","commit_id":"c8085ab332fa71a039c6a085dc90629799731010"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":717,"context_line":"        mock_cctx \u003d mock.MagicMock()"},{"line_number":718,"context_line":"        mock_client.prepare.return_value \u003d mock_cctx"},{"line_number":719,"context_line":"        rebuild_args \u003d {\u0027new_pass\u0027: \u0027admin_password\u0027,"},{"line_number":720,"context_line":"                        \u0027injected_files\u0027: \u0027files_to_inject\u0027,"},{"line_number":721,"context_line":"                        \u0027image_ref\u0027: uuids.image_ref,"},{"line_number":722,"context_line":"                        \u0027orig_image_ref\u0027: uuids.orig_image_ref,"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_c72aca7c","line":719,"updated":"2020-08-31 10:09:38.000000000","message":"https://review.opendev.org/#/c/715326/22/nova/tests/unit/compute/test_rpcapi.py@719","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":717,"context_line":"        mock_cctx \u003d mock.MagicMock()"},{"line_number":718,"context_line":"        mock_client.prepare.return_value \u003d mock_cctx"},{"line_number":719,"context_line":"        rebuild_args \u003d {\u0027new_pass\u0027: \u0027admin_password\u0027,"},{"line_number":720,"context_line":"                        \u0027injected_files\u0027: \u0027files_to_inject\u0027,"},{"line_number":721,"context_line":"                        \u0027image_ref\u0027: uuids.image_ref,"},{"line_number":722,"context_line":"                        \u0027orig_image_ref\u0027: uuids.orig_image_ref,"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_0717a253","line":719,"in_reply_to":"9f560f44_c72aca7c","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":729,"context_line":"                        \u0027migration\u0027: None,"},{"line_number":730,"context_line":"                        \u0027limits\u0027: None}"},{"line_number":731,"context_line":"        compute_api.rebuild_instance("},{"line_number":732,"context_line":"                ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":733,"context_line":"                accel_uuids\u003d[\u0027938af7f9-f136-4e5a-bdbe-3b6feab54311\u0027],"},{"line_number":734,"context_line":"                node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_67393ed7","line":732,"range":{"start_line":732,"start_character":12,"end_line":732,"end_character":16},"updated":"2020-08-31 10:09:38.000000000","message":"https://review.opendev.org/#/c/715326/22/nova/tests/unit/compute/test_rpcapi.py@732","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":729,"context_line":"                        \u0027migration\u0027: None,"},{"line_number":730,"context_line":"                        \u0027limits\u0027: None}"},{"line_number":731,"context_line":"        compute_api.rebuild_instance("},{"line_number":732,"context_line":"                ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":733,"context_line":"                accel_uuids\u003d[\u0027938af7f9-f136-4e5a-bdbe-3b6feab54311\u0027],"},{"line_number":734,"context_line":"                node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":735,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_47087a2c","line":732,"range":{"start_line":732,"start_character":12,"end_line":732,"end_character":16},"in_reply_to":"9f560f44_67393ed7","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/virt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37c2a327a1ded05b94add5202800e30eed7bbb68","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        :param block_device_info: Information about block devices to be"},{"line_number":323,"context_line":"                                  attached to the instance."},{"line_number":324,"context_line":"        :param preserve_ephemeral: True if the default ephemeral storage"},{"line_number":325,"context_line":"                                   partition must be preserved on rebuild"},{"line_number":326,"context_line":"        \"\"\""},{"line_number":327,"context_line":"        raise NotImplementedError()"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_516b5883","line":325,"updated":"2020-08-26 13:27:33.000000000","message":"please document the new paramter","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"5f29cb2873f17aa46b67a82d722713a0181d81ac","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        :param block_device_info: Information about block devices to be"},{"line_number":323,"context_line":"                                  attached to the instance."},{"line_number":324,"context_line":"        :param preserve_ephemeral: True if the default ephemeral storage"},{"line_number":325,"context_line":"                                   partition must be preserved on rebuild"},{"line_number":326,"context_line":"        \"\"\""},{"line_number":327,"context_line":"        raise NotImplementedError()"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_799636f2","line":325,"in_reply_to":"9f560f44_516b5883","updated":"2020-08-27 02:45:31.000000000","message":"Done","commit_id":"80fa007217bdef43104e884767cf3b712cc4d2a3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                                  attached to the instance."},{"line_number":324,"context_line":"        :param preserve_ephemeral: True if the default ephemeral storage"},{"line_number":325,"context_line":"                                   partition must be preserved on rebuild"},{"line_number":326,"context_line":"        :param accel_uuids: Accelerator uuids."},{"line_number":327,"context_line":"        \"\"\""},{"line_number":328,"context_line":"        raise NotImplementedError()"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_e7254eb0","line":326,"range":{"start_line":326,"start_character":40,"end_line":326,"end_character":45},"updated":"2020-08-31 10:09:38.000000000","message":"UUIDs","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                                  attached to the instance."},{"line_number":324,"context_line":"        :param preserve_ephemeral: True if the default ephemeral storage"},{"line_number":325,"context_line":"                                   partition must be preserved on rebuild"},{"line_number":326,"context_line":"        :param accel_uuids: Accelerator uuids."},{"line_number":327,"context_line":"        \"\"\""},{"line_number":328,"context_line":"        raise NotImplementedError()"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_87545223","line":326,"range":{"start_line":326,"start_character":40,"end_line":326,"end_character":45},"in_reply_to":"9f560f44_e7254eb0","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"16c48bb577c5be8545d85ed91782ded72cdef1a3","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"            information. Ignored by this driver."},{"line_number":1711,"context_line":"        :param preserve_ephemeral: Boolean value; if True the ephemeral"},{"line_number":1712,"context_line":"            must be preserved on rebuild."},{"line_number":1713,"context_line":"        :param accel_uuids: Accelerator uuids. Ignored by this driver."},{"line_number":1714,"context_line":"        \"\"\""},{"line_number":1715,"context_line":"        LOG.debug(\u0027Rebuild called for instance\u0027, instance\u003dinstance)"},{"line_number":1716,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_a71a366c","line":1713,"range":{"start_line":1713,"start_character":40,"end_line":1713,"end_character":45},"updated":"2020-08-31 10:09:38.000000000","message":"UUIDs","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"e34a8983ab0b036004d28a51f4a19dbb251c7f69","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"            information. Ignored by this driver."},{"line_number":1711,"context_line":"        :param preserve_ephemeral: Boolean value; if True the ephemeral"},{"line_number":1712,"context_line":"            must be preserved on rebuild."},{"line_number":1713,"context_line":"        :param accel_uuids: Accelerator uuids. Ignored by this driver."},{"line_number":1714,"context_line":"        \"\"\""},{"line_number":1715,"context_line":"        LOG.debug(\u0027Rebuild called for instance\u0027, instance\u003dinstance)"},{"line_number":1716,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_475a3a50","line":1713,"range":{"start_line":1713,"start_character":40,"end_line":1713,"end_character":45},"in_reply_to":"9f560f44_a71a366c","updated":"2020-09-01 00:28:31.000000000","message":"Done","commit_id":"a5a1c8b26557a2be852e8d1fc5c9e8e710e0c80a"}]}
