)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before this patch, VM diagnostics response was just a"},{"line_number":10,"context_line":"\u0027blob\u0027 of data returned by each hypervisor. New API"},{"line_number":11,"context_line":"version makes diagnostics response a standardized."},{"line_number":12,"context_line":"New response has a set of fields which each hypervisor"},{"line_number":13,"context_line":"will try to fill. If hypervisor unable to provide a"},{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da4df55a_b2b99a17","line":11,"range":{"start_line":11,"start_character":35,"end_line":11,"end_character":37},"updated":"2016-12-27 20:36:34.000000000","message":"s/a//","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before this patch, VM diagnostics response was just a"},{"line_number":10,"context_line":"\u0027blob\u0027 of data returned by each hypervisor. New API"},{"line_number":11,"context_line":"version makes diagnostics response a standardized."},{"line_number":12,"context_line":"New response has a set of fields which each hypervisor"},{"line_number":13,"context_line":"will try to fill. If hypervisor unable to provide a"},{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"ba5201f7_abbd3b04","line":11,"range":{"start_line":11,"start_character":35,"end_line":11,"end_character":37},"in_reply_to":"da4df55a_b2b99a17","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f9b4c843cbeb64dbc09d9b61635b9735df4f2a05","unresolved":false,"context_lines":[{"line_number":12,"context_line":"New response has a set of fields which each hypervisor"},{"line_number":13,"context_line":"will try to fill. If hypervisor unable to provide a"},{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da4df55a_d290de45","line":15,"updated":"2016-12-27 20:37:38.000000000","message":"Please make a note somewhere in here that this is being tested in Tempest with change:\n\nI7757c5beeea3d3b0bc15a51cafc5ea2ada65e76c","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":12,"context_line":"New response has a set of fields which each hypervisor"},{"line_number":13,"context_line":"will try to fill. If hypervisor unable to provide a"},{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"ba5201f7_cbba7f0a","line":15,"in_reply_to":"da4df55a_d290de45","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":13,"context_line":"will try to fill. If hypervisor unable to provide a"},{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint: restore-vm-diagnostics"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da4df55a_92bc9607","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":9},"updated":"2016-12-27 20:36:34.000000000","message":"APIImpact is only needed for spec patches really, you could remove this.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":13,"context_line":"will try to fill. If hypervisor unable to provide a"},{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint: restore-vm-diagnostics"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"ba5201f7_eb3583a8","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":9},"in_reply_to":"da4df55a_92bc9607","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint: restore-vm-diagnostics"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da4df55a_72c3b289","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"updated":"2016-12-27 20:36:34.000000000","message":"We don\u0027t need this unless you can point out some external doc to the nova tree like the admin/operator guides or openstack manuals repo. Otherwise this tag creates a bug against nova.\n\nLooking externally a bit, the admin guide docs here could probably be updated to mention this microversion for the standardized version of the response:\n\nhttp://docs.openstack.org/admin-guide/common/nova-show-usage-statistics-for-hosts-instances.html#show-instance-usage-statistics\n\nSo the DocImpact tag here should point that out since it will go into the bug report.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":14,"context_line":"specific field then this field will be reported as \u0027None\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint: restore-vm-diagnostics"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"ba5201f7_4b45af15","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"in_reply_to":"da4df55a_72c3b289","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"}],"api-ref/source/diagnostics.inc":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Response"},{"line_number":32,"context_line":"--------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"The response format for diagnostics is backend hypervisor specific,"},{"line_number":35,"context_line":"and not well defined. This should be considered a debug interface"},{"line_number":36,"context_line":"only, and not relied upon by programmatic tools."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"**Example Server diagnostics**"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":14,"id":"da4df55a_f20b22d4","line":36,"range":{"start_line":34,"start_character":0,"end_line":36,"end_character":48},"updated":"2016-12-27 20:36:34.000000000","message":"I would probably amend this to mention it\u0027s before microversion 2.41.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Response"},{"line_number":32,"context_line":"--------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"The response format for diagnostics is backend hypervisor specific,"},{"line_number":35,"context_line":"and not well defined. This should be considered a debug interface"},{"line_number":36,"context_line":"only, and not relied upon by programmatic tools."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"**Example Server diagnostics**"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":14,"id":"ba5201f7_413915d8","line":36,"range":{"start_line":34,"start_character":0,"end_line":36,"end_character":48},"in_reply_to":"da4df55a_f20b22d4","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":44,"context_line":".. literalinclude:: ../../doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json"},{"line_number":45,"context_line":"   :language: javascript"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"**Standardized response**"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Starting from **microversion 2.41** diagnostics response is standardized."},{"line_number":50,"context_line":"Diagnostic information from all virt drivers has the same format. All response"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"da4df55a_d22d3e47","line":47,"updated":"2016-12-27 20:36:34.000000000","message":"I\u0027m wondering if this should be formatted as a title, e.g.:\n\nStandardized Response\n~~~~~~~~~~~~~~~~~~~~~\n\nBecause when you look at how this is rendered:\n\nhttp://docs-draft.openstack.org/40/355540/14/check/gate-nova-api-ref/9cbcc0d//api-ref/build/html/?expanded\u003dshow-server-diagnostics-detail#show-server-diagnostics\n\nIt\u0027s a bit easy to miss.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":44,"context_line":".. literalinclude:: ../../doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json"},{"line_number":45,"context_line":"   :language: javascript"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"**Standardized response**"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Starting from **microversion 2.41** diagnostics response is standardized."},{"line_number":50,"context_line":"Diagnostic information from all virt drivers has the same format. All response"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"ba5201f7_c12fc5a5","line":47,"in_reply_to":"da4df55a_d22d3e47","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"99c70efea476840c2492488c1423aafe1f713281","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  - num_disks: num_disks_diagnostics"},{"line_number":65,"context_line":"  - num_nics: num_nics_diagnostics"},{"line_number":66,"context_line":"  - memory_details: memory_details_diagnostics"},{"line_number":67,"context_line":"  - cpu_details: cpu_details_diagnostics"},{"line_number":68,"context_line":"  - disk_details: disk_details_diagnostics"},{"line_number":69,"context_line":"  - nic_details: nic_details_diagnostics"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":20,"id":"7a3c09a3_a77f6dde","line":67,"updated":"2017-01-18 02:11:46.000000000","message":"we can describe each sub-item by:\n\n\"cpu_details.id\", \"cpu_details.time\"","commit_id":"ca9d412a0bc6c1652b9840796c6370dbbf521da2"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"f6cc9a55373a9d021a29b49d35fded1a9531f436","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  - num_disks: num_disks_diagnostics"},{"line_number":65,"context_line":"  - num_nics: num_nics_diagnostics"},{"line_number":66,"context_line":"  - memory_details: memory_details_diagnostics"},{"line_number":67,"context_line":"  - cpu_details: cpu_details_diagnostics"},{"line_number":68,"context_line":"  - disk_details: disk_details_diagnostics"},{"line_number":69,"context_line":"  - nic_details: nic_details_diagnostics"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":20,"id":"5a3905b3_caf4a65c","line":67,"in_reply_to":"7a3c09a3_a77f6dde","updated":"2017-01-23 09:52:55.000000000","message":"I think it may confuse users. Some of them may think that \"cpu_details.time\" is a whole filed name, rather than field and subfield. Also in this case it is not quite obvious that cpu_details is a **list** with dictionaries. \"cpu_details.time\" looks like dict with fields:\n\n { \"cpu_details\": { \"time\": 0, .... \n\nAlso in this case we should describe both \"cpu_details\" and \"cpu_details.time\" fields. In the table these fields will be in one column, like:\n\n | driver            | bla bla |\n | cpu_details       | bla bla |\n | cpu_details.time\" | bla bla |\n\nAgain it looks like both \"cpu_details\" and \"cpu_details.time\" are in one level in response dictionary:\n\n{ \"driver\", \"bla bla\",\n  \"cpu_details\": \"bla bla\",\n  \"cpu_details.time\": \"bla bla\"}","commit_id":"ca9d412a0bc6c1652b9840796c6370dbbf521da2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0e9fc90ca2f079a48c1fb89afb3e4445bd54a69f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Response"},{"line_number":32,"context_line":"--------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Before **microversion 2.43** the response format for diagnostics was backend"},{"line_number":35,"context_line":"hypervisor specific, and not well defined. This should be considered a debug"},{"line_number":36,"context_line":"interface only, and not relied upon by programmatic tools."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":32,"id":"fa31d9ce_e3299738","line":34,"updated":"2017-02-14 11:03:51.000000000","message":"Nit: it would be good to make this into a \"note\" block.","commit_id":"da44a8f1bdfafbe9a8b1fc513a17108a44932844"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0e9fc90ca2f079a48c1fb89afb3e4445bd54a69f","unresolved":false,"context_lines":[{"line_number":44,"context_line":".. literalinclude:: ../../doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json"},{"line_number":45,"context_line":"   :language: javascript"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Standardized response"},{"line_number":48,"context_line":"---------------------"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Starting from **microversion 2.43** diagnostics response is standardized."}],"source_content_type":"text/x-c++src","patch_set":32,"id":"fa31d9ce_c3e573dc","line":47,"updated":"2017-02-14 11:03:51.000000000","message":"This breaks the documentation pattern, we only have Request/Response in the docs.\n\nIn this case, I am tempted to put the pre 2.43 example at the very end of the response section, after a big warning note. Or maybe just not document the old version at all, and just have a warning note.","commit_id":"da44a8f1bdfafbe9a8b1fc513a17108a44932844"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c80f16d128eb5934ecd9243a8191366d66473cc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Response"},{"line_number":32,"context_line":"--------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Starting from **microversion 2.47** diagnostics response is standardized."},{"line_number":35,"context_line":"Diagnostic information from all virt drivers has the same format. The response"},{"line_number":36,"context_line":"should be considered a debug interface only, and not relied upon by"},{"line_number":37,"context_line":"programmatic tools. All response fields are listed below. If the virtual driver"},{"line_number":38,"context_line":"is unable to provide a specific field then this field will be reported as"}],"source_content_type":"text/x-c++src","patch_set":46,"id":"df140735_7efa8075","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":66},"updated":"2017-05-31 10:34:17.000000000","message":"You\u0027re saying the same thing twice here. How about (as a follow up!):\n\n  Starting from **microversion 2.47** diagnostics response is standardized\n  across all virt drivers.","commit_id":"303f30e91ddd57dd377c96fcbf1b0be26a4e16c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c80f16d128eb5934ecd9243a8191366d66473cc","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Starting from **microversion 2.47** diagnostics response is standardized."},{"line_number":35,"context_line":"Diagnostic information from all virt drivers has the same format. The response"},{"line_number":36,"context_line":"should be considered a debug interface only, and not relied upon by"},{"line_number":37,"context_line":"programmatic tools. All response fields are listed below. If the virtual driver"},{"line_number":38,"context_line":"is unable to provide a specific field then this field will be reported as"},{"line_number":39,"context_line":"\u0027None\u0027 in the response."}],"source_content_type":"text/x-c++src","patch_set":46,"id":"df140735_3ef40886","line":36,"range":{"start_line":36,"start_character":43,"end_line":36,"end_character":44},"updated":"2017-05-31 10:34:17.000000000","message":"drop this","commit_id":"303f30e91ddd57dd377c96fcbf1b0be26a4e16c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c80f16d128eb5934ecd9243a8191366d66473cc","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Starting from **microversion 2.47** diagnostics response is standardized."},{"line_number":35,"context_line":"Diagnostic information from all virt drivers has the same format. The response"},{"line_number":36,"context_line":"should be considered a debug interface only, and not relied upon by"},{"line_number":37,"context_line":"programmatic tools. All response fields are listed below. If the virtual driver"},{"line_number":38,"context_line":"is unable to provide a specific field then this field will be reported as"},{"line_number":39,"context_line":"\u0027None\u0027 in the response."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":46,"id":"df140735_be35b848","line":37,"range":{"start_line":37,"start_character":65,"end_line":37,"end_character":72},"updated":"2017-05-31 10:34:17.000000000","message":"virt","commit_id":"303f30e91ddd57dd377c96fcbf1b0be26a4e16c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c80f16d128eb5934ecd9243a8191366d66473cc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"should be considered a debug interface only, and not relied upon by"},{"line_number":37,"context_line":"programmatic tools. All response fields are listed below. If the virtual driver"},{"line_number":38,"context_line":"is unable to provide a specific field then this field will be reported as"},{"line_number":39,"context_line":"\u0027None\u0027 in the response."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":".. rest_parameters:: parameters.yaml"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":46,"id":"df140735_7e3f2025","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":6},"updated":"2017-05-31 10:34:17.000000000","message":"``None``","commit_id":"303f30e91ddd57dd377c96fcbf1b0be26a4e16c5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  - disk_details: disk_details_diagnostics"},{"line_number":54,"context_line":"  - nic_details: nic_details_diagnostics"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Example Server diagnostics**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. literalinclude:: ../../doc/api_samples/os-server-diagnostics/v2.48/server-diagnostics-get-resp.json"},{"line_number":59,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":49,"id":"df140735_b77f8d64","line":56,"updated":"2017-06-05 19:03:06.000000000","message":"nit: I\u0027d title this as:\n\nExample Server diagnostics (2.48)","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"   Before **microversion 2.48** the response format for diagnostics was not"},{"line_number":63,"context_line":"   well defined. Each hypervisor had its own format."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"**Example Old Server diagnostics**"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Below is an example of diagnostics for a libvirt based instance. The unit of the return"},{"line_number":68,"context_line":"value is hypervisor specific, but in this case the unit of vnet1_rx* and"}],"source_content_type":"text/x-c++src","patch_set":49,"id":"df140735_17ecf927","line":65,"updated":"2017-06-05 19:03:06.000000000","message":"nit: I\u0027d title this as:\n\nExample Server diagnostis (2.1)\n\nSince \"old\" is relative.","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90879c849a57c183d5100422e715f1b06e3d7636","unresolved":false,"context_lines":[{"line_number":1377,"context_line":"    - ``utilisation`` - CPU utilisation in percents (Integer)"},{"line_number":1378,"context_line":"  in: body"},{"line_number":1379,"context_line":"  required: true"},{"line_number":1380,"context_line":"  type: list"},{"line_number":1381,"context_line":"  min_version: 2.41"},{"line_number":1382,"context_line":"cpu_info:"},{"line_number":1383,"context_line":"  description: |"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"da4df55a_26748b66","line":1380,"range":{"start_line":1380,"start_character":8,"end_line":1380,"end_character":12},"updated":"2016-12-27 21:48:41.000000000","message":"I don\u0027t think this is a valid type, doesn\u0027t it need to be \"array\"?","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":1377,"context_line":"    - ``utilisation`` - CPU utilisation in percents (Integer)"},{"line_number":1378,"context_line":"  in: body"},{"line_number":1379,"context_line":"  required: true"},{"line_number":1380,"context_line":"  type: list"},{"line_number":1381,"context_line":"  min_version: 2.41"},{"line_number":1382,"context_line":"cpu_info:"},{"line_number":1383,"context_line":"  description: |"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"ba5201f7_019e2d07","line":1380,"range":{"start_line":1380,"start_character":8,"end_line":1380,"end_character":12},"in_reply_to":"da4df55a_26748b66","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":4656,"context_line":"vm_state_diagnostics:"},{"line_number":4657,"context_line":"  description: |"},{"line_number":4658,"context_line":"    A string enum denoting the current state of the VM. Possible values are"},{"line_number":4659,"context_line":"    ``pending``, ``running``, ``paused``, ``shutdown``, ``crashed``,"},{"line_number":4660,"context_line":"    ``suspended``."},{"line_number":4661,"context_line":"  in: body"},{"line_number":4662,"context_line":"  required: true"},{"line_number":4663,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"da4df55a_b267dab5","line":4660,"range":{"start_line":4659,"start_character":4,"end_line":4660,"end_character":17},"updated":"2016-12-27 20:36:34.000000000","message":"This looks just like power_state so I\u0027m not sure why we even have this in the diagnostics object in addition to power_state in the normal server GET response.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0a7470dc011ba9447da1ff42ecb1dcc766b08a69","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"  type: string"},{"line_number":1635,"context_line":"driver_diagnostics:"},{"line_number":1636,"context_line":"  description: |"},{"line_number":1637,"context_line":"    The driver on which the VM is running. Possible values are: ``libvirt``,"},{"line_number":1638,"context_line":"    ``xenapi``, ``hyperv``, ``vmwareapi``, ``ironic``."},{"line_number":1639,"context_line":"  in: body"},{"line_number":1640,"context_line":"  required: true"},{"line_number":1641,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a1ff146_873eabb6","line":1638,"range":{"start_line":1637,"start_character":43,"end_line":1638,"end_character":54},"updated":"2017-03-15 05:01:27.000000000","message":"nit:can we make it as list for better readability.","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"656ad3405e19d375bb42d48fbf710dd50ac7f7ad","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"  type: string"},{"line_number":1635,"context_line":"driver_diagnostics:"},{"line_number":1636,"context_line":"  description: |"},{"line_number":1637,"context_line":"    The driver on which the VM is running. Possible values are: ``libvirt``,"},{"line_number":1638,"context_line":"    ``xenapi``, ``hyperv``, ``vmwareapi``, ``ironic``."},{"line_number":1639,"context_line":"  in: body"},{"line_number":1640,"context_line":"  required: true"},{"line_number":1641,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a1ff146_ab72917a","line":1638,"range":{"start_line":1637,"start_character":43,"end_line":1638,"end_character":54},"in_reply_to":"3a1ff146_873eabb6","updated":"2017-03-15 10:10:42.000000000","message":"ok. will do!","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0a7470dc011ba9447da1ff42ecb1dcc766b08a69","unresolved":false,"context_lines":[{"line_number":4802,"context_line":"vm_state_diagnostics:"},{"line_number":4803,"context_line":"  description: |"},{"line_number":4804,"context_line":"    A string enum denoting the current state of the VM. Possible values are"},{"line_number":4805,"context_line":"    ``pending``, ``running``, ``paused``, ``shutdown``, ``crashed``,"},{"line_number":4806,"context_line":"    ``suspended``."},{"line_number":4807,"context_line":"  in: body"},{"line_number":4808,"context_line":"  required: true"},{"line_number":4809,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a1ff146_27a5f703","line":4806,"range":{"start_line":4805,"start_character":4,"end_line":4806,"end_character":18},"updated":"2017-03-15 05:01:27.000000000","message":"ditto: as list","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c80f16d128eb5934ecd9243a8191366d66473cc","unresolved":false,"context_lines":[{"line_number":1827,"context_line":"    Following fields are presented in each dictionary:"},{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    - ``read_bytes`` - Disk reads in bytes (Integer)"},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"    - ``read_requests`` - Read requests (Integer)"},{"line_number":1832,"context_line":""},{"line_number":1833,"context_line":"    - ``write_bytes`` - Disk writes in bytes (Integer)"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"df140735_fe1450a2","line":1830,"updated":"2017-05-31 10:34:17.000000000","message":"nit: You don\u0027t need all this spacing","commit_id":"303f30e91ddd57dd377c96fcbf1b0be26a4e16c5"}],"doc/api_samples/os-server-diagnostics/v2.41/server-diagnostics-get-resp.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":16,"context_line":"            \"write_requests\": 488"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":"    ],"},{"line_number":19,"context_line":"    \"driver\": \"fake\","},{"line_number":20,"context_line":"    \"hypervisor\": \"fake-hypervisor\","},{"line_number":21,"context_line":"    \"hypervisor_os\": \"fake-os\","},{"line_number":22,"context_line":"    \"memory_details\": {"}],"source_content_type":"application/json","patch_set":14,"id":"da4df55a_32292a38","line":19,"updated":"2016-12-27 20:36:34.000000000","message":"It\u0027s weird to list \u0027fake\u0027 here when the api-ref for this field says:\n\n\"The driver on which the VM is running. Possible values are: libvirt, xenapi, hyperv, vmwareapi, ironic.\"\n\nCan we use real values for driver and the hypervisor* fields here?","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":16,"context_line":"            \"write_requests\": 488"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":"    ],"},{"line_number":19,"context_line":"    \"driver\": \"fake\","},{"line_number":20,"context_line":"    \"hypervisor\": \"fake-hypervisor\","},{"line_number":21,"context_line":"    \"hypervisor_os\": \"fake-os\","},{"line_number":22,"context_line":"    \"memory_details\": {"}],"source_content_type":"application/json","patch_set":14,"id":"ba5201f7_257b3a7d","line":19,"in_reply_to":"da4df55a_32292a38","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    \"driver\": \"fake\","},{"line_number":20,"context_line":"    \"hypervisor\": \"fake-hypervisor\","},{"line_number":21,"context_line":"    \"hypervisor_os\": \"fake-os\","},{"line_number":22,"context_line":"    \"memory_details\": {"},{"line_number":23,"context_line":"        \"maximum\": 524288,"},{"line_number":24,"context_line":"        \"used\": 0"},{"line_number":25,"context_line":"    },"}],"source_content_type":"application/json","patch_set":14,"id":"da4df55a_d289be27","line":22,"range":{"start_line":22,"start_character":5,"end_line":22,"end_character":19},"updated":"2016-12-27 20:36:34.000000000","message":"This is missing from the API reference parameter list.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    \"driver\": \"fake\","},{"line_number":20,"context_line":"    \"hypervisor\": \"fake-hypervisor\","},{"line_number":21,"context_line":"    \"hypervisor_os\": \"fake-os\","},{"line_number":22,"context_line":"    \"memory_details\": {"},{"line_number":23,"context_line":"        \"maximum\": 524288,"},{"line_number":24,"context_line":"        \"used\": 0"},{"line_number":25,"context_line":"    },"}],"source_content_type":"application/json","patch_set":14,"id":"ba5201f7_41011539","line":22,"range":{"start_line":22,"start_character":5,"end_line":22,"end_character":19},"in_reply_to":"da4df55a_d289be27","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":97,"context_line":"             provided for listing servers."},{"line_number":98,"context_line":"    * 2.39 - Deprecates image-metadata proxy API"},{"line_number":99,"context_line":"    * 2.40 - Adds simple tenant usage pagination support."},{"line_number":100,"context_line":"    * 2.41 - Standardise VM diagnostics info."},{"line_number":101,"context_line":"\"\"\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":14,"id":"da4df55a_92181620","line":100,"range":{"start_line":100,"start_character":13,"end_line":100,"end_character":24},"updated":"2016-12-27 20:36:34.000000000","message":"Standardize - with a z","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":97,"context_line":"             provided for listing servers."},{"line_number":98,"context_line":"    * 2.39 - Deprecates image-metadata proxy API"},{"line_number":99,"context_line":"    * 2.40 - Adds simple tenant usage pagination support."},{"line_number":100,"context_line":"    * 2.41 - Standardise VM diagnostics info."},{"line_number":101,"context_line":"\"\"\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_0bd00ec9","line":100,"range":{"start_line":100,"start_character":13,"end_line":100,"end_character":24},"in_reply_to":"da4df55a_92181620","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":562,"context_line":"  Before version 2.48, VM diagnostics response was just a \u0027blob\u0027 of data"},{"line_number":563,"context_line":"  returned by each hypervisor. From this version VM diagnostics response is"},{"line_number":564,"context_line":"  standardized. It has a set of fields which each hypervisor will try to fill."},{"line_number":565,"context_line":"  If a hypervisor driver unable to provide a specific field then this field"},{"line_number":566,"context_line":"  will be reported as \u0027None\u0027."}],"source_content_type":"text/x-rst","patch_set":49,"id":"df140735_77da1578","line":565,"range":{"start_line":565,"start_character":25,"end_line":565,"end_character":31},"updated":"2017-06-05 19:03:06.000000000","message":"is unable","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"}],"nova/api/openstack/compute/server_diagnostics.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"74cd09b84846a217a82a7b2b6e6c1e3639b346db","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    _view_builder_class \u003d server_diagnostics.ViewBuilder"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":35,"context_line":"        super(ServerDiagnosticsController, self).__init__(*args, **kwargs)"},{"line_number":36,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @extensions.expected_errors((404, 409, 501))"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_fa3aab97","line":35,"updated":"2016-12-19 08:18:59.000000000","message":"why we need to call it?","commit_id":"2fd3e4ed3da6851d41fcd4df074118ebeb0f698a"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"976febcd3eaa547f045da3e11e194e6f757874c8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    _view_builder_class \u003d server_diagnostics.ViewBuilder"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":35,"context_line":"        super(ServerDiagnosticsController, self).__init__(*args, **kwargs)"},{"line_number":36,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @extensions.expected_errors((404, 409, 501))"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_9a761705","line":35,"in_reply_to":"1a6eadb0_fa3aab97","updated":"2016-12-19 08:25:25.000000000","message":"For \u0027_view_builder\u0027 field\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/wsgi.py#L859-L860","commit_id":"2fd3e4ed3da6851d41fcd4df074118ebeb0f698a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3c97fd44ca085b0aacc1c64a4c1a804dfb78a96d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        try:"},{"line_number":46,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.42\u0027):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"                diagnostics \u003d self.compute_api.get_instance_diagnostics("},{"line_number":49,"context_line":"                    context, instance)"},{"line_number":50,"context_line":"                return self._view_builder.instance_diagnostics(diagnostics)"},{"line_number":51,"context_line":"            else:"},{"line_number":52,"context_line":"                return self.compute_api.get_diagnostics(context, instance)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a3c09a3_8e9090ee","line":49,"range":{"start_line":48,"start_character":16,"end_line":49,"end_character":38},"updated":"2017-01-13 02:37:43.000000000","message":"The previous patch change the return value from json dict to a versioned object: https://review.openstack.org/#/c/394480/12/nova/compute/manager.py\n\nWhen upgrade the system, there may have old node. We need to take care of this case.\n\nMaybe we can just raise exception when the node is old? I\u0027m not sure there is easy way to take care two cases. Due to we add/remove some fields for the diagnostic info, right?","commit_id":"6a732c33d2fbb50d7d7b45216c1991f8387c5471"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9ec74c62effcf9b18db57aba3a724468be0c66d1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        try:"},{"line_number":46,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.42\u0027):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"                diagnostics \u003d self.compute_api.get_instance_diagnostics("},{"line_number":49,"context_line":"                    context, instance)"},{"line_number":50,"context_line":"                return self._view_builder.instance_diagnostics(diagnostics)"},{"line_number":51,"context_line":"            else:"},{"line_number":52,"context_line":"                return self.compute_api.get_diagnostics(context, instance)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a3c09a3_f7a0f9a7","line":49,"range":{"start_line":48,"start_character":16,"end_line":49,"end_character":38},"in_reply_to":"7a3c09a3_8e9090ee","updated":"2017-01-13 11:54:16.000000000","message":"Old compute returns a dictionary with some set of fields. In IRC we decided to include fields from this dict into response only if name of this field is presented in our new Diagnostics object","commit_id":"6a732c33d2fbb50d7d7b45216c1991f8387c5471"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c6059aaa1961d6bf0b59ea6915118c493a0a8f12","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                # handle this case we will put each field from the dictionary"},{"line_number":61,"context_line":"                # into the response only if this field is presented in new"},{"line_number":62,"context_line":"                # Diagnostics object. Values of other fields will be None."},{"line_number":63,"context_line":"                if isinstance(diagnostics, dict):"},{"line_number":64,"context_line":"                    LOG.warning(_LW(\"Compute node is too old. Diagnostics data\""},{"line_number":65,"context_line":"                                    \" of the instance may be incomplete.\"))"},{"line_number":66,"context_line":"                return self._view_builder.instance_diagnostics(diagnostics)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa31d9ce_bea338ff","line":63,"updated":"2017-02-14 11:14:06.000000000","message":"Returning a partial response seems a really bad idea.\n\nWe should be able to detect the min_service version of the compute nodes (if we bump the RPC version here), and so just not allow this API to work until the upgrade has completed.","commit_id":"da44a8f1bdfafbe9a8b1fc513a17108a44932844"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b017385033a3f8de948b18a8791e98fbdaba46e7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                # handle this case we will put each field from the dictionary"},{"line_number":61,"context_line":"                # into the response only if this field is presented in new"},{"line_number":62,"context_line":"                # Diagnostics object. Values of other fields will be None."},{"line_number":63,"context_line":"                if isinstance(diagnostics, dict):"},{"line_number":64,"context_line":"                    LOG.warning(_LW(\"Compute node is too old. Diagnostics data\""},{"line_number":65,"context_line":"                                    \" of the instance may be incomplete.\"))"},{"line_number":66,"context_line":"                return self._view_builder.instance_diagnostics(diagnostics)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa31d9ce_ffc76795","line":63,"in_reply_to":"fa31d9ce_bea338ff","updated":"2017-02-14 13:31:25.000000000","message":"ah, right, this makes us have different API response in upgrading. I missed that.","commit_id":"da44a8f1bdfafbe9a8b1fc513a17108a44932844"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c6059aaa1961d6bf0b59ea6915118c493a0a8f12","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                                    \" of the instance may be incomplete.\"))"},{"line_number":66,"context_line":"                return self._view_builder.instance_diagnostics(diagnostics)"},{"line_number":67,"context_line":"            else:"},{"line_number":68,"context_line":"                return self.compute_api.get_diagnostics(context, instance)"},{"line_number":69,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":70,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":71,"context_line":"                    \u0027get_diagnostics\u0027, server_id)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa31d9ce_9e06741b","line":68,"updated":"2017-02-14 11:14:06.000000000","message":"How do we ensure the dict vs object give us a different API response?\n\nI would like to see the samples test updated so it gets an object returned. Maybe we already do that?\n\nNit: This is a bit odd, why not call get_diagnostics outside the if statement?","commit_id":"da44a8f1bdfafbe9a8b1fc513a17108a44932844"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"fecba6ad19bf7584551ef66fdf668ffd125168ef","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                                    \" of the instance may be incomplete.\"))"},{"line_number":66,"context_line":"                return self._view_builder.instance_diagnostics(diagnostics)"},{"line_number":67,"context_line":"            else:"},{"line_number":68,"context_line":"                return self.compute_api.get_diagnostics(context, instance)"},{"line_number":69,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":70,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":71,"context_line":"                    \u0027get_diagnostics\u0027, server_id)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa31d9ce_9965aeb6","line":68,"in_reply_to":"fa31d9ce_9e06741b","updated":"2017-02-14 11:40:52.000000000","message":"Here is a nice-ish example of where we return bad request if we have not completed the upgrade:\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L587\n\ni.e. a bit like if the API version is not available on this cloud.","commit_id":"da44a8f1bdfafbe9a8b1fc513a17108a44932844"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"128f633d9e54a2912a972709246a72ff5d3b8964","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            # has new API and old compute. New compute returns a"},{"line_number":61,"context_line":"            # Diagnostics object. Old compute returns a dictionary. So we"},{"line_number":62,"context_line":"            # can\u0027t perform a request correctly if compute is too old."},{"line_number":63,"context_line":"            msg \u003d _(\u0027Compute node is too old. You must complete the \u0027"},{"line_number":64,"context_line":"                    \u0027upgrade process to be able to get a diagnostics \u0027"},{"line_number":65,"context_line":"                    \u0027data.\u0027)"},{"line_number":66,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":67,"context_line":"        except NotImplementedError:"},{"line_number":68,"context_line":"            common.raise_feature_not_supported()"}],"source_content_type":"text/x-python","patch_set":44,"id":"ff0f0b1f_32683d1b","line":65,"range":{"start_line":63,"start_character":20,"end_line":65,"end_character":27},"updated":"2017-05-24 08:00:49.000000000","message":"nit, exactly to say, you still can use the old microversion to the diagnostics. Maybe we should clear about that, with new microversion to you should waiting for upgrade finished.","commit_id":"c8b7c8b0ce74b3333ad38ed9306016c4fa94310e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"721dbc0d40a1500fe3181890cf363f113084c04c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    \u0027upgrade process to be able to get a standardized \u0027"},{"line_number":65,"context_line":"                    \u0027diagnostics data which is available since v2.47. However \u0027"},{"line_number":66,"context_line":"                    \u0027you still able to get a diagnostics data in old format \u0027"},{"line_number":67,"context_line":"                    \u0027which is available in v2.46.\u0027)"},{"line_number":68,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":69,"context_line":"        except NotImplementedError:"},{"line_number":70,"context_line":"            common.raise_feature_not_supported()"}],"source_content_type":"text/x-python","patch_set":45,"id":"df140735_0a3363ad","line":67,"range":{"start_line":67,"start_character":40,"end_line":67,"end_character":42},"updated":"2017-05-30 07:50:44.000000000","message":"s/in/till","commit_id":"eae76b1596699eca6dcf2c97dabf0d2e0499377f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c4f5460adffa65c3c991ef91539b85ed2ef7e2fa","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    \u0027upgrade process to be able to get a standardized \u0027"},{"line_number":62,"context_line":"                    \u0027diagnostics data which is available since v2.48. However \u0027"},{"line_number":63,"context_line":"                    \u0027you still able to get a diagnostics data in old format \u0027"},{"line_number":64,"context_line":"                    \u0027which is available in v2.47.\u0027)"},{"line_number":65,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":66,"context_line":"        except NotImplementedError:"},{"line_number":67,"context_line":"            common.raise_feature_not_supported()"}],"source_content_type":"text/x-python","patch_set":48,"id":"df140735_bd6782e9","line":64,"range":{"start_line":64,"start_character":40,"end_line":64,"end_character":42},"updated":"2017-06-05 07:21:33.000000000","message":"till. seems like rebase issue.","commit_id":"497c2c8071b2115eb4b73ad91fa4d86306e83dc9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            # has new API and old compute. New compute returns a"},{"line_number":58,"context_line":"            # Diagnostics object. Old compute returns a dictionary. So we"},{"line_number":59,"context_line":"            # can\u0027t perform a request correctly if compute is too old."},{"line_number":60,"context_line":"            msg \u003d _(\u0027Compute node is too old. You must complete the \u0027"},{"line_number":61,"context_line":"                    \u0027upgrade process to be able to get a standardized \u0027"},{"line_number":62,"context_line":"                    \u0027diagnostics data which is available since v2.48. However \u0027"},{"line_number":63,"context_line":"                    \u0027you still able to get a diagnostics data in old format \u0027"}],"source_content_type":"text/x-python","patch_set":49,"id":"df140735_b742ed0d","line":60,"range":{"start_line":60,"start_character":21,"end_line":60,"end_character":44},"updated":"2017-06-05 19:03:06.000000000","message":"Is this really something we want to leak out of the API?","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            msg \u003d _(\u0027Compute node is too old. You must complete the \u0027"},{"line_number":61,"context_line":"                    \u0027upgrade process to be able to get a standardized \u0027"},{"line_number":62,"context_line":"                    \u0027diagnostics data which is available since v2.48. However \u0027"},{"line_number":63,"context_line":"                    \u0027you still able to get a diagnostics data in old format \u0027"},{"line_number":64,"context_line":"                    \u0027which is available till v2.47.\u0027)"},{"line_number":65,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":66,"context_line":"        except NotImplementedError:"}],"source_content_type":"text/x-python","patch_set":49,"id":"df140735_974da93f","line":63,"range":{"start_line":63,"start_character":25,"end_line":63,"end_character":30},"updated":"2017-06-05 19:03:06.000000000","message":"are still","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            msg \u003d _(\u0027Compute node is too old. You must complete the \u0027"},{"line_number":61,"context_line":"                    \u0027upgrade process to be able to get a standardized \u0027"},{"line_number":62,"context_line":"                    \u0027diagnostics data which is available since v2.48. However \u0027"},{"line_number":63,"context_line":"                    \u0027you still able to get a diagnostics data in old format \u0027"},{"line_number":64,"context_line":"                    \u0027which is available till v2.47.\u0027)"},{"line_number":65,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":66,"context_line":"        except NotImplementedError:"}],"source_content_type":"text/x-python","patch_set":49,"id":"df140735_1763d9b3","line":63,"range":{"start_line":63,"start_character":65,"end_line":63,"end_character":68},"updated":"2017-06-05 19:03:06.000000000","message":"non-standardized","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    \u0027upgrade process to be able to get a standardized \u0027"},{"line_number":62,"context_line":"                    \u0027diagnostics data which is available since v2.48. However \u0027"},{"line_number":63,"context_line":"                    \u0027you still able to get a diagnostics data in old format \u0027"},{"line_number":64,"context_line":"                    \u0027which is available till v2.47.\u0027)"},{"line_number":65,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":66,"context_line":"        except NotImplementedError:"},{"line_number":67,"context_line":"            common.raise_feature_not_supported()"}],"source_content_type":"text/x-python","patch_set":49,"id":"df140735_b75b0df4","line":64,"range":{"start_line":64,"start_character":40,"end_line":64,"end_character":44},"updated":"2017-06-05 19:03:06.000000000","message":"until","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"}],"nova/api/openstack/compute/views/server_diagnostics.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"42a2594012ea07ca215d3214c353fe1a5551aec1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# import collections"},{"line_number":17,"context_line":"# import itertools"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova.api.openstack import common"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_866b2f85","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":18},"updated":"2016-12-19 02:34:23.000000000","message":"These comments can be removed.","commit_id":"99bd4478a2f439441239b91a48edbf02055bfd74"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"4478232e59160148e8611f6e3285384b47d6cb6c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# import collections"},{"line_number":17,"context_line":"# import itertools"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova.api.openstack import common"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_f4d64426","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":18},"in_reply_to":"1a6eadb0_866b2f85","updated":"2016-12-19 07:39:55.000000000","message":"oops","commit_id":"99bd4478a2f439441239b91a48edbf02055bfd74"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2010-2011 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"da4df55a_f2d96258","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":22},"updated":"2016-12-27 20:36:34.000000000","message":"I think we can omit these.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2010-2011 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_1cb852e5","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":22},"in_reply_to":"da4df55a_f2d96258","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        for list_field in INSTANCE_DIAGNOSTICS_LIST_FIELDS:"},{"line_number":47,"context_line":"            diagnostics_dict[list_field] \u003d []"},{"line_number":48,"context_line":"            list_obj \u003d getattr(diagnostics, list_field)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"            for obj in list_obj:"},{"line_number":51,"context_line":"                obj_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":14,"id":"da4df55a_32b76af6","line":48,"range":{"start_line":48,"start_character":23,"end_line":48,"end_character":55},"updated":"2016-12-27 20:36:34.000000000","message":"What if the attribute isn\u0027t set on the Diagnostics versioned object? Will this blow up or try to lazy-load the field?","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        for list_field in INSTANCE_DIAGNOSTICS_LIST_FIELDS:"},{"line_number":47,"context_line":"            diagnostics_dict[list_field] \u003d []"},{"line_number":48,"context_line":"            list_obj \u003d getattr(diagnostics, list_field)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"            for obj in list_obj:"},{"line_number":51,"context_line":"                obj_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_0230ec9d","line":48,"range":{"start_line":48,"start_character":23,"end_line":48,"end_character":55},"in_reply_to":"da4df55a_32b76af6","updated":"2017-01-09 16:37:07.000000000","message":"these fields are always set https://review.openstack.org/#/c/394480/8/nova/objects/diagnostics.py line #106-112","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            for obj in list_obj:"},{"line_number":51,"context_line":"                obj_dict \u003d {}"},{"line_number":52,"context_line":"                for field in INSTANCE_DIAGNOSTICS_LIST_FIELDS[list_field]:"},{"line_number":53,"context_line":"                    if obj.obj_attr_is_set(field):"},{"line_number":54,"context_line":"                        obj_dict[field] \u003d getattr(obj, field)"},{"line_number":55,"context_line":"                    else:"},{"line_number":56,"context_line":"                        obj_dict[field] \u003d None"},{"line_number":57,"context_line":"                diagnostics_dict[list_field].append(obj_dict)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        for obj_field in INSTANCE_DIAGNOSTICS_OBJECT_FIELDS:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da4df55a_92c65666","line":56,"range":{"start_line":53,"start_character":20,"end_line":56,"end_character":46},"updated":"2016-12-27 20:36:34.000000000","message":"nit: This is the same logic as L41-44 above, maybe pull into a private helper method for handling primitives?","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            for obj in list_obj:"},{"line_number":51,"context_line":"                obj_dict \u003d {}"},{"line_number":52,"context_line":"                for field in INSTANCE_DIAGNOSTICS_LIST_FIELDS[list_field]:"},{"line_number":53,"context_line":"                    if obj.obj_attr_is_set(field):"},{"line_number":54,"context_line":"                        obj_dict[field] \u003d getattr(obj, field)"},{"line_number":55,"context_line":"                    else:"},{"line_number":56,"context_line":"                        obj_dict[field] \u003d None"},{"line_number":57,"context_line":"                diagnostics_dict[list_field].append(obj_dict)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        for obj_field in INSTANCE_DIAGNOSTICS_OBJECT_FIELDS:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_c24504b4","line":56,"range":{"start_line":53,"start_character":20,"end_line":56,"end_character":46},"in_reply_to":"da4df55a_92c65666","updated":"2017-01-09 16:37:07.000000000","message":"good point","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":452,"context_line":"  Before version 2.41, VM diagnostics response was just a \u0027blob\u0027 of data"},{"line_number":453,"context_line":"  returned by each hypervisor. From this version VM diagnostics response is"},{"line_number":454,"context_line":"  standardized. It has a set of fields which each hypervisor will try to fill."},{"line_number":455,"context_line":"  If hypervisor unable to provide a specific field then this field will be"},{"line_number":456,"context_line":"  reported as \u0027None\u0027"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da4df55a_72949242","line":455,"range":{"start_line":455,"start_character":5,"end_line":455,"end_character":15},"updated":"2016-12-27 20:36:34.000000000","message":"nit: \u0027a hypervisor\u0027 or \u0027a hypervisor driver\u0027?","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":452,"context_line":"  Before version 2.41, VM diagnostics response was just a \u0027blob\u0027 of data"},{"line_number":453,"context_line":"  returned by each hypervisor. From this version VM diagnostics response is"},{"line_number":454,"context_line":"  standardized. It has a set of fields which each hypervisor will try to fill."},{"line_number":455,"context_line":"  If hypervisor unable to provide a specific field then this field will be"},{"line_number":456,"context_line":"  reported as \u0027None\u0027"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba5201f7_fc246e61","line":455,"range":{"start_line":455,"start_character":5,"end_line":455,"end_character":15},"in_reply_to":"da4df55a_72949242","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cfaa7526642533faa2778be562a4eea283915e25","unresolved":false,"context_lines":[{"line_number":453,"context_line":"  returned by each hypervisor. From this version VM diagnostics response is"},{"line_number":454,"context_line":"  standardized. It has a set of fields which each hypervisor will try to fill."},{"line_number":455,"context_line":"  If hypervisor unable to provide a specific field then this field will be"},{"line_number":456,"context_line":"  reported as \u0027None\u0027"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da4df55a_32ae8a98","line":456,"updated":"2016-12-27 20:36:34.000000000","message":"Please end the sentence with a period.","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9bcebd7c5aa7bd92e90cd492bf71f2ac52a55082","unresolved":false,"context_lines":[{"line_number":453,"context_line":"  returned by each hypervisor. From this version VM diagnostics response is"},{"line_number":454,"context_line":"  standardized. It has a set of fields which each hypervisor will try to fill."},{"line_number":455,"context_line":"  If hypervisor unable to provide a specific field then this field will be"},{"line_number":456,"context_line":"  reported as \u0027None\u0027"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba5201f7_1c2a122d","line":456,"in_reply_to":"da4df55a_32ae8a98","updated":"2017-01-09 16:37:07.000000000","message":"Done","commit_id":"b79f4f7b979a4600628feb6282e8eb9901e24195"}],"nova/tests/unit/api/openstack/compute/test_server_diagnostics.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0a7470dc011ba9447da1ff42ecb1dcc766b08a69","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    @mock.patch.object(compute_api.API, \u0027get\u0027, fake_instance_get)"},{"line_number":58,"context_line":"    def _test_get_diagnostics(self, expected, return_value):"},{"line_number":59,"context_line":"        req \u003d self._get_request()"},{"line_number":60,"context_line":"        with test.nested("},{"line_number":61,"context_line":"                mock.patch.object(compute_api.API,"},{"line_number":62,"context_line":"                                  self.mock_diagnostics_method,"},{"line_number":63,"context_line":"                                  return_value\u003dreturn_value),"},{"line_number":64,"context_line":"                mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"},{"line_number":65,"context_line":"                                  return_value\u003dself.service_version)):"},{"line_number":66,"context_line":"            res \u003d req.get_response(self.router)"},{"line_number":67,"context_line":"        output \u003d jsonutils.loads(res.body)"}],"source_content_type":"text/x-python","patch_set":39,"id":"3a1ff146_87486b2f","line":64,"range":{"start_line":60,"start_character":0,"end_line":64,"end_character":73},"updated":"2017-03-15 05:01:27.000000000","message":"decorator much more readable.","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"656ad3405e19d375bb42d48fbf710dd50ac7f7ad","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    @mock.patch.object(compute_api.API, \u0027get\u0027, fake_instance_get)"},{"line_number":58,"context_line":"    def _test_get_diagnostics(self, expected, return_value):"},{"line_number":59,"context_line":"        req \u003d self._get_request()"},{"line_number":60,"context_line":"        with test.nested("},{"line_number":61,"context_line":"                mock.patch.object(compute_api.API,"},{"line_number":62,"context_line":"                                  self.mock_diagnostics_method,"},{"line_number":63,"context_line":"                                  return_value\u003dreturn_value),"},{"line_number":64,"context_line":"                mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"},{"line_number":65,"context_line":"                                  return_value\u003dself.service_version)):"},{"line_number":66,"context_line":"            res \u003d req.get_response(self.router)"},{"line_number":67,"context_line":"        output \u003d jsonutils.loads(res.body)"}],"source_content_type":"text/x-python","patch_set":39,"id":"3a1ff146_8bf875e7","line":64,"range":{"start_line":60,"start_character":0,"end_line":64,"end_character":73},"in_reply_to":"3a1ff146_87486b2f","updated":"2017-03-15 10:10:42.000000000","message":"yes. I agree, but unfortunately we can\u0027t use \u0027self.***\u0027 parameters in decorators :(","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f11e5c8bd73207906dcf671ee356d8b1c5fb6bf4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    @mock.patch.object(compute_api.API, \u0027get\u0027, fake_instance_get)"},{"line_number":58,"context_line":"    def _test_get_diagnostics(self, expected, return_value):"},{"line_number":59,"context_line":"        req \u003d self._get_request()"},{"line_number":60,"context_line":"        with test.nested("},{"line_number":61,"context_line":"                mock.patch.object(compute_api.API,"},{"line_number":62,"context_line":"                                  self.mock_diagnostics_method,"},{"line_number":63,"context_line":"                                  return_value\u003dreturn_value),"},{"line_number":64,"context_line":"                mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"},{"line_number":65,"context_line":"                                  return_value\u003dself.service_version)):"},{"line_number":66,"context_line":"            res \u003d req.get_response(self.router)"},{"line_number":67,"context_line":"        output \u003d jsonutils.loads(res.body)"}],"source_content_type":"text/x-python","patch_set":39,"id":"1a1ced50_8f496bd3","line":64,"range":{"start_line":60,"start_character":0,"end_line":64,"end_character":73},"in_reply_to":"3a1ff146_8bf875e7","updated":"2017-03-17 06:13:47.000000000","message":"ahh, we have different compute method here.","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0a7470dc011ba9447da1ff42ecb1dcc766b08a69","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def test_get_diagnostics_raise_conflict_on_invalid_state(self):"},{"line_number":83,"context_line":"        req \u003d self._get_request()"},{"line_number":84,"context_line":"        with test.nested("},{"line_number":85,"context_line":"                mock.patch.object("},{"line_number":86,"context_line":"                   compute_api.API, self.mock_diagnostics_method,"},{"line_number":87,"context_line":"                   side_effect\u003dexception.InstanceInvalidState(\u0027fake message\u0027)),"},{"line_number":88,"context_line":"                mock.patch.object(objects.Service, \u0027get_minimum_version\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3a1ff146_c7bb430d","line":85,"updated":"2017-03-15 05:01:27.000000000","message":"ora","commit_id":"024145c9616b813f1158cc161c851cdef09042c9"}],"releasenotes/notes/bp-keypairs-pagination-544b56bbb0167071.yaml":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"6e2d300374c8826d1a5fe2f8dea439f6a10fbebd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added microversion v2.42 which standardize VM diagnostics response."},{"line_number":4,"context_line":"    It has a set of fields which each hypervisor will try to fill."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"5a3905b3_9c5c754c","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":3},"updated":"2017-01-24 08:43:44.000000000","message":"I think the title of this file is incorrect...","commit_id":"e043502fcddba92c04531944397c10ffe0fe0512"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"8e0558af09db882221274b7e91febf228bfe1507","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added microversion v2.42 which standardize VM diagnostics response."},{"line_number":4,"context_line":"    It has a set of fields which each hypervisor will try to fill."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"5a3905b3_ff01eb05","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":3},"in_reply_to":"5a3905b3_9c5c754c","updated":"2017-01-24 08:44:45.000000000","message":"yep....","commit_id":"e043502fcddba92c04531944397c10ffe0fe0512"}],"releasenotes/notes/bp-restore-vm-diagnostics-544b56bbb0167071.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbe6ff5380da3bea152b08f6e4f3b90bcdcc12c8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added microversion v2.48 which standardize VM diagnostics response."},{"line_number":4,"context_line":"    It has a set of fields which each hypervisor will try to fill."},{"line_number":5,"context_line":"    If a hypervisor driver unable to provide a specific field then this field"},{"line_number":6,"context_line":"    will be reported as \u0027None\u0027."}],"source_content_type":"text/x-yaml","patch_set":49,"id":"df140735_576cb19a","line":5,"range":{"start_line":5,"start_character":27,"end_line":5,"end_character":33},"updated":"2017-06-05 19:03:06.000000000","message":"is unable","commit_id":"a9448389932ae010897bf5a19239588bf198ee52"}]}
