)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cbda2a1403ec9a383873e4f21569ceb19df88bae","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch introduces a new API microversion \u00272.67\u0027 which will be"},{"line_number":10,"context_line":"used to alter the responses of `GET /servers``, ``GET /servers/detail``,"},{"line_number":11,"context_line":"``GET /servers/{server_id}`` and ``GET /os-services`` when a cell is"},{"line_number":12,"context_line":"down to return minimal constructs with missing keys."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related to blueprint handling-down-cell"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3f79a3b5_1a40ef31","line":12,"updated":"2018-10-12 15:33:59.000000000","message":"I noticed this series [and microversion] doesn\u0027t include handling of \u0027nova boot\u0027 when cells are down. I\u0027m thinking of what we\u0027ve discussed at PTGs where, if a user has instances in down cell(s), we either fail \u0027nova boot\u0027 or allow it, based on a new policy setting (example \u0027disallow_server_create_when_cell_down\u0027).\n\nIs the plan to add that later in a separate microversion? Is that handling going to be part of this blueprint or a different one that hasn\u0027t been created yet?","commit_id":"56e11e251a64e61dc86baf96136ba517f1d6626b"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"457f3f144f8a4a45d26b288ffd45fa37ef715888","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch introduces a new API microversion \u00272.67\u0027 which will be"},{"line_number":10,"context_line":"used to alter the responses of `GET /servers``, ``GET /servers/detail``,"},{"line_number":11,"context_line":"``GET /servers/{server_id}`` and ``GET /os-services`` when a cell is"},{"line_number":12,"context_line":"down to return minimal constructs with missing keys."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related to blueprint handling-down-cell"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3f79a3b5_d2daef1a","line":12,"in_reply_to":"3f79a3b5_1a40ef31","updated":"2018-10-31 14:46:04.000000000","message":"\u003e I noticed this series [and microversion] doesn\u0027t include handling\n \u003e of \u0027nova boot\u0027 when cells are down. I\u0027m thinking of what we\u0027ve\n \u003e discussed at PTGs where, if a user has instances in down cell(s),\n \u003e we either fail \u0027nova boot\u0027 or allow it, based on a new policy\n \u003e setting (example \u0027disallow_server_create_when_cell_down\u0027).\n\nI didn\u0027t realize that policy checks had to have a microversion bump as well, sigh, my bad.\n\n \u003e \n \u003e Is the plan to add that later in a separate microversion? Is that\n \u003e handling going to be part of this blueprint or a different one that\n \u003e hasn\u0027t been created yet?\n\nno no its a part of this bp itself as is mentioned in the spec. I will start working on this and put it below this bump patch after I read more about the nova policy workings documentation.","commit_id":"56e11e251a64e61dc86baf96136ba517f1d6626b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d945400b0c8c7c4481637cf7afc647ba0460fe5d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch introduces a new API microversion \u00272.67\u0027 which will be"},{"line_number":10,"context_line":"used to alter the responses of `GET /servers``, ``GET /servers/detail``,"},{"line_number":11,"context_line":"``GET /servers/{server_id}`` and ``GET /os-services`` when a cell is"},{"line_number":12,"context_line":"down to return minimal constructs with missing keys."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related to blueprint handling-down-cell"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3f79a3b5_fcda4174","line":12,"in_reply_to":"3f79a3b5_d2daef1a","updated":"2018-11-02 00:32:15.000000000","message":"Understood, sorry I forgot to come back to my earlier comment more recently. I\u0027m also happy to add the policy-driven behavior to this patch as I know you\u0027ve been busy lately and I think I have an idea how to do it.","commit_id":"56e11e251a64e61dc86baf96136ba517f1d6626b"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"``GET /servers/{server_id}`` and ``GET /os-services`` when a cell is"},{"line_number":12,"context_line":"down to return minimal constructs with missing keys."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related to blueprint handling-down-cell"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id9f12532897912b39093f63e9286540d9029edeb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"3f79a3b5_f496693b","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":39},"updated":"2018-12-20 08:43:54.000000000","message":"Implements: blueprint handling-down-cell","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":11,"context_line":"``GET /servers/{server_id}`` and ``GET /os-services`` when a cell is"},{"line_number":12,"context_line":"down to return minimal constructs with missing keys."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related to blueprint handling-down-cell"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id9f12532897912b39093f63e9286540d9029edeb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"9fdfeff1_62d2e802","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":39},"in_reply_to":"3f79a3b5_f496693b","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"}],"api-guide/source/conf.py":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"59807c0b78c7780cee9adca3ea82ee9f052e888c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"repository_name \u003d \u0027openstack/nova\u0027"},{"line_number":55,"context_line":"bug_project \u003d \u0027nova\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"todo_include_todos \u003d True"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# Must set this variable to include year, month, day, hours, and minutes."},{"line_number":60,"context_line":"html_last_updated_fmt \u003d \u0027%Y-%m-%d %H:%M\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_2c866717","line":57,"updated":"2018-11-30 14:24:33.000000000","message":"@mriedem: can I remove this? was this added to just add https://review.openstack.org/#/c/591657/14/api-guide/source/server_concepts.rst@8 ?","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a362e787a2cbaf8ecd9012e567ea0d677e2d636","unresolved":false,"context_lines":[{"line_number":54,"context_line":"repository_name \u003d \u0027openstack/nova\u0027"},{"line_number":55,"context_line":"bug_project \u003d \u0027nova\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"todo_include_todos \u003d True"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# Must set this variable to include year, month, day, hours, and minutes."},{"line_number":60,"context_line":"html_last_updated_fmt \u003d \u0027%Y-%m-%d %H:%M\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_f85ee24e","line":57,"in_reply_to":"3f79a3b5_2c866717","updated":"2018-11-30 19:59:17.000000000","message":"yes","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"838d17e5e37bebb5187a6d29b2763a7c483f742e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"repository_name \u003d \u0027openstack/nova\u0027"},{"line_number":55,"context_line":"bug_project \u003d \u0027nova\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"todo_include_todos \u003d True"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# Must set this variable to include year, month, day, hours, and minutes."},{"line_number":60,"context_line":"html_last_updated_fmt \u003d \u0027%Y-%m-%d %H:%M\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_452ef88e","line":57,"in_reply_to":"3f79a3b5_f85ee24e","updated":"2018-12-03 13:57:55.000000000","message":"Done","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"}],"api-guide/source/down_cells.rst":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"1ba8f837044145de5ef5906f212316ae318dfa8b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    filters and since we know both of these values from the instance_mapping"},{"line_number":56,"context_line":"    table, they will be the only allowed filters. Hence only doing"},{"line_number":57,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"},{"line_number":58,"context_line":"    show minimalistic results for the down cell. Another filter exception"},{"line_number":59,"context_line":"    that we have is ``nova list --limit`` since we would still want to return"},{"line_number":60,"context_line":"    the exact number of results asked (from both up and down cells). Other"},{"line_number":61,"context_line":"    filters like ``nova list --deleted`` or ``nova list --host xx`` will skip"},{"line_number":62,"context_line":"    the results for the down cell depending on the"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3f79a3b5_aa40a905","line":59,"range":{"start_line":58,"start_character":49,"end_line":59,"end_character":41},"updated":"2018-12-06 02:03:09.000000000","message":"ok wait just remembered that we don\u0027t support limit, its just that we filter based on CONF.api.max_limit.\nhttps://review.openstack.org/#/c/591657/18/nova/api/openstack/compute/servers.py@121","commit_id":"88115a4af828e78f704423b2088cfff6f0650e22"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0e082df41f449fe15ec080cbc4d58a9f020a9106","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  **Edge Cases**"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  * Filters: If the user is listing servers using filters the results from the"},{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_f4ed0901","line":50,"range":{"start_line":50,"start_character":57,"end_line":50,"end_character":58},"updated":"2018-12-07 07:45:47.000000000","message":"filters,","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  **Edge Cases**"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  * Filters: If the user is listing servers using filters the results from the"},{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_1db1c92c","line":50,"range":{"start_line":50,"start_character":57,"end_line":50,"end_character":58},"in_reply_to":"3f79a3b5_f4ed0901","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"},{"line_number":54,"context_line":"    ``nova list`` uses the ``deleted\u003dFalse`` and   ``project_id\u003dtenant_id``"},{"line_number":55,"context_line":"    filters and since we know both of these values from the instance_mapping"},{"line_number":56,"context_line":"    table, they will be the only allowed filters. Hence only doing"},{"line_number":57,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_08d1902d","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":17},"updated":"2018-12-07 02:00:12.000000000","message":"Use openstack command instead of nova command.","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"},{"line_number":54,"context_line":"    ``nova list`` uses the ``deleted\u003dFalse`` and   ``project_id\u003dtenant_id``"},{"line_number":55,"context_line":"    filters and since we know both of these values from the instance_mapping"},{"line_number":56,"context_line":"    table, they will be the only allowed filters. Hence only doing"},{"line_number":57,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_5dbbc10e","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":17},"in_reply_to":"3f79a3b5_08d1902d","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0e082df41f449fe15ec080cbc4d58a9f020a9106","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"},{"line_number":54,"context_line":"    ``nova list`` uses the ``deleted\u003dFalse`` and   ``project_id\u003dtenant_id``"},{"line_number":55,"context_line":"    filters and since we know both of these values from the instance_mapping"},{"line_number":56,"context_line":"    table, they will be the only allowed filters. Hence only doing"},{"line_number":57,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"},{"line_number":58,"context_line":"    show minimalistic results for the down cell. Other filters like"},{"line_number":59,"context_line":"    ``nova list --deleted`` or ``nova list --host xx`` will skip the results"},{"line_number":60,"context_line":"    for the down cell depending on the ``instance_list_skip_down_cells``"},{"line_number":61,"context_line":"    config option. Note that the filter ``nova list --limit`` will also skip"},{"line_number":62,"context_line":"    the results from the down cell and if not specified will return 1000"},{"line_number":63,"context_line":"    records from the up cells depending on the ``CONF.api.max_limit`` config"},{"line_number":64,"context_line":"    option."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"},{"line_number":67,"context_line":"    the marker is in the down cell."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_141c4514","line":64,"range":{"start_line":54,"start_character":3,"end_line":64,"end_character":11},"updated":"2018-12-07 07:45:47.000000000","message":"Since this is API guide, should we use API representations other than CLI? or both","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"},{"line_number":54,"context_line":"    ``nova list`` uses the ``deleted\u003dFalse`` and   ``project_id\u003dtenant_id``"},{"line_number":55,"context_line":"    filters and since we know both of these values from the instance_mapping"},{"line_number":56,"context_line":"    table, they will be the only allowed filters. Hence only doing"},{"line_number":57,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"},{"line_number":58,"context_line":"    show minimalistic results for the down cell. Other filters like"},{"line_number":59,"context_line":"    ``nova list --deleted`` or ``nova list --host xx`` will skip the results"},{"line_number":60,"context_line":"    for the down cell depending on the ``instance_list_skip_down_cells``"},{"line_number":61,"context_line":"    config option. Note that the filter ``nova list --limit`` will also skip"},{"line_number":62,"context_line":"    the results from the down cell and if not specified will return 1000"},{"line_number":63,"context_line":"    records from the up cells depending on the ``CONF.api.max_limit`` config"},{"line_number":64,"context_line":"    option."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"},{"line_number":67,"context_line":"    the marker is in the down cell."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_9dc5d991","line":64,"range":{"start_line":54,"start_character":3,"end_line":64,"end_character":11},"in_reply_to":"3f79a3b5_141c4514","updated":"2018-12-07 10:07:15.000000000","message":"oh good question, I used CLI since its easier for the operators/users to understand. I don\u0027t mind either/both of them.","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":114,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":115,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":116,"context_line":"  listing the compute services from down cells would include only the"},{"line_number":117,"context_line":"  following keys for the ``nova-compute`` services whose values are taken"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_a8e17cfc","line":114,"range":{"start_line":114,"start_character":35,"end_line":114,"end_character":51},"updated":"2018-12-07 02:00:12.000000000","message":":program:`nova-compute`","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":114,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":115,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":116,"context_line":"  listing the compute services from down cells would include only the"},{"line_number":117,"context_line":"  following keys for the ``nova-compute`` services whose values are taken"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_9dd63925","line":114,"range":{"start_line":114,"start_character":35,"end_line":114,"end_character":51},"in_reply_to":"3f79a3b5_a8e17cfc","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0e082df41f449fe15ec080cbc4d58a9f020a9106","unresolved":false,"context_lines":[{"line_number":110,"context_line":"         ]"},{"line_number":111,"context_line":"     }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":114,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":115,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":116,"context_line":"  listing the compute services from down cells would include only the"},{"line_number":117,"context_line":"  following keys for the ``nova-compute`` services whose values are taken"},{"line_number":118,"context_line":"  from nova_api.host_mappings table while the other cell services will because"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_f4898928","line":115,"range":{"start_line":113,"start_character":2,"end_line":115,"end_character":75},"updated":"2018-12-07 07:45:47.000000000","message":"what about conductor?","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"         ]"},{"line_number":111,"context_line":"     }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":114,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":115,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":116,"context_line":"  listing the compute services from down cells would include only the"},{"line_number":117,"context_line":"  following keys for the ``nova-compute`` services whose values are taken"},{"line_number":118,"context_line":"  from nova_api.host_mappings table while the other cell services will because"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_fd0f2dd2","line":115,"range":{"start_line":113,"start_character":2,"end_line":115,"end_character":75},"in_reply_to":"3f79a3b5_f4898928","updated":"2018-12-07 10:07:15.000000000","message":"since we don\u0027t have any information about the cell conductor in the API table, we will not be returning any partial records for this. I can change the sentence in L118 to make this evident","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  **Edge Cases**"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  * Filters: If the user is listing servers using filters, the results from the"},{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_8110bd01","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":13},"updated":"2019-02-01 20:44:44.000000000","message":"Bold this (and Marker/Sorting/Paging below):\n\n* **Filters:** If the user...","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  **Edge Cases**"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  * Filters: If the user is listing servers using filters, the results from the"},{"line_number":51,"context_line":"    down cell will be skipped and no minimalistic construct will be provided"},{"line_number":52,"context_line":"    since there is no way of validating the filtered results from the down cell"},{"line_number":53,"context_line":"    if the value of the filter key itself is missing. Note that by default"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_3847b279","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":13},"in_reply_to":"9fdfeff1_8110bd01","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    ``project_id\u003dtenant_id`` filters and since we know both of these values"},{"line_number":56,"context_line":"    from the instance_mappings table, they will be the only allowed filters."},{"line_number":57,"context_line":"    Hence only doing ``openstack server list``, ``openstack server list"},{"line_number":58,"context_line":"    --minimal`` and ``openstack list --all-tenants`` (admin only) will show"},{"line_number":59,"context_line":"    minimalistic results for the down cell. Other filters like"},{"line_number":60,"context_line":"    ``openstack server list --deleted`` or ``openstack server list --host xx``"},{"line_number":61,"context_line":"    will skip the results for the down cells depending on the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_c13c8594","line":58,"range":{"start_line":58,"start_character":43,"end_line":58,"end_character":50},"updated":"2019-02-01 20:44:44.000000000","message":"This is --all-projects in OSC:\n\nhttps://docs.openstack.org/python-openstackclient/latest/cli/command-objects/server.html#server-list","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    ``project_id\u003dtenant_id`` filters and since we know both of these values"},{"line_number":56,"context_line":"    from the instance_mappings table, they will be the only allowed filters."},{"line_number":57,"context_line":"    Hence only doing ``openstack server list``, ``openstack server list"},{"line_number":58,"context_line":"    --minimal`` and ``openstack list --all-tenants`` (admin only) will show"},{"line_number":59,"context_line":"    minimalistic results for the down cell. Other filters like"},{"line_number":60,"context_line":"    ``openstack server list --deleted`` or ``openstack server list --host xx``"},{"line_number":61,"context_line":"    will skip the results for the down cells depending on the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_01b92d13","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":13},"updated":"2019-02-01 20:44:44.000000000","message":"This option doesn\u0027t exist in \"openstack server list\", only nova list. I know you can filter the fields returned from OSC commands, but it\u0027s probably better to just remove this from the docs.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    ``project_id\u003dtenant_id`` filters and since we know both of these values"},{"line_number":56,"context_line":"    from the instance_mappings table, they will be the only allowed filters."},{"line_number":57,"context_line":"    Hence only doing ``openstack server list``, ``openstack server list"},{"line_number":58,"context_line":"    --minimal`` and ``openstack list --all-tenants`` (admin only) will show"},{"line_number":59,"context_line":"    minimalistic results for the down cell. Other filters like"},{"line_number":60,"context_line":"    ``openstack server list --deleted`` or ``openstack server list --host xx``"},{"line_number":61,"context_line":"    will skip the results for the down cells depending on the"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_186bcef0","line":58,"range":{"start_line":58,"start_character":43,"end_line":58,"end_character":50},"in_reply_to":"9fdfeff1_c13c8594","updated":"2019-02-05 11:46:50.000000000","message":"yea --all_projects also translates to --all_tenants, so I can put that.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    minimalistic results for the down cell. Other filters like"},{"line_number":60,"context_line":"    ``openstack server list --deleted`` or ``openstack server list --host xx``"},{"line_number":61,"context_line":"    will skip the results for the down cells depending on the"},{"line_number":62,"context_line":"    ``instance_list_skip_down_cells`` config option. Note that the filter"},{"line_number":63,"context_line":"    ``openstack list --limit`` will also skip the results from the down cell"},{"line_number":64,"context_line":"    and if not specified will return 1000 (default) records from the up cells"},{"line_number":65,"context_line":"    depending on the ``CONF.api.max_limit`` config option."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_a162a1ac","line":62,"range":{"start_line":62,"start_character":6,"end_line":62,"end_character":35},"updated":"2019-02-01 20:44:44.000000000","message":"list_records_by_skipping_down_cells? If so, link to the docs:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#api.list_records_by_skipping_down_cells","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    minimalistic results for the down cell. Other filters like"},{"line_number":60,"context_line":"    ``openstack server list --deleted`` or ``openstack server list --host xx``"},{"line_number":61,"context_line":"    will skip the results for the down cells depending on the"},{"line_number":62,"context_line":"    ``instance_list_skip_down_cells`` config option. Note that the filter"},{"line_number":63,"context_line":"    ``openstack list --limit`` will also skip the results from the down cell"},{"line_number":64,"context_line":"    and if not specified will return 1000 (default) records from the up cells"},{"line_number":65,"context_line":"    depending on the ``CONF.api.max_limit`` config option."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_b348a5b2","line":62,"range":{"start_line":62,"start_character":6,"end_line":62,"end_character":35},"in_reply_to":"9fdfeff1_a162a1ac","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    ``instance_list_skip_down_cells`` config option. Note that the filter"},{"line_number":63,"context_line":"    ``openstack list --limit`` will also skip the results from the down cell"},{"line_number":64,"context_line":"    and if not specified will return 1000 (default) records from the up cells"},{"line_number":65,"context_line":"    depending on the ``CONF.api.max_limit`` config option."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"},{"line_number":68,"context_line":"    the marker is in the down cell."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_a10701ca","line":65,"range":{"start_line":65,"start_character":23,"end_line":65,"end_character":27},"updated":"2019-02-01 20:44:44.000000000","message":"\"CONF\" is code-speak, so write this out like:\n\n``[api]/max_limit``\n\nAnd link to the docs:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#api.max_limit","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    ``instance_list_skip_down_cells`` config option. Note that the filter"},{"line_number":63,"context_line":"    ``openstack list --limit`` will also skip the results from the down cell"},{"line_number":64,"context_line":"    and if not specified will return 1000 (default) records from the up cells"},{"line_number":65,"context_line":"    depending on the ``CONF.api.max_limit`` config option."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"},{"line_number":68,"context_line":"    the marker is in the down cell."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_3384b5d2","line":65,"range":{"start_line":65,"start_character":23,"end_line":65,"end_character":27},"in_reply_to":"9fdfeff1_a10701ca","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    and if not specified will return 1000 (default) records from the up cells"},{"line_number":65,"context_line":"    depending on the ``CONF.api.max_limit`` config option."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"},{"line_number":68,"context_line":"    the marker is in the down cell."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  * Sorting: We ignore the down cell just like we do for filters since there is"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_41f655d9","line":67,"range":{"start_line":67,"start_character":31,"end_line":67,"end_character":40},"updated":"2019-02-01 20:44:44.000000000","message":"Why use openstack server list above but nova list here?","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    and if not specified will return 1000 (default) records from the up cells"},{"line_number":65,"context_line":"    depending on the ``CONF.api.max_limit`` config option."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"},{"line_number":68,"context_line":"    the marker is in the down cell."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  * Sorting: We ignore the down cell just like we do for filters since there is"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_934d61c5","line":67,"range":{"start_line":67,"start_character":31,"end_line":67,"end_character":40},"in_reply_to":"9fdfeff1_41f655d9","updated":"2019-02-05 11:46:50.000000000","message":"Originally everything was in terms of novaclient until someone from the API subgroup reviewed saying I should change it to openstack client terminology, so this one got left out I guess.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    rest half of the results from A, all the results from C and ignore cell B."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  .. note:: All the edge cases that are not supported would give responses"},{"line_number":78,"context_line":"     based on the value of ``CONF.api.instance_list_skip_down_cells`` config"},{"line_number":79,"context_line":"     option. If its True we would give results from the up cells thus skipping"},{"line_number":80,"context_line":"     down cells and its False the request would fail with an API error."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_81299d37","line":78,"range":{"start_line":78,"start_character":38,"end_line":78,"end_character":67},"updated":"2019-02-01 20:44:44.000000000","message":"list_records_by_skipping_down_cells?","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    rest half of the results from A, all the results from C and ignore cell B."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  .. note:: All the edge cases that are not supported would give responses"},{"line_number":78,"context_line":"     based on the value of ``CONF.api.instance_list_skip_down_cells`` config"},{"line_number":79,"context_line":"     option. If its True we would give results from the up cells thus skipping"},{"line_number":80,"context_line":"     down cells and its False the request would fail with an API error."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_6126f96a","line":78,"range":{"start_line":78,"start_character":29,"end_line":78,"end_character":33},"updated":"2019-02-01 20:44:44.000000000","message":"same as above","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    rest half of the results from A, all the results from C and ignore cell B."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  .. note:: All the edge cases that are not supported would give responses"},{"line_number":78,"context_line":"     based on the value of ``CONF.api.instance_list_skip_down_cells`` config"},{"line_number":79,"context_line":"     option. If its True we would give results from the up cells thus skipping"},{"line_number":80,"context_line":"     down cells and its False the request would fail with an API error."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_d36e892d","line":78,"range":{"start_line":78,"start_character":38,"end_line":78,"end_character":67},"in_reply_to":"9fdfeff1_81299d37","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                       \"swap\": 0,"},{"line_number":111,"context_line":"                       \"vcpus\": 1"},{"line_number":112,"context_line":"                   },"},{"line_number":113,"context_line":"                   \"OS-EXT-AZ:availability_zone\": \"nova\","},{"line_number":114,"context_line":"                   \"OS-EXT-STS:power_state\": 1,"},{"line_number":115,"context_line":"               }"},{"line_number":116,"context_line":"         ]"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_819afd5e","line":113,"range":{"start_line":113,"start_character":51,"end_line":113,"end_character":55},"updated":"2019-02-01 20:44:44.000000000","message":"This is likely also a mistake, or not really something we should include as an example value, because the AZ would come from the RequestSpec if (1) the user specified one and if they specify one it shouldn\u0027t be \"nova\" [1] or (2) it\u0027s coming from the \"default_schedule_zone\" config option if an AZ isn\u0027t specified by the user.\n\nIf the user doesn\u0027t specify an AZ and default_schedule_zone isn\u0027t configured, then the instance is free to move between zones, and we could be reporting the wrong zone. So it seems we should only show:\n\n1. The specific AZ from the request spec if it\u0027s not None (so the user requested it or the default_schedule_zone put it there and the instance is restricted to that zone), or\n\n2. \"UNKNOWN\" because we don\u0027t know what zone the instance is in and shouldn\u0027t guess but should probably not return \"\" either.\n\n[1] https://docs.openstack.org/nova/latest/user/aggregates.html#availability-zones-azs","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                       \"swap\": 0,"},{"line_number":111,"context_line":"                       \"vcpus\": 1"},{"line_number":112,"context_line":"                   },"},{"line_number":113,"context_line":"                   \"OS-EXT-AZ:availability_zone\": \"nova\","},{"line_number":114,"context_line":"                   \"OS-EXT-STS:power_state\": 1,"},{"line_number":115,"context_line":"               }"},{"line_number":116,"context_line":"         ]"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_53c059e1","line":113,"range":{"start_line":113,"start_character":51,"end_line":113,"end_character":55},"in_reply_to":"9fdfeff1_819afd5e","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c4b6bffdca042899c4cda3d57cbe31b459b996","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                       \"vcpus\": 1"},{"line_number":112,"context_line":"                   },"},{"line_number":113,"context_line":"                   \"OS-EXT-AZ:availability_zone\": \"nova\","},{"line_number":114,"context_line":"                   \"OS-EXT-STS:power_state\": 1,"},{"line_number":115,"context_line":"               }"},{"line_number":116,"context_line":"         ]"},{"line_number":117,"context_line":"     }"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_a1be21d2","line":114,"range":{"start_line":114,"start_character":19,"end_line":114,"end_character":47},"updated":"2019-02-01 20:44:44.000000000","message":"This must be a mistake - how would we determine the power state from the API DB?","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                       \"vcpus\": 1"},{"line_number":112,"context_line":"                   },"},{"line_number":113,"context_line":"                   \"OS-EXT-AZ:availability_zone\": \"nova\","},{"line_number":114,"context_line":"                   \"OS-EXT-STS:power_state\": 1,"},{"line_number":115,"context_line":"               }"},{"line_number":116,"context_line":"         ]"},{"line_number":117,"context_line":"     }"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_d378c9c4","line":114,"range":{"start_line":114,"start_character":19,"end_line":114,"end_character":47},"in_reply_to":"9fdfeff1_a1be21d2","updated":"2019-02-05 11:46:50.000000000","message":"sorry its supposed to be \"0\" which means NOSTATE as we agreed in the spec: https://review.openstack.org/#/c/557369/7/specs/rocky/approved/handling-down-cell.rst@104","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"api-guide/source/server_concepts.rst":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"000c15f48bf2189ffd9e7e89e74b6788d35d7271","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  nova_api.instance_mappings table:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  Response::"},{"line_number":42,"context_line":"  "},{"line_number":43,"context_line":"  {"},{"line_number":44,"context_line":"      \"servers\": ["},{"line_number":45,"context_line":"            {"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3f79a3b5_6f79ca7f","line":42,"updated":"2018-11-29 13:49:26.000000000","message":"make it go away","commit_id":"d3f0f8de29df04e0a51a2a10bd24a2365dc53650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":".. _handling-down-cells:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Handling Down Cells"},{"line_number":11,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting from microversion 2.68 if there are transient conditions in deployment"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_78889224","line":10,"updated":"2018-11-30 19:52:58.000000000","message":"I definitely wouldn\u0027t make this the first thing a user sees in this doc. Let\u0027s throw this into a subdocument (api-guide/source/down-cells.rst) and then just add a sub-section in this doc that links to it.","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":".. _handling-down-cells:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Handling Down Cells"},{"line_number":11,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting from microversion 2.68 if there are transient conditions in deployment"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_0ecfb5b6","line":10,"in_reply_to":"3f79a3b5_78889224","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"b6626e3fd2a1c08611040a432e9585cc648853be","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"},{"line_number":64,"context_line":"    show minimalistic results for the down cell. Other filters like"},{"line_number":65,"context_line":"    ``nova list --deleted`` or ``nova list --host xx`` will skip the results"},{"line_number":66,"context_line":"    for the down cell depending on the ``instance_list_skip_down_cells`` config"},{"line_number":67,"context_line":"    option."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_c6480463","line":66,"updated":"2018-11-29 16:45:05.000000000","message":"remembered this while writing tests limits since we support that too: ``nova list --limit`` is a valid one for down cells.","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    ``nova list``, ``nova list --minimal`` and ``nova list --all-tenants`` will"},{"line_number":64,"context_line":"    show minimalistic results for the down cell. Other filters like"},{"line_number":65,"context_line":"    ``nova list --deleted`` or ``nova list --host xx`` will skip the results"},{"line_number":66,"context_line":"    for the down cell depending on the ``instance_list_skip_down_cells`` config"},{"line_number":67,"context_line":"    option."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"  * Marker: If the user does ``nova list --marker`` it will fail with a 500 if"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_0e5c9519","line":66,"in_reply_to":"3f79a3b5_c6480463","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"a104e4ecb7afb31126de97d28e534e23735a8b8b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"         ]"},{"line_number":114,"context_line":"     }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":117,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":118,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":119,"context_line":"  listing the compute services from down cells would include only the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_6fe54aa3","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":42},"updated":"2018-11-29 14:16:41.000000000","message":"not exactly server_concepts. maybe this should be moved to the admin docs","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":113,"context_line":"         ]"},{"line_number":114,"context_line":"     }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":117,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":118,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":119,"context_line":"  listing the compute services from down cells would include only the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_b894ea36","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":42},"in_reply_to":"3f79a3b5_6fe54aa3","updated":"2018-11-30 19:52:58.000000000","message":"If this lives in a dedicated doc (see above) then I think it\u0027s OK to talk about things specific to a server in a down cell.","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":113,"context_line":"         ]"},{"line_number":114,"context_line":"     }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* List Compute Services (GET /os-services): This operation may give partial"},{"line_number":117,"context_line":"  constructs for the services with ``nova-compute`` as their binary from the"},{"line_number":118,"context_line":"  non-responsive portion of the infrastructure. So a typical response while"},{"line_number":119,"context_line":"  listing the compute services from down cells would include only the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_2e6711ef","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":42},"in_reply_to":"3f79a3b5_b894ea36","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":209,"context_line":"   memory and vCPUs become available to create other servers."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"-  ``UNKNOWN``: The state of the server is unknown. Contact your cloud"},{"line_number":212,"context_line":"   provider."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"-  ``VERIFY_RESIZE``: System is awaiting confirmation that the server is"},{"line_number":215,"context_line":"   operational after a move or resize."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_f885820a","line":212,"updated":"2018-11-30 19:52:58.000000000","message":"We could link to the down-cell doc from this for more info.","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":209,"context_line":"   memory and vCPUs become available to create other servers."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"-  ``UNKNOWN``: The state of the server is unknown. Contact your cloud"},{"line_number":212,"context_line":"   provider."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"-  ``VERIFY_RESIZE``: System is awaiting confirmation that the server is"},{"line_number":215,"context_line":"   operational after a move or resize."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_0e66d5be","line":212,"in_reply_to":"3f79a3b5_f885820a","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":945,"context_line":"hosts. Management of the cloud and how servers are provisioned"},{"line_number":946,"context_line":"in it is the responsibility of the cloud operator."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"Recover from a failed compute host"},{"line_number":949,"context_line":"----------------------------------"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"Sometimes a compute host may fail. This is a rare occurrence, but when"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_d8852604","line":948,"updated":"2018-11-30 19:52:58.000000000","message":"This is really talking more about operations, so we could probably put a little \"Down cells\" section below this section and then just link to the sub-doc.","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":945,"context_line":"hosts. Management of the cloud and how servers are provisioned"},{"line_number":946,"context_line":"in it is the responsibility of the cloud operator."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"Recover from a failed compute host"},{"line_number":949,"context_line":"----------------------------------"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"Sometimes a compute host may fail. This is a rare occurrence, but when"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_ae956140","line":948,"in_reply_to":"3f79a3b5_d8852604","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":78,"context_line":"   memory and vCPUs become available to create other servers."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"-  ``UNKNOWN``: The state of the server is unknown. It could be because a part"},{"line_number":81,"context_line":"   of the infrastructure is temporarily down (See :ref:`handling-down-cells`"},{"line_number":82,"context_line":"   for more information). Contact your cloud provider."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"-  ``VERIFY_RESIZE``: System is awaiting confirmation that the server is"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_61e599db","line":81,"range":{"start_line":81,"start_character":46,"end_line":81,"end_character":49},"updated":"2019-02-01 21:45:26.000000000","message":"see","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"   memory and vCPUs become available to create other servers."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"-  ``UNKNOWN``: The state of the server is unknown. It could be because a part"},{"line_number":81,"context_line":"   of the infrastructure is temporarily down (See :ref:`handling-down-cells`"},{"line_number":82,"context_line":"   for more information). Contact your cloud provider."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"-  ``VERIFY_RESIZE``: System is awaiting confirmation that the server is"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_af17d945","line":81,"range":{"start_line":81,"start_character":46,"end_line":81,"end_character":49},"in_reply_to":"9fdfeff1_61e599db","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":850,"context_line":"be safe. A user is not normally aware of compute hosts but is adversely"},{"line_number":851,"context_line":"affected by their failure."},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"Handling infrastructure failures"},{"line_number":854,"context_line":"--------------------------------"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"Sometimes one or more cells may go down. This is a rare occurrence, but when"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_81019d6c","line":853,"range":{"start_line":853,"start_character":0,"end_line":853,"end_character":32},"updated":"2019-02-01 21:45:26.000000000","message":"This doesn\u0027t really fit in the \"Moving servers\" section since you can\u0027t currently do anything with servers in a down cell, especially migrate them.\n\nHonestly I\u0027m not sure if we need this section in the server concepts doc since you already have a reference from the UNKNOWN status above and that\u0027s probably good enough. Otherwise this sounds like something that belongs in the admin guide:\n\nhttps://docs.openstack.org/nova/latest/admin/system-admin.html","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":850,"context_line":"be safe. A user is not normally aware of compute hosts but is adversely"},{"line_number":851,"context_line":"affected by their failure."},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"Handling infrastructure failures"},{"line_number":854,"context_line":"--------------------------------"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"Sometimes one or more cells may go down. This is a rare occurrence, but when"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_0f07051b","line":853,"range":{"start_line":853,"start_character":0,"end_line":853,"end_character":32},"in_reply_to":"9fdfeff1_81019d6c","updated":"2019-02-05 11:46:50.000000000","message":"cool, I can remove this section then.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"api-ref/source/os-services.inc":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"88d0291afe9040a9306600d9a3ec4b2a78160975","unresolved":false,"context_lines":[{"line_number":55,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.11/services-list-get-resp.json"},{"line_number":56,"context_line":"   :language: javascript"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. note:: Starting with microversion 2.66 if a cell is not responding, the"},{"line_number":59,"context_line":"  response body for those compute services in the down cells may contain"},{"line_number":60,"context_line":"  missing keys if the binary is \u0027nova-compute\u0027."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_5a0b1823","line":58,"range":{"start_line":58,"start_character":45,"end_line":58,"end_character":69},"updated":"2018-08-21 14:13:52.000000000","message":"I would like to avoid saying \"cell\" here, but am less concerned about it here than instances. See my next comment.","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"5f7a4252390787f6229402f4be498ae00820b708","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"**Example List Compute Services (2.66)**"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.66/services-list-get-resp.json"},{"line_number":65,"context_line":"   :language: javascript"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Disable Scheduling For A Compute Service"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_b19bdc70","line":64,"range":{"start_line":64,"start_character":53,"end_line":64,"end_character":87},"updated":"2018-08-28 03:28:58.000000000","message":"We need add this file, tpl file and related functional test in this patch","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8008c3221277458b99491abf9f2e2a4ceb6856f0","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"**Example List Compute Services (2.66)**"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.66/services-list-get-resp.json"},{"line_number":65,"context_line":"   :language: javascript"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Disable Scheduling For A Compute Service"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_53d70250","line":64,"range":{"start_line":64,"start_character":53,"end_line":64,"end_character":87},"in_reply_to":"3f79a3b5_b19bdc70","updated":"2018-09-20 16:09:13.000000000","message":"yes, its a WIP","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"807a95304fc03953edd000aa05b9bf28d42bbdec","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Compute Services (2.67)**"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.67/services-list-get-resp.json"},{"line_number":66,"context_line":"   :language: javascript"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Disable Scheduling For A Compute Service"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"3f79a3b5_ffb56cd0","line":65,"updated":"2018-10-31 21:24:52.000000000","message":"This is missing.","commit_id":"56e11e251a64e61dc86baf96136ba517f1d6626b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbb34398f5fc3cc75e1d277cbda707bba15d9236","unresolved":false,"context_lines":[{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   may contain missing keys."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":10,"id":"3f79a3b5_22df4b68","line":61,"range":{"start_line":61,"start_character":3,"end_line":61,"end_character":22},"updated":"2018-10-31 22:04:15.000000000","message":"Here and elsewhere, \"may contain missing\" is an oxymoron. Maybe instead, say \"will be missing keys\" and then link to some API guide doc on down-cell handling when listing services, i.e. what gets returned (only compute services) and which fields (only host and binary).","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"06874c0ebfc7a4ec82de0ef84f47301d52610438","unresolved":false,"context_lines":[{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   may contain missing keys."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":10,"id":"3f79a3b5_35b99516","line":61,"range":{"start_line":61,"start_character":3,"end_line":61,"end_character":22},"in_reply_to":"3f79a3b5_22df4b68","updated":"2018-11-19 14:17:56.000000000","message":"\u003e Here and elsewhere, \"may contain missing\" is an oxymoron. Maybe\n \u003e instead, say \"will be missing keys\" and then link to some API guide\n \u003e doc on down-cell handling when listing services, i.e. what gets\n \u003e returned (only compute services) and which fields (only host and\n \u003e binary).\n\nwhat would be a good place to add this documentation ? The only Cell related API stuff is for cellsv1 and it might be confusing to add this there. Should I just put this in the cellsv2 layout under user docs or should I create a new section under the admin docs ?","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26f5277ae376e38d1bf30db6a516947e3fe3f797","unresolved":false,"context_lines":[{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   may contain missing keys."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":10,"id":"3f79a3b5_5f55c31d","line":61,"range":{"start_line":61,"start_character":3,"end_line":61,"end_character":22},"in_reply_to":"3f79a3b5_35b99516","updated":"2018-11-27 22:18:05.000000000","message":"Well, we could add it in the FAQs section of the cells v2 docs:\n\nhttps://docs.openstack.org/nova/latest/user/cells.html#faqs\n\nBut I would likely just do that for discoverability, and put something more detailed in the admin docs:\n\nhttps://docs.openstack.org/nova/latest/admin/\n\nin the \u0027manage the cloud\u0027 or \u0027troubleshooting\u0027 sections, and/or put it in the API guide:\n\nhttps://developer.openstack.org/api-guide/compute/server_concepts.html\n\nThe latter is probably the best thing outside the API reference for user-facing documentation. The former (admin docs) would be more about what happens when a cell is down - how the API behaves, what you can do (policy rule changes? disable the cell from scheduling?), etc.","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"9937968bee0c669a708b03c50b1d59f45cc65092","unresolved":false,"context_lines":[{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   may contain missing keys."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":10,"id":"3f79a3b5_683a3d96","line":61,"range":{"start_line":61,"start_character":3,"end_line":61,"end_character":22},"in_reply_to":"3f79a3b5_5f55c31d","updated":"2018-11-28 12:35:30.000000000","message":"I am writing the documentation for this in the server_concepts.rst and we can take it from there to maybe also putting one FAQ for down cell.","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See :ref:`handling-down-cells` section of the Compute"},{"line_number":62,"context_line":"   API reference for more information on the keys that would be returned in the"},{"line_number":63,"context_line":"   partial constructs."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":16,"id":"3f79a3b5_f85d827b","line":61,"range":{"start_line":61,"start_character":25,"end_line":61,"end_character":55},"updated":"2018-11-30 19:52:58.000000000","message":"This ref won\u0027t work, the api-ref and api-guide are in differen\u0027t build paths, so you\u0027ll need to link to this directly:\n\nhttps://developer.openstack.org/api-guide/compute/down-cell.html","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"2928d39462f68bf26e41140a96be4c5cf76a5140","unresolved":false,"context_lines":[{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See :ref:`handling-down-cells` section of the Compute"},{"line_number":62,"context_line":"   API reference for more information on the keys that would be returned in the"},{"line_number":63,"context_line":"   partial constructs."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":16,"id":"3f79a3b5_8e8f45d1","line":61,"range":{"start_line":61,"start_character":25,"end_line":61,"end_character":55},"in_reply_to":"3f79a3b5_f85d827b","updated":"2018-12-03 21:58:24.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See `handling down cells"},{"line_number":62,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":63,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":64,"context_line":"   would be returned in the partial constructs."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Compute Services (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_4887880b","line":63,"range":{"start_line":63,"start_character":30,"end_line":63,"end_character":39},"updated":"2018-12-07 02:00:12.000000000","message":"guide","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See `handling down cells"},{"line_number":62,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":63,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":64,"context_line":"   would be returned in the partial constructs."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Compute Services (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_5d8ae11d","line":63,"range":{"start_line":63,"start_character":30,"end_line":63,"end_character":39},"in_reply_to":"3f79a3b5_4887880b","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See `handling down cells"},{"line_number":62,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":63,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":64,"context_line":"   would be returned in the partial constructs."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":23,"id":"3f79a3b5_b4ca3141","line":62,"range":{"start_line":62,"start_character":4,"end_line":62,"end_character":8},"updated":"2018-12-20 08:43:54.000000000","message":"https","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See `handling down cells"},{"line_number":62,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":63,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":64,"context_line":"   would be returned in the partial constructs."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":23,"id":"9fdfeff1_02e43ce0","line":62,"range":{"start_line":62,"start_character":4,"end_line":62,"end_character":8},"in_reply_to":"3f79a3b5_b4ca3141","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":55,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.11/services-list-get-resp.json"},{"line_number":56,"context_line":"   :language: javascript"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_e1742900","line":58,"updated":"2019-02-01 21:45:26.000000000","message":"nit: this could get lost between the example responses:\n\nhttp://logs.openstack.org/57/591657/28/check/build-openstack-api-ref/19834af/html/?expanded\u003dlist-compute-services-detail\n\nI would move this to after L22 in the description.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":55,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.11/services-list-get-resp.json"},{"line_number":56,"context_line":"   :language: javascript"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. note:: Starting with microversion 2.68 if service details cannot be loaded"},{"line_number":59,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":60,"context_line":"   the response body for those unavailable compute services in the down cells"},{"line_number":61,"context_line":"   will be missing keys. See `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_4f93cd01","line":58,"in_reply_to":"9fdfeff1_e1742900","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"This is a sample resonse for the services from the non-responsive part of the"},{"line_number":69,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":70,"context_line":"without any missing keys."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_c167a54c","line":68,"range":{"start_line":68,"start_character":17,"end_line":68,"end_character":24},"updated":"2019-02-01 21:45:26.000000000","message":"response","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"This is a sample resonse for the services from the non-responsive part of the"},{"line_number":69,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":70,"context_line":"without any missing keys."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_6f98111b","line":68,"range":{"start_line":68,"start_character":17,"end_line":68,"end_character":24},"in_reply_to":"9fdfeff1_c167a54c","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c3c0ae68806c8a3c509c13be95dec053ca1f16da","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Compute Services (2.68)**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"This is a sample resonse for the services from the non-responsive part of the"},{"line_number":69,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":70,"context_line":"without any missing keys."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.68/services-list-get-resp.json"},{"line_number":73,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_d685645b","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":25},"updated":"2019-01-30 03:28:12.000000000","message":"++","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"**Example List Compute Services (2.69)**"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"This is a sample response for the services from the non-responsive part of the"},{"line_number":61,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":62,"context_line":"without any missing keys."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_3d24e8ae","line":60,"range":{"start_line":60,"start_character":52,"end_line":60,"end_character":66},"updated":"2019-02-12 22:07:18.000000000","message":"nit: it would be good to link to https://review.openstack.org/#/c/635147/9/api-guide/source/down_cells.rst. Could do that in a follow up.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"**Example List Compute Services (2.69)**"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"This is a sample response for the services from the non-responsive part of the"},{"line_number":61,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":62,"context_line":"without any missing keys."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_e4a4844d","line":60,"range":{"start_line":60,"start_character":52,"end_line":60,"end_character":66},"in_reply_to":"9fdfeff1_3d24e8ae","updated":"2019-02-13 11:48:20.000000000","message":"it is already added here: https://review.openstack.org/#/c/635147/9/api-ref/source/os-services.inc@27 right at the top of the List Compute Services section. I think it would get a bit redundant if I add it again here.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":58,"context_line":"**Example List Compute Services (2.69)**"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"This is a sample response for the services from the non-responsive part of the"},{"line_number":61,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":62,"context_line":"without any missing keys."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.69/services-list-get-resp.json"},{"line_number":65,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_5d4e8c6f","line":62,"range":{"start_line":61,"start_character":12,"end_line":62,"end_character":25},"updated":"2019-02-12 22:07:18.000000000","message":"nit: the sample would be more useful if it included at least one service from an up cell and one from a down cell to spot the differences, but if you link to the guide in a follow up then we could just change the static sample in the guide which is maybe easier than doing it in the functional API samples tests.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"**Example List Compute Services (2.69)**"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"This is a sample response for the services from the non-responsive part of the"},{"line_number":61,"context_line":"deployment. The responses for the available service records will be normal"},{"line_number":62,"context_line":"without any missing keys."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. literalinclude:: ../../doc/api_samples/os-services/v2.69/services-list-get-resp.json"},{"line_number":65,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_8ae9ff1a","line":62,"range":{"start_line":61,"start_character":12,"end_line":62,"end_character":25},"in_reply_to":"9fdfeff1_5d4e8c6f","updated":"2019-02-13 11:48:20.000000000","message":"I have changed the down_cells.rst to make the response include one from down cell and one from up cell. Since its linked to the beginning of the List Compute Services it should be fine ? If you want me to link it again here let me know.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"}],"api-ref/source/servers.inc":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"feb73fb194304aa171b60cb7ae3b0770095d1b83","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"**Example List Servers (2.66)**"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.66/servers-list-resp.json"},{"line_number":256,"context_line":"   :language: javascript"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":2,"id":"3f79a3b5_5b6b65f0","line":255,"updated":"2018-08-17 08:42:59.000000000","message":"needs to be added, once I squash all the API changes into one.","commit_id":"28d473402f6627f9cd1390f8a4d9d11b0549b913"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"88d0291afe9040a9306600d9a3ec4b2a78160975","unresolved":false,"context_lines":[{"line_number":247,"context_line":".. literalinclude:: ../../doc/api_samples/servers/servers-list-resp.json"},{"line_number":248,"context_line":"   :language: javascript"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":".. note:: Starting with microversion 2.66 if a cell is not responding, the"},{"line_number":251,"context_line":"  response body for those servers in the down cells may contain missing keys."},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"**Example List Servers (2.66)**"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_ba534ce2","line":250,"range":{"start_line":250,"start_character":42,"end_line":250,"end_character":69},"updated":"2018-08-21 14:13:52.000000000","message":"I feel rather strongly that we should not say this, but instead be more generic about it. Something like:\n\n in the case of an infrastructure failure \n\nor even\n\n if server details cannot be loaded due to a transient condition in the deployment\n\nNot only do I want to avoid leaking cell-ness out of the API, I also would want to protect the future\u0027s ability to return shell instances for reasons other than just cell failure.","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"5b6373af69e81ea40b347021cbcf0d3603df22da","unresolved":false,"context_lines":[{"line_number":247,"context_line":".. literalinclude:: ../../doc/api_samples/servers/servers-list-resp.json"},{"line_number":248,"context_line":"   :language: javascript"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":".. note:: Starting with microversion 2.66 if a cell is not responding, the"},{"line_number":251,"context_line":"  response body for those servers in the down cells may contain missing keys."},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"**Example List Servers (2.66)**"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_000f72e1","line":250,"range":{"start_line":250,"start_character":42,"end_line":250,"end_character":69},"in_reply_to":"3f79a3b5_ba534ce2","updated":"2018-08-21 14:52:53.000000000","message":"\u003e I feel rather strongly that we should not say this, but instead be\n \u003e more generic about it. Something like:\n \u003e \n \u003e in the case of an infrastructure failure\n \u003e \n \u003e or even\n \u003e \n \u003e if server details cannot be loaded due to a transient condition in\n \u003e the deployment\n \u003e \n \u003e Not only do I want to avoid leaking cell-ness out of the API, I\n \u003e also would want to protect the future\u0027s ability to return shell\n \u003e instances for reasons other than just cell failure.\n\nI agree with you, looks like I was too narrow-straight-forward. Will make it more generic and broader rather than just cell-failure everywhere.","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"5f7a4252390787f6229402f4be498ae00820b708","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"**Example List Servers (2.66)**"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.66/servers-list-resp.json"},{"line_number":256,"context_line":"   :language: javascript"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_718b041e","line":255,"range":{"start_line":255,"start_character":50,"end_line":255,"end_character":78},"updated":"2018-08-28 03:28:58.000000000","message":"ditto","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8008c3221277458b99491abf9f2e2a4ceb6856f0","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"**Example List Servers (2.66)**"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.66/servers-list-resp.json"},{"line_number":256,"context_line":"   :language: javascript"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_93a91a90","line":255,"range":{"start_line":255,"start_character":50,"end_line":255,"end_character":78},"in_reply_to":"3f79a3b5_718b041e","updated":"2018-09-20 16:09:13.000000000","message":"WIP","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"5f7a4252390787f6229402f4be498ae00820b708","unresolved":false,"context_lines":[{"line_number":640,"context_line":""},{"line_number":641,"context_line":"**Example List Servers Detailed (2.66)**"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.66/servers-details-resp.json"},{"line_number":644,"context_line":"   :language: javascript"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_918ee02b","line":643,"range":{"start_line":643,"start_character":50,"end_line":643,"end_character":81},"updated":"2018-08-28 03:28:58.000000000","message":"ditto","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8008c3221277458b99491abf9f2e2a4ceb6856f0","unresolved":false,"context_lines":[{"line_number":640,"context_line":""},{"line_number":641,"context_line":"**Example List Servers Detailed (2.66)**"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.66/servers-details-resp.json"},{"line_number":644,"context_line":"   :language: javascript"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_3394c643","line":643,"range":{"start_line":643,"start_character":50,"end_line":643,"end_character":81},"in_reply_to":"3f79a3b5_918ee02b","updated":"2018-09-20 16:09:13.000000000","message":"WIP","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"5f7a4252390787f6229402f4be498ae00820b708","unresolved":false,"context_lines":[{"line_number":755,"context_line":""},{"line_number":756,"context_line":"**Example Show Server Details (2.66)**"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.66/server-get-resp.json"},{"line_number":759,"context_line":"   :language: javascript"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"Update Server"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"3f79a3b5_31810cfc","line":758,"range":{"start_line":758,"start_character":50,"end_line":758,"end_character":76},"updated":"2018-08-28 03:28:58.000000000","message":"ditto","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"000c15f48bf2189ffd9e7e89e74b6788d35d7271","unresolved":false,"context_lines":[{"line_number":252,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   :ref:`handling-down-cells` section of the Compute API reference for more"},{"line_number":256,"context_line":"   information on the keys that would be returned in the partial constructs."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"**Example List Servers (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":15,"id":"3f79a3b5_8f7a2677","line":255,"range":{"start_line":255,"start_character":3,"end_line":255,"end_character":29},"updated":"2018-11-29 13:49:26.000000000","message":"ok maybe this doesn\u0027t work","commit_id":"d3f0f8de29df04e0a51a2a10bd24a2365dc53650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":252,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   :ref:`handling-down-cells` section of the Compute API reference for more"},{"line_number":256,"context_line":"   information on the keys that would be returned in the partial constructs."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"**Example List Servers (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":16,"id":"3f79a3b5_784972b7","line":255,"range":{"start_line":255,"start_character":3,"end_line":255,"end_character":29},"updated":"2018-11-30 19:52:58.000000000","message":"same here and throughout\n\nhttps://developer.openstack.org/api-guide/compute/down-cell.html","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"2928d39462f68bf26e41140a96be4c5cf76a5140","unresolved":false,"context_lines":[{"line_number":252,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   :ref:`handling-down-cells` section of the Compute API reference for more"},{"line_number":256,"context_line":"   information on the keys that would be returned in the partial constructs."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"**Example List Servers (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":16,"id":"3f79a3b5_0ef6d560","line":255,"range":{"start_line":255,"start_character":3,"end_line":255,"end_character":29},"in_reply_to":"3f79a3b5_784972b7","updated":"2018-12-03 21:58:24.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   `handling down cells"},{"line_number":256,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":257,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_688cc42c","line":257,"range":{"start_line":257,"start_character":30,"end_line":257,"end_character":39},"updated":"2018-12-07 02:00:12.000000000","message":"guide","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   `handling down cells"},{"line_number":256,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":257,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_1d69c959","line":257,"range":{"start_line":257,"start_character":30,"end_line":257,"end_character":39},"in_reply_to":"3f79a3b5_688cc42c","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":645,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":646,"context_line":"   `handling down cells"},{"line_number":647,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":648,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":649,"context_line":"   would be returned in the partial constructs."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"**Example List Servers Detailed (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_c89ab85f","line":648,"range":{"start_line":648,"start_character":30,"end_line":648,"end_character":39},"updated":"2018-12-07 02:00:12.000000000","message":"guide","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":645,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":646,"context_line":"   `handling down cells"},{"line_number":647,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":648,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":649,"context_line":"   would be returned in the partial constructs."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"**Example List Servers Detailed (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_bd87750a","line":648,"range":{"start_line":648,"start_character":30,"end_line":648,"end_character":39},"in_reply_to":"3f79a3b5_c89ab85f","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":763,"context_line":"   the response body for the unavailable server will be missing keys. See"},{"line_number":764,"context_line":"   `handling down cells"},{"line_number":765,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":766,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":767,"context_line":"   would be returned in the partial constructs."},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"**Example Show Server Details (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_e8977436","line":766,"range":{"start_line":766,"start_character":30,"end_line":766,"end_character":39},"updated":"2018-12-07 02:00:12.000000000","message":"guide","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":763,"context_line":"   the response body for the unavailable server will be missing keys. See"},{"line_number":764,"context_line":"   `handling down cells"},{"line_number":765,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":766,"context_line":"   section of the Compute API reference for more information on the keys that"},{"line_number":767,"context_line":"   would be returned in the partial constructs."},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"**Example Show Server Details (2.68)**"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"3f79a3b5_dd8cb12e","line":766,"range":{"start_line":766,"start_character":30,"end_line":766,"end_character":39},"in_reply_to":"3f79a3b5_e8977436","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   `handling down cells"},{"line_number":256,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":257,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":23,"id":"3f79a3b5_74025973","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":8},"updated":"2018-12-20 08:43:54.000000000","message":"https","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   `handling down cells"},{"line_number":256,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":257,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":23,"id":"9fdfeff1_62cd0865","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":8},"in_reply_to":"3f79a3b5_74025973","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":644,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":645,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":646,"context_line":"   `handling down cells"},{"line_number":647,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":648,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":649,"context_line":"   would be returned in the partial constructs."},{"line_number":650,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":23,"id":"3f79a3b5_14f3e5a3","line":647,"range":{"start_line":647,"start_character":4,"end_line":647,"end_character":8},"updated":"2018-12-20 08:43:54.000000000","message":"https","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":644,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":645,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":646,"context_line":"   `handling down cells"},{"line_number":647,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":648,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":649,"context_line":"   would be returned in the partial constructs."},{"line_number":650,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":23,"id":"9fdfeff1_22c3803a","line":647,"range":{"start_line":647,"start_character":4,"end_line":647,"end_character":8},"in_reply_to":"3f79a3b5_14f3e5a3","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"2527913eb6c3d8b3c211e04ef06cf45e639c0a41","unresolved":false,"context_lines":[{"line_number":257,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.68/servers-list-resp.json"},{"line_number":263,"context_line":"   :language: javascript"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Create Server"}],"source_content_type":"text/x-c++src","patch_set":25,"id":"9fdfeff1_e89b1263","line":263,"range":{"start_line":260,"start_character":0,"end_line":263,"end_character":24},"updated":"2019-01-28 06:26:35.000000000","message":"should we mention that this example is for servers in down cell? because it might be a little bit misleading that this is a normal response for 2.68, as this is what all the other example is about","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9d8ee40a6092889621b78d62aec77a87a19a7e2","unresolved":false,"context_lines":[{"line_number":257,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.68/servers-list-resp.json"},{"line_number":263,"context_line":"   :language: javascript"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Create Server"}],"source_content_type":"text/x-c++src","patch_set":25,"id":"9fdfeff1_f2df7937","line":263,"range":{"start_line":260,"start_character":0,"end_line":263,"end_character":24},"in_reply_to":"9fdfeff1_dc9ccc0f","updated":"2019-01-28 12:41:56.000000000","message":"Done","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"cba8415154c5d8cd8c23eebe523c7bc3217bdb41","unresolved":false,"context_lines":[{"line_number":257,"context_line":"   section of the Compute API guide for more information on the keys that"},{"line_number":258,"context_line":"   would be returned in the partial constructs."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.68/servers-list-resp.json"},{"line_number":263,"context_line":"   :language: javascript"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Create Server"}],"source_content_type":"text/x-c++src","patch_set":25,"id":"9fdfeff1_dc9ccc0f","line":263,"range":{"start_line":260,"start_character":0,"end_line":263,"end_character":24},"in_reply_to":"9fdfeff1_e89b1263","updated":"2019-01-28 10:09:13.000000000","message":"ok Kevin, I will add that info to make it more clear that its an example for servers in down cells.","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":249,"context_line":".. literalinclude:: ../../doc/api_samples/servers/servers-list-resp.json"},{"line_number":250,"context_line":"   :language: javascript"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_4153b56b","line":252,"updated":"2019-02-01 21:45:26.000000000","message":"same - move this into the description rather than between response examples","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":249,"context_line":".. literalinclude:: ../../doc/api_samples/servers/servers-list-resp.json"},{"line_number":250,"context_line":"   :language: javascript"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":253,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":254,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":255,"context_line":"   `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_efac0137","line":252,"in_reply_to":"9fdfeff1_4153b56b","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"This is a sample resonse for the servers from the non-responsive part of the"},{"line_number":263,"context_line":"deployment. The responses for the available server records will be normal"},{"line_number":264,"context_line":"without any missing keys."},{"line_number":265,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_e14d09c4","line":262,"range":{"start_line":262,"start_character":17,"end_line":262,"end_character":24},"updated":"2019-02-01 21:45:26.000000000","message":"response","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"**Example List Servers (2.68)**"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"This is a sample resonse for the servers from the non-responsive part of the"},{"line_number":263,"context_line":"deployment. The responses for the available server records will be normal"},{"line_number":264,"context_line":"without any missing keys."},{"line_number":265,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_8fa9b525","line":262,"range":{"start_line":262,"start_character":17,"end_line":262,"end_character":24},"in_reply_to":"9fdfeff1_e14d09c4","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":644,"context_line":".. literalinclude:: /../../doc/api_samples/servers/v2.63/servers-details-resp.json"},{"line_number":645,"context_line":"   :language: javascript"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":648,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":649,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":650,"context_line":"   `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_a1c94126","line":647,"updated":"2019-02-01 21:45:26.000000000","message":"same","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":644,"context_line":".. literalinclude:: /../../doc/api_samples/servers/v2.63/servers-details-resp.json"},{"line_number":645,"context_line":"   :language: javascript"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":".. note:: Starting with microversion 2.68 if server details cannot be loaded"},{"line_number":648,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":649,"context_line":"   the response body for those unavailable servers will be missing keys. See"},{"line_number":650,"context_line":"   `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_afa6f952","line":647,"in_reply_to":"9fdfeff1_a1c94126","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":654,"context_line":""},{"line_number":655,"context_line":"**Example List Servers Detailed (2.68)**"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"This is a sample resonse for the servers from the non-responsive part of the"},{"line_number":658,"context_line":"deployment. The responses for the available server records will be normal"},{"line_number":659,"context_line":"without any missing keys."},{"line_number":660,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_61cfd928","line":657,"range":{"start_line":657,"start_character":17,"end_line":657,"end_character":24},"updated":"2019-02-01 21:45:26.000000000","message":"response","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":654,"context_line":""},{"line_number":655,"context_line":"**Example List Servers Detailed (2.68)**"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"This is a sample resonse for the servers from the non-responsive part of the"},{"line_number":658,"context_line":"deployment. The responses for the available server records will be normal"},{"line_number":659,"context_line":"without any missing keys."},{"line_number":660,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_4f618d11","line":657,"range":{"start_line":657,"start_character":17,"end_line":657,"end_character":24},"in_reply_to":"9fdfeff1_61cfd928","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":766,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.63/server-get-resp.json"},{"line_number":767,"context_line":"   :language: javascript"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":".. note:: Starting with microversion 2.68 if the server detail cannot be loaded"},{"line_number":770,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":771,"context_line":"   the response body for the unavailable server will be missing keys. See"},{"line_number":772,"context_line":"   `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_e1e2e99f","line":769,"updated":"2019-02-01 21:45:26.000000000","message":"same","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":766,"context_line":".. literalinclude:: ../../doc/api_samples/servers/v2.63/server-get-resp.json"},{"line_number":767,"context_line":"   :language: javascript"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":".. note:: Starting with microversion 2.68 if the server detail cannot be loaded"},{"line_number":770,"context_line":"   due to a transient condition in the deployment like infrastructure failure,"},{"line_number":771,"context_line":"   the response body for the unavailable server will be missing keys. See"},{"line_number":772,"context_line":"   `handling down cells"}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_6f66d12c","line":769,"in_reply_to":"9fdfeff1_e1e2e99f","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":776,"context_line":""},{"line_number":777,"context_line":"**Example Show Server Details (2.68)**"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"This is a sample resonse for a server from the non-responsive part of the"},{"line_number":780,"context_line":"deployment. The responses for available server records will be normal"},{"line_number":781,"context_line":"without any missing keys."},{"line_number":782,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_c1f56558","line":779,"range":{"start_line":779,"start_character":17,"end_line":779,"end_character":24},"updated":"2019-02-01 21:45:26.000000000","message":"respones","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":776,"context_line":""},{"line_number":777,"context_line":"**Example Show Server Details (2.68)**"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"This is a sample resonse for a server from the non-responsive part of the"},{"line_number":780,"context_line":"deployment. The responses for available server records will be normal"},{"line_number":781,"context_line":"without any missing keys."},{"line_number":782,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":28,"id":"9fdfeff1_0f6b85f1","line":779,"range":{"start_line":779,"start_character":17,"end_line":779,"end_character":24},"in_reply_to":"9fdfeff1_c1f56558","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":144,"context_line":"  written to disk, and the virtual machine is stopped. Suspending an"},{"line_number":145,"context_line":"  instance is similar to placing a device in hibernation; memory and"},{"line_number":146,"context_line":"  vCPUs become available to create other instances."},{"line_number":147,"context_line":"- ``UNKNOWN``. The state of the server is unknown. Contact your cloud"},{"line_number":148,"context_line":"  provider."},{"line_number":149,"context_line":"- ``VERIFY_RESIZE``. System is awaiting confirmation that the server"},{"line_number":150,"context_line":"  is operational after a move or resize."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_fa22e6b8","line":148,"range":{"start_line":147,"start_character":0,"end_line":148,"end_character":11},"updated":"2019-02-12 22:07:18.000000000","message":"OK so we already include this by chance.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"  written to disk, and the virtual machine is stopped. Suspending an"},{"line_number":145,"context_line":"  instance is similar to placing a device in hibernation; memory and"},{"line_number":146,"context_line":"  vCPUs become available to create other instances."},{"line_number":147,"context_line":"- ``UNKNOWN``. The state of the server is unknown. Contact your cloud"},{"line_number":148,"context_line":"  provider."},{"line_number":149,"context_line":"- ``VERIFY_RESIZE``. System is awaiting confirmation that the server"},{"line_number":150,"context_line":"  is operational after a move or resize."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_8479f8fc","line":148,"range":{"start_line":147,"start_character":0,"end_line":148,"end_character":11},"in_reply_to":"9fdfeff1_fa22e6b8","updated":"2019-02-13 11:48:20.000000000","message":"yea and I am updating this in the next documentation patchset.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"**Example List Servers (2.69)**"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"This is a sample response for the servers from the non-responsive part of the"},{"line_number":255,"context_line":"deployment. The responses for the available server records will be normal"},{"line_number":256,"context_line":"without any missing keys."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_1da244fd","line":254,"range":{"start_line":254,"start_character":51,"end_line":254,"end_character":65},"updated":"2019-02-12 22:07:18.000000000","message":"Same nit as in os-services - we should link to the down cell guide here and below so users can go there to get more information about what this means when reading the API reference.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"**Example List Servers (2.69)**"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"This is a sample response for the servers from the non-responsive part of the"},{"line_number":255,"context_line":"deployment. The responses for the available server records will be normal"},{"line_number":256,"context_line":"without any missing keys."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":39,"id":"9fdfeff1_aad7234b","line":254,"range":{"start_line":254,"start_character":51,"end_line":254,"end_character":65},"in_reply_to":"9fdfeff1_1da244fd","updated":"2019-02-13 11:48:20.000000000","message":"Again its linked at the top portion of List Servers","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"}],"doc/api_samples/servers/v2.68/server-create-req.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"35b9cad93061dcf658474099a2f170913c62acc4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        \"name\" : \"new-server-test\","},{"line_number":6,"context_line":"        \"imageRef\" : \"70a599e0-31e7-49b7-b260-868f441e862b\","},{"line_number":7,"context_line":"        \"flavorRef\" : \"http://openstack.example.com/flavors/1\","},{"line_number":8,"context_line":"        \"availability_zone\": \"nova\","},{"line_number":9,"context_line":"        \"OS-DCF:diskConfig\": \"AUTO\","},{"line_number":10,"context_line":"        \"metadata\" : {"},{"line_number":11,"context_line":"            \"My Server Name\" : \"Apache1\""}],"source_content_type":"application/json","patch_set":28,"id":"9fdfeff1_a5ccec34","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":36},"updated":"2019-02-01 21:47:48.000000000","message":"This might be why I\u0027m confused about \u0027nova\u0027 showing in the response, but let\u0027s not perpetuate this bad example, see the warning in the docs:\n\nhttps://docs.openstack.org/nova/latest/user/aggregates.html#availability-zones-azs\n\nSo either omit this parameter from the request or specify something that\u0027s not nova, like \"london\" or an actual AZ that CERN has, like \"geneva\"?","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        \"name\" : \"new-server-test\","},{"line_number":6,"context_line":"        \"imageRef\" : \"70a599e0-31e7-49b7-b260-868f441e862b\","},{"line_number":7,"context_line":"        \"flavorRef\" : \"http://openstack.example.com/flavors/1\","},{"line_number":8,"context_line":"        \"availability_zone\": \"nova\","},{"line_number":9,"context_line":"        \"OS-DCF:diskConfig\": \"AUTO\","},{"line_number":10,"context_line":"        \"metadata\" : {"},{"line_number":11,"context_line":"            \"My Server Name\" : \"Apache1\""}],"source_content_type":"application/json","patch_set":28,"id":"9fdfeff1_af7b59bc","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":36},"in_reply_to":"9fdfeff1_a5ccec34","updated":"2019-02-05 11:46:50.000000000","message":"Done (I kind of actually copied the request from the previous examples.)","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"doc/api_samples/servers/v2.68/server-get-resp.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbb34398f5fc3cc75e1d277cbda707bba15d9236","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"server\": {"},{"line_number":3,"context_line":"        \"OS-EXT-STS:power_state\": 0,"},{"line_number":4,"context_line":"        \"created\": \"2017-02-14T19:23:58Z\","},{"line_number":5,"context_line":"        \"id\": \"9168b536-cd40-4630-b43f-b259807c6e87\","}],"source_content_type":"application/json","patch_set":10,"id":"3f79a3b5_02d00f52","line":2,"updated":"2018-10-31 22:04:15.000000000","message":"I think there is more stuff that goes in here for the flavor and image or something based on the request spec? Fill it in as needed.","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"06874c0ebfc7a4ec82de0ef84f47301d52610438","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"server\": {"},{"line_number":3,"context_line":"        \"OS-EXT-STS:power_state\": 0,"},{"line_number":4,"context_line":"        \"created\": \"2017-02-14T19:23:58Z\","},{"line_number":5,"context_line":"        \"id\": \"9168b536-cd40-4630-b43f-b259807c6e87\","}],"source_content_type":"application/json","patch_set":10,"id":"3f79a3b5_753ced90","line":2,"in_reply_to":"3f79a3b5_02d00f52","updated":"2018-11-19 14:17:56.000000000","message":"Done","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"000c15f48bf2189ffd9e7e89e74b6788d35d7271","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"server\": {"},{"line_number":3,"context_line":"        \"OS-EXT-STS:power_state\": 0,"},{"line_number":4,"context_line":"        \"created\": \"2017-02-14T19:23:58Z\","},{"line_number":5,"context_line":"        \"id\": \"9168b536-cd40-4630-b43f-b259807c6e87\","}],"source_content_type":"application/json","patch_set":10,"id":"3f79a3b5_b48895c4","line":2,"in_reply_to":"3f79a3b5_753ced90","updated":"2018-11-29 13:49:26.000000000","message":"this is being fixed with the tests.","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"}],"doc/source/user/cells.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":800,"context_line":"#. Why are the API responses for ``GET /servers``, ``GET /servers/detail``,"},{"line_number":801,"context_line":"   ``GET /servers/{server_id}`` and ``GET /os-services`` missing some"},{"line_number":802,"context_line":"   information for certain cells at certain times? Why do I see the status as"},{"line_number":803,"context_line":"   \"UNKNOWN\" for the servers in those cells at those times when I try to do a"},{"line_number":804,"context_line":"   ``nova list`` or ``nova show``?"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"   Starting from microversion 2.68 the API responses of ``GET /servers``,"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_d8bd2681","line":803,"range":{"start_line":803,"start_character":66,"end_line":803,"end_character":77},"updated":"2018-11-30 19:52:58.000000000","message":"run","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":800,"context_line":"#. Why are the API responses for ``GET /servers``, ``GET /servers/detail``,"},{"line_number":801,"context_line":"   ``GET /servers/{server_id}`` and ``GET /os-services`` missing some"},{"line_number":802,"context_line":"   information for certain cells at certain times? Why do I see the status as"},{"line_number":803,"context_line":"   \"UNKNOWN\" for the servers in those cells at those times when I try to do a"},{"line_number":804,"context_line":"   ``nova list`` or ``nova show``?"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"   Starting from microversion 2.68 the API responses of ``GET /servers``,"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_e846f07d","line":803,"range":{"start_line":803,"start_character":66,"end_line":803,"end_character":77},"in_reply_to":"3f79a3b5_d8bd2681","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":806,"context_line":"   Starting from microversion 2.68 the API responses of ``GET /servers``,"},{"line_number":807,"context_line":"   ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":808,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":809,"context_line":"   because of adding support for returning minimal constructs based on the"},{"line_number":810,"context_line":"   available information from the API database for those records in the"},{"line_number":811,"context_line":"   down cells. See the :ref:`handling-down-cells` section of the Compute API"},{"line_number":812,"context_line":"   reference for more information on the partial constructs."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_78ce522b","line":811,"range":{"start_line":809,"start_character":3,"end_line":811,"end_character":14},"updated":"2018-11-30 19:52:58.000000000","message":"This is real wordy and is probably not helpful to the answer - the answer is already stated: listing/showing resources out of down cells results in minimal constructs of those resources since the full data, from the cell database itself, is not accessible.","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":808,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":809,"context_line":"   because of adding support for returning minimal constructs based on the"},{"line_number":810,"context_line":"   available information from the API database for those records in the"},{"line_number":811,"context_line":"   down cells. See the :ref:`handling-down-cells` section of the Compute API"},{"line_number":812,"context_line":"   reference for more information on the partial constructs."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_f8eb4277","line":811,"range":{"start_line":811,"start_character":23,"end_line":811,"end_character":49},"updated":"2018-11-30 19:52:58.000000000","message":"You have to link to the full URL (same issue as api-ref).","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":806,"context_line":"   Starting from microversion 2.68 the API responses of ``GET /servers``,"},{"line_number":807,"context_line":"   ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":808,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":809,"context_line":"   because of adding support for returning minimal constructs based on the"},{"line_number":810,"context_line":"   available information from the API database for those records in the"},{"line_number":811,"context_line":"   down cells. See the :ref:`handling-down-cells` section of the Compute API"},{"line_number":812,"context_line":"   reference for more information on the partial constructs."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_68174059","line":811,"range":{"start_line":809,"start_character":3,"end_line":811,"end_character":14},"in_reply_to":"3f79a3b5_78ce522b","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"2928d39462f68bf26e41140a96be4c5cf76a5140","unresolved":false,"context_lines":[{"line_number":808,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":809,"context_line":"   because of adding support for returning minimal constructs based on the"},{"line_number":810,"context_line":"   available information from the API database for those records in the"},{"line_number":811,"context_line":"   down cells. See the :ref:`handling-down-cells` section of the Compute API"},{"line_number":812,"context_line":"   reference for more information on the partial constructs."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_ceef7d7e","line":811,"range":{"start_line":811,"start_character":23,"end_line":811,"end_character":49},"in_reply_to":"3f79a3b5_f8eb4277","updated":"2018-12-03 21:58:24.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":808,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations."},{"line_number":809,"context_line":"   See the `handling down cells"},{"line_number":810,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":811,"context_line":"   section of the Compute API reference for more information on the partial"},{"line_number":812,"context_line":"   constructs."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_28ab2c70","line":811,"range":{"start_line":811,"start_character":30,"end_line":811,"end_character":39},"updated":"2018-12-07 02:00:12.000000000","message":"guide","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":808,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations."},{"line_number":809,"context_line":"   See the `handling down cells"},{"line_number":810,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":811,"context_line":"   section of the Compute API reference for more information on the partial"},{"line_number":812,"context_line":"   constructs."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f79a3b5_5d98a165","line":811,"range":{"start_line":811,"start_character":30,"end_line":811,"end_character":39},"in_reply_to":"3f79a3b5_28ab2c70","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":813,"context_line":"   ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":814,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations."},{"line_number":815,"context_line":"   See the `handling down cells"},{"line_number":816,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":817,"context_line":"   section of the Compute API guide for more information on the partial"},{"line_number":818,"context_line":"   constructs."}],"source_content_type":"text/x-rst","patch_set":23,"id":"3f79a3b5_943b7535","line":816,"range":{"start_line":816,"start_character":4,"end_line":816,"end_character":8},"updated":"2018-12-20 08:43:54.000000000","message":"https","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":813,"context_line":"   ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":814,"context_line":"   ``GET /os-services`` may contain missing keys during down cell situations."},{"line_number":815,"context_line":"   See the `handling down cells"},{"line_number":816,"context_line":"   \u003chttp://developer.openstack.org/api-guide/compute/down_cells.html\u003e`__"},{"line_number":817,"context_line":"   section of the Compute API guide for more information on the partial"},{"line_number":818,"context_line":"   constructs."}],"source_content_type":"text/x-rst","patch_set":23,"id":"9fdfeff1_42c0042b","line":816,"range":{"start_line":816,"start_character":4,"end_line":816,"end_character":8},"in_reply_to":"3f79a3b5_943b7535","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"88d0291afe9040a9306600d9a3ec4b2a78160975","unresolved":false,"context_lines":[{"line_number":160,"context_line":"             ``preparing`` status."},{"line_number":161,"context_line":"    * 2.66 - Add support for returning minimal constructs for ``GET /servers``,"},{"line_number":162,"context_line":"             ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":163,"context_line":"             ``GET /os-services`` when a cell is down."},{"line_number":164,"context_line":"\"\"\""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_1a6e0096","line":163,"range":{"start_line":163,"start_character":34,"end_line":163,"end_character":53},"updated":"2018-08-21 14:13:52.000000000","message":"Generic here too.","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"5b6373af69e81ea40b347021cbcf0d3603df22da","unresolved":false,"context_lines":[{"line_number":160,"context_line":"             ``preparing`` status."},{"line_number":161,"context_line":"    * 2.66 - Add support for returning minimal constructs for ``GET /servers``,"},{"line_number":162,"context_line":"             ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":163,"context_line":"             ``GET /os-services`` when a cell is down."},{"line_number":164,"context_line":"\"\"\""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_40600aa6","line":163,"range":{"start_line":163,"start_character":34,"end_line":163,"end_character":53},"in_reply_to":"3f79a3b5_1a6e0096","updated":"2018-08-21 14:52:53.000000000","message":"Done","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"88d0291afe9040a9306600d9a3ec4b2a78160975","unresolved":false,"context_lines":[{"line_number":851,"context_line":"when a cell is down. Starting from this micro-version, the responses from the"},{"line_number":852,"context_line":"down cells for the above four requests may have missing key values. The"},{"line_number":853,"context_line":"response body will only have a minimal set of information obtained from the"},{"line_number":854,"context_line":"available information in the API database for that cell."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_1af360e9","line":854,"updated":"2018-08-21 14:13:52.000000000","message":"Here too. I think we should stick to the generic in things that end up being API-level docs to consumers of the API, and mention in things like release notes and operator docs that \"the conditions where this might happen are cell failure, etc\".","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"5b6373af69e81ea40b347021cbcf0d3603df22da","unresolved":false,"context_lines":[{"line_number":851,"context_line":"when a cell is down. Starting from this micro-version, the responses from the"},{"line_number":852,"context_line":"down cells for the above four requests may have missing key values. The"},{"line_number":853,"context_line":"response body will only have a minimal set of information obtained from the"},{"line_number":854,"context_line":"available information in the API database for that cell."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a04f9e32","line":854,"in_reply_to":"3f79a3b5_1af360e9","updated":"2018-08-21 14:52:53.000000000","message":"ack, will change this to make it more generic: you are right as shouldn\u0027t expose \"cells\" much to API consumers.","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c353f7bc91ad9a2dc3ebf028fa30f4c267c0dabe","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"Add support for returning minimal constructs for ``GET /servers``,"},{"line_number":850,"context_line":"``GET /servers/detail``, ``GET /servers/{server_id}`` and ``GET /os-services``"},{"line_number":851,"context_line":"when a cell is down. Starting from this micro-version, the responses from the"},{"line_number":852,"context_line":"down cells for the above four requests may have missing key values. The"},{"line_number":853,"context_line":"response body will only have a minimal set of information obtained from the"},{"line_number":854,"context_line":"available information in the API database for that cell."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_9424a70e","line":851,"range":{"start_line":851,"start_character":45,"end_line":851,"end_character":46},"updated":"2018-08-27 08:07:49.000000000","message":"no other version description uses this, so just ``microversion`` is OK","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8008c3221277458b99491abf9f2e2a4ceb6856f0","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"Add support for returning minimal constructs for ``GET /servers``,"},{"line_number":850,"context_line":"``GET /servers/detail``, ``GET /servers/{server_id}`` and ``GET /os-services``"},{"line_number":851,"context_line":"when a cell is down. Starting from this micro-version, the responses from the"},{"line_number":852,"context_line":"down cells for the above four requests may have missing key values. The"},{"line_number":853,"context_line":"response body will only have a minimal set of information obtained from the"},{"line_number":854,"context_line":"available information in the API database for that cell."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_f3996e79","line":851,"range":{"start_line":851,"start_character":45,"end_line":851,"end_character":46},"in_reply_to":"3f79a3b5_9424a70e","updated":"2018-09-20 16:09:13.000000000","message":"Done","commit_id":"55d203ccabdb3264f24eb68b2392ab9f3808ccf0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbb34398f5fc3cc75e1d277cbda707bba15d9236","unresolved":false,"context_lines":[{"line_number":868,"context_line":"``GET /servers/detail``, ``GET /servers/{server_id}`` and ``GET /os-services``"},{"line_number":869,"context_line":"when there is a transient unavailability condition in the deployment like an"},{"line_number":870,"context_line":"infrastructure failure. Starting from this microversion, the responses from the"},{"line_number":871,"context_line":"down part of the infrastructure for the above four requests may have missing"},{"line_number":872,"context_line":"key values to make it more resilient. The response body will only have a"},{"line_number":873,"context_line":"minimal set of information obtained from the available information in the API"},{"line_number":874,"context_line":"database for the down region."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_c2c9b7ab","line":871,"range":{"start_line":871,"start_character":60,"end_line":871,"end_character":63},"updated":"2018-10-31 22:04:15.000000000","message":"will have - there isn\u0027t a maybe about it if the records come from down cells.","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"06874c0ebfc7a4ec82de0ef84f47301d52610438","unresolved":false,"context_lines":[{"line_number":868,"context_line":"``GET /servers/detail``, ``GET /servers/{server_id}`` and ``GET /os-services``"},{"line_number":869,"context_line":"when there is a transient unavailability condition in the deployment like an"},{"line_number":870,"context_line":"infrastructure failure. Starting from this microversion, the responses from the"},{"line_number":871,"context_line":"down part of the infrastructure for the above four requests may have missing"},{"line_number":872,"context_line":"key values to make it more resilient. The response body will only have a"},{"line_number":873,"context_line":"minimal set of information obtained from the available information in the API"},{"line_number":874,"context_line":"database for the down region."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_5539b19f","line":871,"range":{"start_line":871,"start_character":60,"end_line":871,"end_character":63},"in_reply_to":"3f79a3b5_c2c9b7ab","updated":"2018-11-19 14:17:56.000000000","message":"Done","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fb1e2e28e6b7e572d54d54add88b52ea9dd0968","unresolved":false,"context_lines":[{"line_number":871,"context_line":"down part of the infrastructure for the above four requests will have missing"},{"line_number":872,"context_line":"key values to make it more resilient. The response body will only have a"},{"line_number":873,"context_line":"minimal set of information obtained from the available information in the API"},{"line_number":874,"context_line":"database for the down region."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_78f7325d","line":874,"range":{"start_line":874,"start_character":22,"end_line":874,"end_character":28},"updated":"2018-11-30 19:52:58.000000000","message":"cell","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"711c6a2abe571318962f743498fc920a5bd8db58","unresolved":false,"context_lines":[{"line_number":871,"context_line":"down part of the infrastructure for the above four requests will have missing"},{"line_number":872,"context_line":"key values to make it more resilient. The response body will only have a"},{"line_number":873,"context_line":"minimal set of information obtained from the available information in the API"},{"line_number":874,"context_line":"database for the down region."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_6e1f495d","line":874,"range":{"start_line":874,"start_character":22,"end_line":874,"end_character":28},"in_reply_to":"3f79a3b5_78f7325d","updated":"2018-12-03 21:41:29.000000000","message":"Done","commit_id":"3d3a6c33743d06c0d16dbfd33e35540e121a3fa4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":871,"context_line":"down part of the infrastructure for the above four requests will have missing"},{"line_number":872,"context_line":"key values to make it more resilient. The response body will only have a"},{"line_number":873,"context_line":"minimal set of information obtained from the available information in the API"},{"line_number":874,"context_line":"database for the down cells."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_a1c061e2","line":874,"updated":"2019-02-01 21:45:26.000000000","message":"nit: another place where you could link to the detailed doc in the API guide.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":871,"context_line":"down part of the infrastructure for the above four requests will have missing"},{"line_number":872,"context_line":"key values to make it more resilient. The response body will only have a"},{"line_number":873,"context_line":"minimal set of information obtained from the available information in the API"},{"line_number":874,"context_line":"database for the down cells."}],"source_content_type":"text/x-rst","patch_set":28,"id":"9fdfeff1_107cf01e","line":874,"in_reply_to":"9fdfeff1_a1c061e2","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"4941c24b5e261439e595fd41a9205b44f955876b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            # be made False and the down cells should be skipped as there is no"},{"line_number":123,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":124,"context_line":"            # situations due to missing keys/information."},{"line_number":125,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u0027True\u0027}:"},{"line_number":126,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":127,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":128,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_ee48d52c","line":125,"range":{"start_line":125,"start_character":64,"end_line":125,"end_character":68},"updated":"2018-12-07 12:51:52.000000000","message":"s/True/1 -\u003e should be 1 as per API docs","commit_id":"71a4b2910ce27163436407c911ce358719a8504e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4c330e27786309a99e6cf34485111fc340119704","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            # NOTE(tssurya): Minimal constructs would be returned from the down"},{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped as there is no"},{"line_number":123,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":124,"context_line":"            # situations due to missing keys/information."},{"line_number":125,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_1e529f12","line":122,"range":{"start_line":122,"start_character":36,"end_line":122,"end_character":64},"updated":"2018-12-13 17:01:15.000000000","message":"There a config buried deep in multi_cell_list that controls whether we skip or explode on down cells, right? Seems like if we have cell_down_support\u003dTrue, we should never honor that config, and thus always have a consistent response for the newer microversion. Did I miss where that is handled?","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"9b799bbb077e454dcf6b109c20f48e5e1222c932","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            # NOTE(tssurya): Minimal constructs would be returned from the down"},{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped as there is no"},{"line_number":123,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":124,"context_line":"            # situations due to missing keys/information."},{"line_number":125,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_39fc5573","line":122,"range":{"start_line":122,"start_character":36,"end_line":122,"end_character":64},"in_reply_to":"3f79a3b5_1e529f12","updated":"2018-12-13 17:59:37.000000000","message":"oh you are absolutely right: this exception will blow up otherwise: https://github.com/openstack/nova/blob/7fa740491e53195021036af69a0ddfde183daef5/nova/compute/multi_cell_list.py#L405, if the config option is set to False. So there are two ways to handle it:\n\n1) We either deprecate that option now from 2.68 and remove the check completely.\n2) or if cell_down_support\u003dTrue at this point we forcefully set CONF.api.list_records_by_skipping_down_cells to True even if the operator has it set as False, in which case we won\u0027t explode and those results will be skipped when doing the iteration over the generator (https://github.com/openstack/nova/blob/7fa740491e53195021036af69a0ddfde183daef5/nova/compute/multi_cell_list.py#L404) and we will have the down_cells still stored in cells_failed and cells_timed_out, so the rest of the handling will be the same. This would be better if people still want to use that option with older microversions ?","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b5c989891c5742e30212f3e1af130a95b88c5b8e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            # NOTE(tssurya): Minimal constructs would be returned from the down"},{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped as there is no"},{"line_number":123,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":124,"context_line":"            # situations due to missing keys/information."},{"line_number":125,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_c498d869","line":122,"range":{"start_line":122,"start_character":36,"end_line":122,"end_character":64},"in_reply_to":"3f79a3b5_39fc5573","updated":"2018-12-13 18:38:30.000000000","message":"#2 is not an option, IMHO. Also, we can\u0027t deprecate/remove the conf option in stein, so #1 is kindof out too.\n\nI think you have to make the conf option only effective for older microversions, and make newer ones always have the same behavior. So, maybe pass a flag down to the place where the conf option is honored or something so that the lower layers know whether to look at the conf option, or always do the new behavior.\n\nWe could deprecate the option for removal much later, but that would mean people lose the ability to control the behavior for the older microversions forever, which I think is probably not what we want.","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"0198d98218642b29a3eefccc4655acb539a4514d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            # NOTE(tssurya): Minimal constructs would be returned from the down"},{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped as there is no"},{"line_number":123,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":124,"context_line":"            # situations due to missing keys/information."},{"line_number":125,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9fdfeff1_62e8a8e1","line":122,"range":{"start_line":122,"start_character":36,"end_line":122,"end_character":64},"in_reply_to":"3f79a3b5_c498d869","updated":"2019-01-26 15:02:27.000000000","message":"\u003e #2 is not an option, IMHO. Also, we can\u0027t deprecate/remove the conf\n \u003e option in stein, so #1 is kindof out too.\n \u003e \n \u003e I think you have to make the conf option only effective for older\n \u003e microversions, and make newer ones always have the same behavior.\n \u003e So, maybe pass a flag down to the place where the conf option is\n \u003e honored or something so that the lower layers know whether to look\n \u003e at the conf option, or always do the new behavior.\n \u003e \n \u003e We could deprecate the option for removal much later, but that\n \u003e would mean people lose the ability to control the behavior for the\n \u003e older microversions forever, which I think is probably not what we\n \u003e want.\n\nok, so since its not desirable to make people lose the controlling behaviour in the older microversions we would probably have the list_records_by_skipping_down_cells option always. So in the case of cell_down_support where we don\u0027t support partial results like if filters are given, should we honor the behavior depending on the config ? Or should we just keep this consistent always skipping down cells ? If the config option would always be there then I guess its ok to leave that upto the operator ?","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            # NOTE(tssurya): Minimal constructs would be returned from the down"},{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped as there is no"},{"line_number":123,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":124,"context_line":"            # situations due to missing keys/information."},{"line_number":125,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9fdfeff1_c2b4f4d3","line":122,"range":{"start_line":122,"start_character":36,"end_line":122,"end_character":64},"in_reply_to":"9fdfeff1_62e8a8e1","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4c330e27786309a99e6cf34485111fc340119704","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        all_tenants \u003d common.is_all_tenants(search_opts)"},{"line_number":244,"context_line":"        # use the boolean from here on out so remove the entry from search_opts"},{"line_number":245,"context_line":"        # if it\u0027s present unless we support hadnling down cells in which case"},{"line_number":246,"context_line":"        # we need to know further down the stack whether the \u0027all-tenants\u0027"},{"line_number":247,"context_line":"        # filter was passed or not. We pop this option in the compute API."},{"line_number":248,"context_line":"        if not cell_down_support:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_3ef51b21","line":245,"range":{"start_line":245,"start_character":44,"end_line":245,"end_character":52},"updated":"2018-12-13 17:01:15.000000000","message":"handling","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"9b799bbb077e454dcf6b109c20f48e5e1222c932","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        all_tenants \u003d common.is_all_tenants(search_opts)"},{"line_number":244,"context_line":"        # use the boolean from here on out so remove the entry from search_opts"},{"line_number":245,"context_line":"        # if it\u0027s present unless we support hadnling down cells in which case"},{"line_number":246,"context_line":"        # we need to know further down the stack whether the \u0027all-tenants\u0027"},{"line_number":247,"context_line":"        # filter was passed or not. We pop this option in the compute API."},{"line_number":248,"context_line":"        if not cell_down_support:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_5901116c","line":245,"range":{"start_line":245,"start_character":44,"end_line":245,"end_character":52},"in_reply_to":"3f79a3b5_3ef51b21","updated":"2018-12-13 17:59:37.000000000","message":"Done","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"666f1fe5c6f61f9c40341808ae947ccfadd994ce","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_eb9b0c63","line":126,"range":{"start_line":126,"start_character":62,"end_line":126,"end_character":66},"updated":"2019-01-28 04:49:25.000000000","message":"\u00271\u0027 isn\u0027t the only valid true value for all_tenants","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"457ecdf40a4f7da956f19aabf471b1edaa00130f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_dd14bc46","line":126,"range":{"start_line":126,"start_character":62,"end_line":126,"end_character":66},"in_reply_to":"9fdfeff1_3735f38f","updated":"2019-01-28 20:09:37.000000000","message":"as discussed on IRC:\n\n\n |15:02:05         alex_xu │ tssurya: checking now\n │15:02:11         tssurya │ thanks\n │15:04:33         alex_xu │ tssurya: https://github.com/openstack/nova/blob/master/nova/api/openstack/common.py#L516\n │15:04:54         alex_xu │ you will found there are more than \u00271\u0027 supported in \u0027strutils.bool_from_string\u0027\n │15:05:58         tssurya │ alex_xu: hmm, I see that surely more than 1 is supported, but I was wondering what is an example of a situation when the value will not be \u00271\u0027 \n │15:06:31         alex_xu │ tssurya: I guess the limit you seen is by the novaclient, but novaclient isn\u0027t the only client of nova api\n │15:07:13         tssurya │ yea I haven\u0027t actually dealt with the openstack client at all\n │15:08:08         tssurya │ ok I guess to be on the safe side I will include the checks for the other possible values as mentioned in the docs\n |15:12:36         alex_xu │ tssurya: yea, probably try to move https://github.intel.com/hejiexu/nova/blob/master/nova/api/openstack/compute/servers.py#L227 to the above of your code. if it is possible, then prefect","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"cba8415154c5d8cd8c23eebe523c7bc3217bdb41","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_dcce0c2c","line":126,"range":{"start_line":126,"start_character":62,"end_line":126,"end_character":66},"in_reply_to":"9fdfeff1_8b2920e7","updated":"2019-01-28 10:09:13.000000000","message":"jee, thanks alex and takashi for pointing this out! I saw\n\n\n--all-tenants [\u003c0|1\u003e]         Display information from all tenants (Admin\n                                only).\n\n\nin the help list and thought only 1 or 0 was allowed, my bad.","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"98a12ac3dc1bfcd9da9041e5643ee4017e92874f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_3735f38f","line":126,"range":{"start_line":126,"start_character":62,"end_line":126,"end_character":66},"in_reply_to":"9fdfeff1_dcce0c2c","updated":"2019-01-28 10:40:48.000000000","message":"wait on seconds trials, I am not able to pass any value for the \"--all-tenants\" filter! can someone confirm if the docs are the latest thing?","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e02093085efd957bc476da59b84a8e9a3d759a6b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and search_opts !\u003d {u\u0027all_tenants\u0027: u\u00271\u0027}:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_8b2920e7","line":126,"range":{"start_line":126,"start_character":62,"end_line":126,"end_character":66},"in_reply_to":"9fdfeff1_eb9b0c63","updated":"2019-01-28 05:08:50.000000000","message":"See https://developer.openstack.org/api-ref/compute/?expanded\u003dlist-servers-detailed-detail#list-servers-detailed .\n\n\u003e 1, t, true, on, y and yes are treated as True","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"fee687e36e1a0be7b26928da7c1df225b9773cf2","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if not cell_down_support:"},{"line_number":216,"context_line":"            search_opts.pop(\u0027all_tenants\u0027, None)"},{"line_number":217,"context_line":"        else:"},{"line_number":218,"context_line":"            # NOTE(tssurya): Minimal constructs would be returned from the down"},{"line_number":219,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":220,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":221,"context_line":"            # be made False and the down cells should be skipped (depending on"},{"line_number":222,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":223,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":224,"context_line":"            # situations due to missing keys/information."},{"line_number":225,"context_line":"            only_all_tenants \u003d (req.params.keys() \u003d\u003d [u\u0027all_tenants\u0027])"},{"line_number":226,"context_line":"            # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":227,"context_line":"            # allowed filter exception when handling down cells."},{"line_number":228,"context_line":"            if req.params and not (all_tenants and only_all_tenants):"},{"line_number":229,"context_line":"                cell_down_support \u003d False"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        elevated \u003d None"},{"line_number":232,"context_line":"        if all_tenants:"}],"source_content_type":"text/x-python","patch_set":27,"id":"9fdfeff1_045e6343","line":229,"range":{"start_line":218,"start_character":12,"end_line":229,"end_character":41},"updated":"2019-01-29 15:10:11.000000000","message":"unnecessarily complex.","commit_id":"20b5b8223c813aa1d0c8f35563f74005916aae57"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        search_opts \u003d {}"},{"line_number":113,"context_line":"        search_opts.update(req.GET)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        cell_down_support \u003d api_version_request.is_supported("},{"line_number":116,"context_line":"            req, min_version\u003dPARTIAL_CONSTRUCT_FOR_CELL_DOWN_MIN_VERSION)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if cell_down_support:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_2162310b","line":115,"updated":"2019-02-01 21:45:26.000000000","message":"Move this and the condition block below into a private helper method since this is a sizeable chunk of code in an already very large method.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        search_opts \u003d {}"},{"line_number":113,"context_line":"        search_opts.update(req.GET)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        cell_down_support \u003d api_version_request.is_supported("},{"line_number":116,"context_line":"            req, min_version\u003dPARTIAL_CONSTRUCT_FOR_CELL_DOWN_MIN_VERSION)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if cell_down_support:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_30233408","line":115,"in_reply_to":"9fdfeff1_2162310b","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped (depending on"},{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_81b99d79","line":123,"range":{"start_line":123,"start_character":14,"end_line":123,"end_character":19},"updated":"2019-02-01 21:45:26.000000000","message":"CONF.api.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            # cells if cell_down_support is True, however if filtering, sorting"},{"line_number":121,"context_line":"            # or paging is requested by the user, then cell_down_support should"},{"line_number":122,"context_line":"            # be made False and the down cells should be skipped (depending on"},{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_90778009","line":123,"range":{"start_line":123,"start_character":14,"end_line":123,"end_character":19},"in_reply_to":"9fdfeff1_81b99d79","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":132,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_816e7dfd","line":129,"range":{"start_line":126,"start_character":12,"end_line":129,"end_character":41},"updated":"2019-02-01 21:45:26.000000000","message":"The doc says:\n\n\"Note that by default openstack server list uses the deleted\u003dFalse and project_id\u003dtenant_id filters and since we know both of these values from the instance_mappings table, they will be the only allowed filters.\"\n\nSo what about the \u0027deleted\u0027 and \u0027project_id\u0027 filters?\n\nI\u0027m a bit confused about the all tenants thing now - but it\u0027s been awhile since I\u0027ve looked at this. Is this a supported filter because the underlying compute.API code supports all_tenants (I seem to remember bringing that up during review). Something to do with this?\n\nhttps://github.com/openstack/nova/blob/5a4863aa152f58f6de426b3908a75c2cc1b2efca/nova/compute/api.py#L2685","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # CONF.list_records_by_skipping_down_cells) as there is no"},{"line_number":124,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":125,"context_line":"            # situations due to missing keys/information."},{"line_number":126,"context_line":"            if req.params and list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:"},{"line_number":127,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":128,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":129,"context_line":"                cell_down_support \u003d False"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":132,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_50fef86b","line":129,"range":{"start_line":126,"start_character":12,"end_line":129,"end_character":41},"in_reply_to":"9fdfeff1_816e7dfd","updated":"2019-02-05 11:46:50.000000000","message":"\u003e The doc says:\n \u003e \n \u003e \"Note that by default openstack server list uses the deleted\u003dFalse\n \u003e and project_id\u003dtenant_id filters and since we know both of these\n \u003e values from the instance_mappings table, they will be the only\n \u003e allowed filters.\"\n \u003e \n \u003e So what about the \u0027deleted\u0027 and \u0027project_id\u0027 filters?\n\nyea that\u0027s just added internally in the code to filter out the normal nova list query. Its not something that we pass like \"--deleted\" or \"--host\". The term \"filter exception\" in the code is referring to the flags passed by the user that would be processed.\n\n \u003e \n \u003e I\u0027m a bit confused about the all tenants thing now - but it\u0027s been\n \u003e awhile since I\u0027ve looked at this. Is this a supported filter\n \u003e because the underlying compute.API code supports all_tenants (I\n \u003e seem to remember bringing that up during review). Something to do\n \u003e with this?\n \u003e \n \u003e https://github.com/openstack/nova/blob/5a4863aa152f58f6de426b3908a75c2cc1b2efca/nova/compute/api.py#L2685\n\nyes exactly. Initially I didn\u0027t want to support \"-all-tenants\" filter, but people thought it would be useful for the admin to be able to list the down ones too so we added it.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        context.can(server_policies.SERVERS % \u0027show\u0027)"},{"line_number":407,"context_line":"        cell_down_support \u003d api_version_request.is_supported("},{"line_number":408,"context_line":"            req, min_version\u003dPARTIAL_CONSTRUCT_FOR_CELL_DOWN_MIN_VERSION)"},{"line_number":409,"context_line":"        instance \u003d self._get_server(context, req, id, is_detail\u003dTrue,"},{"line_number":410,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":411,"context_line":"        return self._view_builder.show(req, instance,"},{"line_number":412,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_4520a09b","line":410,"range":{"start_line":409,"start_character":36,"end_line":410,"end_character":47},"updated":"2019-02-01 21:45:26.000000000","message":"nit: alignment","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        context.can(server_policies.SERVERS % \u0027show\u0027)"},{"line_number":407,"context_line":"        cell_down_support \u003d api_version_request.is_supported("},{"line_number":408,"context_line":"            req, min_version\u003dPARTIAL_CONSTRUCT_FOR_CELL_DOWN_MIN_VERSION)"},{"line_number":409,"context_line":"        instance \u003d self._get_server(context, req, id, is_detail\u003dTrue,"},{"line_number":410,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":411,"context_line":"        return self._view_builder.show(req, instance,"},{"line_number":412,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_50b038de","line":410,"range":{"start_line":409,"start_character":36,"end_line":410,"end_character":47},"in_reply_to":"9fdfeff1_4520a09b","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            req, min_version\u003dPARTIAL_CONSTRUCT_FOR_CELL_DOWN_MIN_VERSION)"},{"line_number":409,"context_line":"        instance \u003d self._get_server(context, req, id, is_detail\u003dTrue,"},{"line_number":410,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":411,"context_line":"        return self._view_builder.show(req, instance,"},{"line_number":412,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    @wsgi.response(202)"},{"line_number":415,"context_line":"    @wsgi.expected_errors((400, 403, 409))"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_652364a8","line":412,"range":{"start_line":411,"start_character":39,"end_line":412,"end_character":47},"updated":"2019-02-01 21:45:26.000000000","message":"alignment","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            req, min_version\u003dPARTIAL_CONSTRUCT_FOR_CELL_DOWN_MIN_VERSION)"},{"line_number":409,"context_line":"        instance \u003d self._get_server(context, req, id, is_detail\u003dTrue,"},{"line_number":410,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":411,"context_line":"        return self._view_builder.show(req, instance,"},{"line_number":412,"context_line":"            cell_down_support\u003dcell_down_support)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    @wsgi.response(202)"},{"line_number":415,"context_line":"    @wsgi.expected_errors((400, 403, 409))"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_b0bba4c2","line":412,"range":{"start_line":411,"start_character":39,"end_line":412,"end_character":47},"in_reply_to":"9fdfeff1_652364a8","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            # CONF.api.list_records_by_skipping_down_cells) as there is no"},{"line_number":121,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":122,"context_line":"            # situations due to missing keys/information."},{"line_number":123,"context_line":"            if req.params and list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:"},{"line_number":124,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":125,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":126,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_3d2aa82b","line":123,"updated":"2019-02-12 22:07:18.000000000","message":"OK so if list_records_by_skipping_down_cells is True (the default) and the user is filtering with anything but all_tenants then we\u0027ll skip down cells for the results. If list_records_by_skipping_down_cells is False then the user will get a 500 error response because there are down cells.\n\n--\n\nThis code could probably use dedicated unit testing because the functional test only tests the all_tenants and limit cases, it doesn\u0027t test sorting parameters or other filter properties, or a marker parameter.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"fb9dabda1e761823c93a1f65f36bcdd9e4d9eb2a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            # CONF.api.list_records_by_skipping_down_cells) as there is no"},{"line_number":121,"context_line":"            # way to return correct results for the down cells in those"},{"line_number":122,"context_line":"            # situations due to missing keys/information."},{"line_number":123,"context_line":"            if req.params and list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:"},{"line_number":124,"context_line":"                # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":125,"context_line":"                # allowed filter exception when handling down cells."},{"line_number":126,"context_line":"                cell_down_support \u003d False"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_f043da3d","line":123,"in_reply_to":"9fdfeff1_3d2aa82b","updated":"2019-02-13 12:51:23.000000000","message":"ok will add the test cases in the unit testing.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        search_opts \u003d {}"},{"line_number":133,"context_line":"        search_opts.update(req.GET)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        cell_down_support \u003d self._is_cell_down_supported(req, search_opts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":138,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_dde7dc11","line":135,"range":{"start_line":135,"start_character":62,"end_line":135,"end_character":73},"updated":"2019-02-12 22:07:18.000000000","message":"Wouldn\u0027t we want to pass this *after* L138 below filters the search_opts based on what the user is allowed to do? If we do though, we\u0027d have to keep in mind that remove_invalid_options removes the sorting and paging parameters from search_opts - the paging and sorting options aren\u0027t processed until later (and remember there is a default limit if one isn\u0027t specified, and there are default sort params too).\n\nI kind of think this should happen *after* the filtering and validation below, but we\u0027d also have to check for paging/sorting parameters I guess so it\u0027s not trivial.\n\nFor example, doesn\u0027t python-novaclient always send deleted\u003dFalse by default?\n\nhttps://github.com/openstack/python-novaclient/blob/8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0/novaclient/v2/shell.py#L1481\n\nhttps://github.com/openstack/python-novaclient/blob/8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0/novaclient/v2/shell.py#L1598\n\nAnd that is by default only available to admins, and for non-admins would get filtered out of search_opts by remove_invalid_options. So if we don\u0027t check search_opts after filtering the valid filters we could *always* be passing cell_down_support\u003dFalse for non-admins using the \"nova list\" CLI right?","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ad81067f7544418eeb7c2a695f152f1efe22998b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        search_opts \u003d {}"},{"line_number":133,"context_line":"        search_opts.update(req.GET)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        cell_down_support \u003d self._is_cell_down_supported(req, search_opts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":138,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_e7d001fa","line":135,"range":{"start_line":135,"start_character":62,"end_line":135,"end_character":73},"in_reply_to":"9fdfeff1_aa33a3aa","updated":"2019-02-13 14:25:44.000000000","message":"We talked about this in IRC:\n\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2019-02-13.log.html#t2019-02-13T13:42:53\n\nI think the examples laid out should explain the concern. To summarize, I want users to have the best chance of getting partial results if using \u003e\u003d2.69 and they have servers in down cells. This means I think we should only calculate the down_cell_support variable based on the search_opts that are going to be passed through to the compute API. Since remove_invalid_options filters out the search options based on policy, there is a chance that a non-admin that passed some filter parameters might actually have an empty search_opts dict, which should mean down_cell_support\u003dTrue (whereas as currently coded it would be False). The caveat is we\u0027d have to explicitly check for the paging and sorting parameters in _is_cell_down_supported but I think we can do that with a set constant using the same keys in remove_invalid_options (sort_key, sort_dir, limit, marker), so you\u0027d have something like:\n\nif PAGING_SORTING_PARAMS \u0026 set(list(req.GET)) or \\\n       list(search_opts.keys()) !\u003d [u\u0027all_tenants\u0027]:\n    cell_down_support \u003d False","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e3f0d3bf1580e962e0fe73fc44b362e6e84aa0e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        search_opts \u003d {}"},{"line_number":133,"context_line":"        search_opts.update(req.GET)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        cell_down_support \u003d self._is_cell_down_supported(req, search_opts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":138,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_c93cfec9","line":135,"range":{"start_line":135,"start_character":62,"end_line":135,"end_character":73},"in_reply_to":"9fdfeff1_b3dec9d7","updated":"2019-02-13 00:47:30.000000000","message":"Here is where I make a request as a user with --delete (nova list --deleted) and the results are empty because of the down cell:\n\nstack@downcell:~$ nova list --deleted\n+----+------+--------+------------+-------------+----------+\n| ID | Name | Status | Task State | Power State | Networks |\n+----+------+--------+------------+-------------+----------+\n+----+------+--------+------------+-------------+----------+\nstack@downcell:~$ \n\n\nIf list_records_by_skipping_down_cells\u003dFalse that would result in a 500.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        search_opts \u003d {}"},{"line_number":133,"context_line":"        search_opts.update(req.GET)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        cell_down_support \u003d self._is_cell_down_supported(req, search_opts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":138,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_aa33a3aa","line":135,"range":{"start_line":135,"start_character":62,"end_line":135,"end_character":73},"in_reply_to":"9fdfeff1_c93cfec9","updated":"2019-02-13 11:48:20.000000000","message":"I do consider \"--deleted\" a filter and it will not work for down cells in giving partial constructs, but it will give the deleted ones from the up cells if the config is to skip down cell results.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        search_opts \u003d {}"},{"line_number":133,"context_line":"        search_opts.update(req.GET)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        cell_down_support \u003d self._is_cell_down_supported(req, search_opts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":138,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_6a105b01","line":135,"range":{"start_line":135,"start_character":62,"end_line":135,"end_character":73},"in_reply_to":"9fdfeff1_dde7dc11","updated":"2019-02-13 11:48:20.000000000","message":"\u003e Wouldn\u0027t we want to pass this *after* L138 below filters the\n \u003e search_opts based on what the user is allowed to do?\n\nI am not sure I get the exact problem mentioned from this monologue, apologies :( , but I will try answering this. Why should we care about what the user is \"allowed to do?\" that is in the scope of the policies.. all I care about like we have mentioned in the spec design phase is if they specify any flags i.e filters they will not get partial results and will get skipped or 500 based on the list_records_by_skipping_down_cells config (unless its the --all-tenants for the admin).\n\n \u003e If we do\n \u003e though, we\u0027d have to keep in mind that remove_invalid_options\n \u003e removes the sorting and paging parameters from search_opts - the\n \u003e paging and sorting options aren\u0027t processed until later (and\n \u003e remember there is a default limit if one isn\u0027t specified, and there\n \u003e are default sort params too).\n \u003e \nexactly\n\n \u003e I kind of think this should happen *after* the filtering and\n \u003e validation below,\n\nI am not sure why you think that\n\n \u003e but we\u0027d also have to check for paging/sorting\n \u003e parameters I guess so it\u0027s not trivial.\n \u003e \n \u003e For example, doesn\u0027t python-novaclient always send deleted\u003dFalse by\n \u003e default?\n \u003e \n \u003e https://github.com/openstack/python-novaclient/blob/8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0/novaclient/v2/shell.py#L1481\n \u003e \n \u003e https://github.com/openstack/python-novaclient/blob/8eb7d1c5cc0d30c9e68aeb62dd7c73e4377e9fb0/novaclient/v2/shell.py#L1598\n \u003e \n \u003e And that is by default only available to admins, and for non-admins\n \u003e would get filtered out of search_opts by remove_invalid_options. So\n \u003e if we don\u0027t check search_opts after filtering the valid filters we\n \u003e could *always* be passing cell_down_support\u003dFalse for non-admins\n \u003e using the \"nova list\" CLI right?\n\nas far as I know for the admins its {deleted\u003dFalse} by default and for non-admins its {deleted\u003dFalse, \u0027project_id\u0027: \u0027xxxx\u0027,} by default.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f90950bb776517eea53ce6e572f92fd72e6474e1","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        search_opts \u003d {}"},{"line_number":133,"context_line":"        search_opts.update(req.GET)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        cell_down_support \u003d self._is_cell_down_supported(req, search_opts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":138,"context_line":"        remove_invalid_options(context, search_opts,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_b3dec9d7","line":135,"range":{"start_line":135,"start_character":62,"end_line":135,"end_character":73},"in_reply_to":"9fdfeff1_dde7dc11","updated":"2019-02-12 23:40:04.000000000","message":"Hmm, maybe nova list doesn\u0027t pass deleted\u003dFalse by default:\n\nDEBUG (session:448) REQ: curl -g -i -X GET http://199.204.45.32/compute/v2.1/servers/detail -H \"Accept: application/json\" -H \"OpenStack-API-Version: compute 2.69\" -H \"User-Agent: python-novaclient\" -H \"X-Auth-Token: {SHA256}4bdfaa45d4fc08e4df62575f0f069abd2de7f3576e00fca8cb41553374a15f99\" -H \"X-OpenStack-Nova-API-Version: 2.69\"\n\nthis is with --deleted (as a non-admin so it\u0027s filtered out):\n\nDEBUG (session:448) REQ: curl -g -i -X GET http://199.204.45.32/compute/v2.1/servers/detail?deleted\u003dTrue -H \"Accept: application/json\" -H \"OpenStack-API-Version: compute 2.69\" -H \"User-Agent: python-novaclient\" -H \"X-Auth-Token: {SHA256}cab4d6c863f4a83c4074a0485d388adbf5c5ea39e150e988e56c7e1b6984283e\" -H \"X-OpenStack-Nova-API-Version: 2.69\"","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            else:"},{"line_number":252,"context_line":"                search_opts[\u0027user_id\u0027] \u003d context.user_id"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":255,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"},{"line_number":256,"context_line":"        sort_keys, sort_dirs \u003d remove_invalid_sort_keys("},{"line_number":257,"context_line":"            context, sort_keys, sort_dirs,"},{"line_number":258,"context_line":"            schema_servers.SERVER_LIST_IGNORE_SORT_KEY, (\u0027host\u0027, \u0027node\u0027))"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_bdc3f856","line":255,"range":{"start_line":254,"start_character":8,"end_line":255,"end_character":65},"updated":"2019-02-12 22:07:18.000000000","message":"This is where we get paging and sort parameters since they are filtered out of search_opts above.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            # remove_invalid_options function could have removed the paging and"},{"line_number":125,"context_line":"            # sorting parameters, we add the additional check for that from the"},{"line_number":126,"context_line":"            # request."},{"line_number":127,"context_line":"            paging_sorting_param \u003d [\u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":128,"context_line":"            pag_sort \u003d any(ps in req.GET.keys() for ps in paging_sorting_param)"},{"line_number":129,"context_line":"            # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":130,"context_line":"            # allowed filter exception when handling down cells."}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_461afd6e","line":127,"range":{"start_line":127,"start_character":12,"end_line":127,"end_character":32},"updated":"2019-02-15 14:27:54.000000000","message":"nit: I\u0027d make this a module-level constant so we can re-use it in remove_invalid_options but that can be done in a follow up.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27db2e3b9c6c8c85539c058dc1d31807a90b9c9f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            # remove_invalid_options function could have removed the paging and"},{"line_number":125,"context_line":"            # sorting parameters, we add the additional check for that from the"},{"line_number":126,"context_line":"            # request."},{"line_number":127,"context_line":"            paging_sorting_param \u003d [\u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":128,"context_line":"            pag_sort \u003d any(ps in req.GET.keys() for ps in paging_sorting_param)"},{"line_number":129,"context_line":"            # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":130,"context_line":"            # allowed filter exception when handling down cells."}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_599f374f","line":127,"range":{"start_line":127,"start_character":12,"end_line":127,"end_character":32},"in_reply_to":"9fdfeff1_461afd6e","updated":"2019-02-15 18:41:47.000000000","message":"Done","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            # sorting parameters, we add the additional check for that from the"},{"line_number":126,"context_line":"            # request."},{"line_number":127,"context_line":"            paging_sorting_param \u003d [\u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":128,"context_line":"            pag_sort \u003d any(ps in req.GET.keys() for ps in paging_sorting_param)"},{"line_number":129,"context_line":"            # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":130,"context_line":"            # allowed filter exception when handling down cells."},{"line_number":131,"context_line":"            filters \u003d list(search_opts.keys()) not in ([u\u0027all_tenants\u0027], [])"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_c61fcd58","line":128,"range":{"start_line":128,"start_character":33,"end_line":128,"end_character":47},"updated":"2019-02-15 14:27:54.000000000","message":"nit: get the request keys first before doing the list comprehension","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27db2e3b9c6c8c85539c058dc1d31807a90b9c9f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            # sorting parameters, we add the additional check for that from the"},{"line_number":126,"context_line":"            # request."},{"line_number":127,"context_line":"            paging_sorting_param \u003d [\u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":128,"context_line":"            pag_sort \u003d any(ps in req.GET.keys() for ps in paging_sorting_param)"},{"line_number":129,"context_line":"            # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":130,"context_line":"            # allowed filter exception when handling down cells."},{"line_number":131,"context_line":"            filters \u003d list(search_opts.keys()) not in ([u\u0027all_tenants\u0027], [])"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_f9a94b7b","line":128,"range":{"start_line":128,"start_character":33,"end_line":128,"end_character":47},"in_reply_to":"9fdfeff1_c61fcd58","updated":"2019-02-15 18:41:47.000000000","message":"Done","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fcb0ac38c02bb1306ba2b37db47cdcf838c3a66f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            # sorting parameters, we add the additional check for that from the"},{"line_number":126,"context_line":"            # request."},{"line_number":127,"context_line":"            paging_sorting_param \u003d [\u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":128,"context_line":"            pag_sort \u003d any(ps in req.GET.keys() for ps in paging_sorting_param)"},{"line_number":129,"context_line":"            # NOTE(tssurya): ``nova list --all_tenants`` is the only"},{"line_number":130,"context_line":"            # allowed filter exception when handling down cells."},{"line_number":131,"context_line":"            filters \u003d list(search_opts.keys()) not in ([u\u0027all_tenants\u0027], [])"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_7c06a91e","line":128,"range":{"start_line":128,"start_character":33,"end_line":128,"end_character":47},"in_reply_to":"9fdfeff1_f9a94b7b","updated":"2019-02-15 19:05:17.000000000","message":"Actually changing this causes some weird side effect so I\u0027ll just leave it.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"}],"nova/api/openstack/compute/services.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _get_services_list(self, req, additional_fields\u003d()):"},{"line_number":131,"context_line":"        _services \u003d self._get_services(req)"},{"line_number":132,"context_line":"        return [self._get_service_detail(svc, additional_fields, req)"},{"line_number":133,"context_line":"                for svc in _services]"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _enable(self, body, context):"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_e543d43d","line":132,"range":{"start_line":132,"start_character":21,"end_line":132,"end_character":40},"updated":"2019-02-01 21:45:26.000000000","message":"You\u0027re going to be checking the microversion in here for each call in the loop - just check it outside the loop and pass in a flag.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _get_services_list(self, req, additional_fields\u003d()):"},{"line_number":131,"context_line":"        _services \u003d self._get_services(req)"},{"line_number":132,"context_line":"        return [self._get_service_detail(svc, additional_fields, req)"},{"line_number":133,"context_line":"                for svc in _services]"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _enable(self, body, context):"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_70d45cbe","line":132,"range":{"start_line":132,"start_character":21,"end_line":132,"end_character":40},"in_reply_to":"9fdfeff1_e543d43d","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b74dd496c8b4ff351cabe8df1096dcb7e747ed7c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # NOTE(tssurya): The below logic returns a minimal service construct"},{"line_number":89,"context_line":"        # consisting of only the host and binary fields for the compute"},{"line_number":90,"context_line":"        # services in the down cell."},{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc[\u0027binary\u0027],"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc[\u0027host\u0027]}"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_e910e250","line":91,"updated":"2019-02-13 00:45:15.000000000","message":"What do you think about returning \"UNKNOWN\" for \"status\" here? Because with a down cell this service-list table looks kind of weird:\n\nstack@downcell:~$ nova service-list\n+--------------------------------------+------------------+----------+----------+---------+-------+----------------------------+-----------------+-------------+\n| Id                                   | Binary           | Host     | Zone     | Status  | State | Updated_at                 | Disabled Reason | Forced down |\n+--------------------------------------+------------------+----------+----------+---------+-------+----------------------------+-----------------+-------------+\n| f262c827-21b0-42af-ba93-a51f6074fc88 | nova-scheduler   | downcell | internal | enabled | up    | 2019-02-13T00:43:17.000000 | -               | False       |\n| ae6d1d97-c6a0-4411-8dde-f0f8ba1d08cf | nova-consoleauth | downcell | internal | enabled | up    | 2019-02-13T00:43:19.000000 | -               | False       |\n| 662c8c1d-3668-4b22-a384-825dff7626f1 | nova-conductor   | downcell | internal | enabled | up    | 2019-02-13T00:43:12.000000 | -               | False       |\n|                                      | nova-compute     | downcell |          |         |       |                            |                 |             |\n+--------------------------------------+------------------+----------+----------+---------+-------+----------------------------+-----------------+-------------+\nstack@downcell:~$","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # NOTE(tssurya): The below logic returns a minimal service construct"},{"line_number":89,"context_line":"        # consisting of only the host and binary fields for the compute"},{"line_number":90,"context_line":"        # services in the down cell."},{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc[\u0027binary\u0027],"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc[\u0027host\u0027]}"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_8ab81fc8","line":91,"in_reply_to":"9fdfeff1_e910e250","updated":"2019-02-13 11:48:20.000000000","message":"\u003e What do you think about returning \"UNKNOWN\" for \"status\" \n \u003e here?\n\nits a good idea.\n\n \u003e Because with a down cell this service-list table looks kind of\n \u003e weird:\n \u003e \n \u003e stack@downcell:~$ nova service-list\n \u003e +--------------------------------------+------------------+----------+----------+---------+-------+----------------------------+-----------------+-------------+\n \u003e | Id                                   | Binary           | Host   \n \u003e  | Zone     | Status  | State | Updated_at                 |\n \u003e Disabled Reason | Forced down |\n \u003e +--------------------------------------+------------------+----------+----------+---------+-------+----------------------------+-----------------+-------------+\n \u003e | f262c827-21b0-42af-ba93-a51f6074fc88 | nova-scheduler   |\n \u003e downcell | internal | enabled | up    | 2019-02-13T00:43:17.000000\n \u003e | -               | False       |\n \u003e | ae6d1d97-c6a0-4411-8dde-f0f8ba1d08cf | nova-consoleauth |\n \u003e downcell | internal | enabled | up    | 2019-02-13T00:43:19.000000\n \u003e | -               | False       |\n \u003e | 662c8c1d-3668-4b22-a384-825dff7626f1 | nova-conductor   |\n \u003e downcell | internal | enabled | up    | 2019-02-13T00:43:12.000000\n \u003e | -               | False       |\n \u003e |                                      | nova-compute     |\n \u003e downcell |          |         |       |                           \n \u003e |                 |             |\n \u003e +--------------------------------------+------------------+----------+----------+---------+-------+----------------------------+-----------------+-------------+\n \u003e stack@downcell:~$","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # consisting of only the host and binary fields for the compute"},{"line_number":90,"context_line":"        # services in the down cell."},{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc[\u0027binary\u0027],"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc[\u0027host\u0027]}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        alive \u003d self.servicegroup_api.service_is_up(svc)"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_1dfd646d","line":92,"range":{"start_line":92,"start_character":30,"end_line":92,"end_character":43},"updated":"2019-02-12 22:07:18.000000000","message":"nit: svc.binary - this is a Service object so use dot notation","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # consisting of only the host and binary fields for the compute"},{"line_number":90,"context_line":"        # services in the down cell."},{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc[\u0027binary\u0027],"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc[\u0027host\u0027]}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        alive \u003d self.servicegroup_api.service_is_up(svc)"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_6ae85bb2","line":92,"range":{"start_line":92,"start_character":30,"end_line":92,"end_character":43},"in_reply_to":"9fdfeff1_1dfd646d","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # services in the down cell."},{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc[\u0027binary\u0027],"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc[\u0027host\u0027]}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        alive \u003d self.servicegroup_api.service_is_up(svc)"},{"line_number":96,"context_line":"        state \u003d (alive and \"up\") or \"down\""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_ddfa7c73","line":93,"range":{"start_line":93,"start_character":28,"end_line":93,"end_character":39},"updated":"2019-02-12 22:07:18.000000000","message":"same","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # services in the down cell."},{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc[\u0027binary\u0027],"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc[\u0027host\u0027]}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        alive \u003d self.servicegroup_api.service_is_up(svc)"},{"line_number":96,"context_line":"        state \u003d (alive and \"up\") or \"down\""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_0ad18ffb","line":93,"range":{"start_line":93,"start_character":28,"end_line":93,"end_character":39},"in_reply_to":"9fdfeff1_ddfa7c73","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d74d18871f3afef9378bcb82990d47dfcf9c71dc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if (cell_down_support and \u0027uuid\u0027 not in svc):"},{"line_number":92,"context_line":"            return {\u0027binary\u0027: svc.binary,"},{"line_number":93,"context_line":"                    \u0027host\u0027: svc.host,"},{"line_number":94,"context_line":"                    \u0027status\u0027: \"UNKNOWN\"}"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        alive \u003d self.servicegroup_api.service_is_up(svc)"},{"line_number":97,"context_line":"        state \u003d (alive and \"up\") or \"down\""}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_fc329e0f","line":94,"updated":"2019-02-15 16:06:20.000000000","message":"OMG you could have split this out too!\n\nOkay, okay, fine... :D","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6701090d34e41fd1361d050793c0f89cb540a1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            if s[\u0027binary\u0027] not in api_services"},{"line_number":71,"context_line":"        ]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        host \u003d \u0027\u0027"},{"line_number":74,"context_line":"        if \u0027host\u0027 in req.GET:"},{"line_number":75,"context_line":"            host \u003d req.GET[\u0027host\u0027]"},{"line_number":76,"context_line":"        binary \u003d \u0027\u0027"},{"line_number":77,"context_line":"        if \u0027binary\u0027 in req.GET:"},{"line_number":78,"context_line":"            binary \u003d req.GET[\u0027binary\u0027]"},{"line_number":79,"context_line":"        if host:"},{"line_number":80,"context_line":"            _services \u003d [s for s in _services if s[\u0027host\u0027] \u003d\u003d host]"},{"line_number":81,"context_line":"        if binary:"}],"source_content_type":"text/x-python","patch_set":44,"id":"9fdfeff1_e7bc46bc","line":78,"range":{"start_line":73,"start_character":8,"end_line":78,"end_character":38},"updated":"2019-02-15 20:11:07.000000000","message":"Just thinking about this now, but we can filter the services based on host/binary:\n\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003dlist-compute-services-detail#id378\n\nIn this API we do it after getting results from the cells DBs, but if we were to be consistent with the servers filtering and how the cell_down_support variable gets set, shouldn\u0027t we set cell_down_support\u003dFalse if either of these filters is requested since we can\u0027t honor it? Granted, we\u0027re sort of honoring it in post once we get the results from the cells. Maybe that\u0027s good enough?","commit_id":"983abb05d77587fc3954899ffd7a183f7814a1a7"}],"nova/api/openstack/compute/views/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a362e787a2cbaf8ecd9012e567ea0d677e2d636","unresolved":false,"context_lines":[{"line_number":96,"context_line":"              show_sec_grp\u003dNone, bdms\u003dNone):"},{"line_number":97,"context_line":"        \"\"\"Generic, non-detailed view of an instance.\"\"\""},{"line_number":98,"context_line":"        # TODO(tssurya): document this logic"},{"line_number":99,"context_line":"        if api_version_request.is_supported(request, min_version\u003d\u00272.68\u0027):"},{"line_number":100,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":101,"context_line":"                # only records with partial results"},{"line_number":102,"context_line":"                return {"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_f815824c","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":73},"updated":"2018-11-30 19:59:17.000000000","message":"Like in detail() below, you should probably pass a boolean through from index() to this method otherwise we have to look up this version for every instance in a loop (see _list_view).","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"838d17e5e37bebb5187a6d29b2763a7c483f742e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"              show_sec_grp\u003dNone, bdms\u003dNone):"},{"line_number":97,"context_line":"        \"\"\"Generic, non-detailed view of an instance.\"\"\""},{"line_number":98,"context_line":"        # TODO(tssurya): document this logic"},{"line_number":99,"context_line":"        if api_version_request.is_supported(request, min_version\u003d\u00272.68\u0027):"},{"line_number":100,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":101,"context_line":"                # only records with partial results"},{"line_number":102,"context_line":"                return {"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_e57704d2","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":73},"in_reply_to":"3f79a3b5_f815824c","updated":"2018-12-03 13:57:55.000000000","message":"you are right,\n\nnote to self: improves performance since you don\u0027t check it for every instance in the list.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a362e787a2cbaf8ecd9012e567ea0d677e2d636","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":327,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if api_version_request.is_supported(request, min_version\u003d\u00272.47\u0027):"},{"line_number":330,"context_line":"            # Determine if we should show extra_specs in the inlined flavor"},{"line_number":331,"context_line":"            # once before we iterate the list of instances"},{"line_number":332,"context_line":"            show_extra_specs \u003d context.can(fes_policies.POLICY_ROOT % \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_9831ee0c","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":73},"updated":"2018-11-30 19:59:17.000000000","message":"I think you\u0027ll want to do something like this and pass a boolean flag through to the show() method, otherwise when listing servers with details we\u0027ll check the microversion for every server because _list_view() calls show() from a loop.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"838d17e5e37bebb5187a6d29b2763a7c483f742e","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":327,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if api_version_request.is_supported(request, min_version\u003d\u00272.47\u0027):"},{"line_number":330,"context_line":"            # Determine if we should show extra_specs in the inlined flavor"},{"line_number":331,"context_line":"            # once before we iterate the list of instances"},{"line_number":332,"context_line":"            show_extra_specs \u003d context.can(fes_policies.POLICY_ROOT % \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_0528007d","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":73},"in_reply_to":"3f79a3b5_9831ee0c","updated":"2018-12-03 13:57:55.000000000","message":"Done","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4c330e27786309a99e6cf34485111fc340119704","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":154,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":155,"context_line":"            # information available from the nova_api database."},{"line_number":156,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":157,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":158,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":159,"context_line":"                if \u0027flavor\u0027 in instance:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_5e2337aa","line":156,"updated":"2018-12-13 17:01:15.000000000","message":"I think you could reduce the indenting here by making L150 be:\n\n if cell_down_support and \u0027display_name\u0027 not in instance:","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b5c989891c5742e30212f3e1af130a95b88c5b8e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":154,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":155,"context_line":"            # information available from the nova_api database."},{"line_number":156,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":157,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":158,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":159,"context_line":"                if \u0027flavor\u0027 in instance:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_648a2413","line":156,"in_reply_to":"3f79a3b5_590fd189","updated":"2018-12-13 18:38:30.000000000","message":"Maybe I\u0027m missing the vertical alignment, but there isn\u0027t any else case for \"if cell_down_support\" is there? Everything is under both if statements on L150 and L156 right?","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"9b799bbb077e454dcf6b109c20f48e5e1222c932","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":154,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":155,"context_line":"            # information available from the nova_api database."},{"line_number":156,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":157,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":158,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":159,"context_line":"                if \u0027flavor\u0027 in instance:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_590fd189","line":156,"in_reply_to":"3f79a3b5_5e2337aa","updated":"2018-12-13 17:59:37.000000000","message":"sure yea then it would be:\n\n if cell_down_support and \u0027display_name\u0027 not in instance:\n     blah\n elif cell_down_support:\n     blah\n\nI did the extra indent to make it clearer that there were two cases within cell_down_support but if its ugly I can remove this extra indent.","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3080eb76d1187b4fd882ff0a73cb679c9947ecf3","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":154,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":155,"context_line":"            # information available from the nova_api database."},{"line_number":156,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":157,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":158,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":159,"context_line":"                if \u0027flavor\u0027 in instance:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_426fce61","line":156,"in_reply_to":"3f79a3b5_648a2413","updated":"2018-12-14 08:59:15.000000000","message":"oh yikes, I am not sure why I did that, I guess I got confused with the condition on L159. Sorry dansmith, you are right,","commit_id":"99ac7435bc832d79844e4de6a75eb8a35bc93883"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"666f1fe5c6f61f9c40341808ae947ccfadd994ce","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                            \"created\": utils.isotime(instance[\"created_at\"]),"},{"line_number":174,"context_line":"                            \"image\": self._get_image(request, instance),"},{"line_number":175,"context_line":"                            \"flavor\": self._get_flavor(request, instance,"},{"line_number":176,"context_line":"                                                       show_extra_specs),"},{"line_number":177,"context_line":"                            \"OS-EXT-AZ:availability_zone\": avz,"},{"line_number":178,"context_line":"                            \"OS-EXT-STS:power_state\": instance[\"power_state\"]"},{"line_number":179,"context_line":"                        },"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_0bdf700d","line":176,"range":{"start_line":176,"start_character":55,"end_line":176,"end_character":71},"updated":"2019-01-28 04:49:25.000000000","message":"This sounds like we skip the policy check at line 204","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"cba8415154c5d8cd8c23eebe523c7bc3217bdb41","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                            \"created\": utils.isotime(instance[\"created_at\"]),"},{"line_number":174,"context_line":"                            \"image\": self._get_image(request, instance),"},{"line_number":175,"context_line":"                            \"flavor\": self._get_flavor(request, instance,"},{"line_number":176,"context_line":"                                                       show_extra_specs),"},{"line_number":177,"context_line":"                            \"OS-EXT-AZ:availability_zone\": avz,"},{"line_number":178,"context_line":"                            \"OS-EXT-STS:power_state\": instance[\"power_state\"]"},{"line_number":179,"context_line":"                        },"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_9c05e448","line":176,"range":{"start_line":176,"start_character":55,"end_line":176,"end_character":71},"in_reply_to":"9fdfeff1_0bdf700d","updated":"2019-01-28 10:09:13.000000000","message":"you are right, wasn\u0027t aware of that policy check, thanks for catching this!","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9d8ee40a6092889621b78d62aec77a87a19a7e2","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                            \"created\": utils.isotime(instance[\"created_at\"]),"},{"line_number":174,"context_line":"                            \"image\": self._get_image(request, instance),"},{"line_number":175,"context_line":"                            \"flavor\": self._get_flavor(request, instance,"},{"line_number":176,"context_line":"                                                       show_extra_specs),"},{"line_number":177,"context_line":"                            \"OS-EXT-AZ:availability_zone\": avz,"},{"line_number":178,"context_line":"                            \"OS-EXT-STS:power_state\": instance[\"power_state\"]"},{"line_number":179,"context_line":"                        },"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_572c37ab","line":176,"range":{"start_line":176,"start_character":55,"end_line":176,"end_character":71},"in_reply_to":"9fdfeff1_9c05e448","updated":"2019-01-28 12:41:56.000000000","message":"Done","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":95,"context_line":"              show_extended_attr\u003dNone, show_host_status\u003dNone,"},{"line_number":96,"context_line":"              show_sec_grp\u003dNone, bdms\u003dNone, cell_down_support\u003dFalse):"},{"line_number":97,"context_line":"        \"\"\"Generic, non-detailed view of an instance.\"\"\""},{"line_number":98,"context_line":"        if cell_down_support:"},{"line_number":99,"context_line":"            # NOTE(tssurya): If the microversion is \u003e\u003d 2.68, this boolean will"},{"line_number":100,"context_line":"            # be true in which case we check if there are instances from down"},{"line_number":101,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":102,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":103,"context_line":"            # information available from the nova_api database."},{"line_number":104,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":105,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":106,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":107,"context_line":"                return {"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_852d28ff","line":104,"range":{"start_line":98,"start_character":0,"end_line":104,"end_character":46},"updated":"2019-02-01 21:45:26.000000000","message":"You can combine these conditions on a single line:\n\nif cell_down_support and \u0027display_name\u0027 not in instance:\n   ...","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"              show_extended_attr\u003dNone, show_host_status\u003dNone,"},{"line_number":96,"context_line":"              show_sec_grp\u003dNone, bdms\u003dNone, cell_down_support\u003dFalse):"},{"line_number":97,"context_line":"        \"\"\"Generic, non-detailed view of an instance.\"\"\""},{"line_number":98,"context_line":"        if cell_down_support:"},{"line_number":99,"context_line":"            # NOTE(tssurya): If the microversion is \u003e\u003d 2.68, this boolean will"},{"line_number":100,"context_line":"            # be true in which case we check if there are instances from down"},{"line_number":101,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":102,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":103,"context_line":"            # information available from the nova_api database."},{"line_number":104,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":105,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":106,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":107,"context_line":"                return {"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_7bb51dcd","line":104,"range":{"start_line":98,"start_character":0,"end_line":104,"end_character":46},"in_reply_to":"9fdfeff1_852d28ff","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":107,"context_line":"                return {"},{"line_number":108,"context_line":"                    \"server\": {"},{"line_number":109,"context_line":"                        \"id\": instance[\"uuid\"],"},{"line_number":110,"context_line":"                        \"status\": \"UNKNOWN\","},{"line_number":111,"context_line":"                    },"},{"line_number":112,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_052a98d9","line":109,"range":{"start_line":109,"start_character":38,"end_line":109,"end_character":46},"updated":"2019-02-01 21:45:26.000000000","message":"Here and elsewhere, use dot notation for attribute access, not like a dict since we don\u0027t want to be relying on the NovaObjectDictCompat mixin.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":107,"context_line":"                return {"},{"line_number":108,"context_line":"                    \"server\": {"},{"line_number":109,"context_line":"                        \"id\": instance[\"uuid\"],"},{"line_number":110,"context_line":"                        \"status\": \"UNKNOWN\","},{"line_number":111,"context_line":"                    },"},{"line_number":112,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_1bcad14e","line":109,"range":{"start_line":109,"start_character":38,"end_line":109,"end_character":46},"in_reply_to":"9fdfeff1_052a98d9","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":147,"context_line":"             show_extended_status\u003dTrue, show_extended_volumes\u003dTrue,"},{"line_number":148,"context_line":"             bdms\u003dNone, cell_down_support\u003dFalse):"},{"line_number":149,"context_line":"        \"\"\"Detailed view of a single instance.\"\"\""},{"line_number":150,"context_line":"        if cell_down_support:"},{"line_number":151,"context_line":"            # NOTE(tssurya): If the microversion is \u003e\u003d 2.68, this boolean will"},{"line_number":152,"context_line":"            # be true in which case we check if there are instances from down"},{"line_number":153,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":154,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":155,"context_line":"            # information available from the nova_api database."},{"line_number":156,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":157,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":158,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":159,"context_line":"                if \u0027flavor\u0027 in instance:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_e5ec34bc","line":156,"range":{"start_line":150,"start_character":0,"end_line":156,"end_character":46},"updated":"2019-02-01 21:45:26.000000000","message":"You could drop some of the nesting by doing:\n\nif cell_down_support and \u0027display_name\u0027 not in instance:\n   ...","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":147,"context_line":"             show_extended_status\u003dTrue, show_extended_volumes\u003dTrue,"},{"line_number":148,"context_line":"             bdms\u003dNone, cell_down_support\u003dFalse):"},{"line_number":149,"context_line":"        \"\"\"Detailed view of a single instance.\"\"\""},{"line_number":150,"context_line":"        if cell_down_support:"},{"line_number":151,"context_line":"            # NOTE(tssurya): If the microversion is \u003e\u003d 2.68, this boolean will"},{"line_number":152,"context_line":"            # be true in which case we check if there are instances from down"},{"line_number":153,"context_line":"            # cells (by checking if their objects have missing keys like"},{"line_number":154,"context_line":"            # `display_name`) and return partial constructs based on the"},{"line_number":155,"context_line":"            # information available from the nova_api database."},{"line_number":156,"context_line":"            if \u0027display_name\u0027 not in instance:"},{"line_number":157,"context_line":"                # This means that this server is from a down cell as its"},{"line_number":158,"context_line":"                # missing the key \u0027display_name\u0027."},{"line_number":159,"context_line":"                if \u0027flavor\u0027 in instance:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_1ba17196","line":156,"range":{"start_line":150,"start_character":0,"end_line":156,"end_character":46},"in_reply_to":"9fdfeff1_e5ec34bc","updated":"2019-02-05 11:46:50.000000000","message":"oh yea dan had said the same thing, forgot to do it the old spin off.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                    # information from the request_spec of the instance like"},{"line_number":164,"context_line":"                    # its flavor, image, avz, and user_id in addition to the"},{"line_number":165,"context_line":"                    # basic information from its instance_mapping."},{"line_number":166,"context_line":"                    avz \u003d instance[\"availability_zone\"]"},{"line_number":167,"context_line":"                    show_extra_specs \u003d False"},{"line_number":168,"context_line":"                    context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":169,"context_line":"                    show_extra_specs \u003d context.can("}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_c5749000","line":166,"updated":"2019-02-01 21:45:26.000000000","message":"As noted in the API guide docs, this is either going to be something the user requested during server create or the CONF.default_schedule_zone option, *or* it\u0027s going to be None. If it\u0027s None, I think we should return \"UNKNOWN\". I\u0027m not sure why the API samples are showing \"nova\" but they really probably shouldn\u0027t be - I\u0027m guessing the API samples are showing \"nova\" because they are hard-coded into the doc samples rather than let them get generated, i.e. running tox -e api-samples.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                    # information from the request_spec of the instance like"},{"line_number":164,"context_line":"                    # its flavor, image, avz, and user_id in addition to the"},{"line_number":165,"context_line":"                    # basic information from its instance_mapping."},{"line_number":166,"context_line":"                    avz \u003d instance[\"availability_zone\"]"},{"line_number":167,"context_line":"                    show_extra_specs \u003d False"},{"line_number":168,"context_line":"                    context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":169,"context_line":"                    show_extra_specs \u003d context.can("}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_fbd58de6","line":166,"in_reply_to":"9fdfeff1_c5749000","updated":"2019-02-05 11:46:50.000000000","message":"yea, as of now I removed the specification of avz during server creation for the tox samples. So have modified the logic to:\n\nUNKNOWN if user hasn\u0027t specified during boot and\nrs.avz if it was specified.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def _list_view(self, func, request, servers, coll_name, show_extra_specs,"},{"line_number":405,"context_line":"                   show_extended_attr\u003dNone, show_host_status\u003dNone,"},{"line_number":406,"context_line":"                   show_sec_grp\u003dFalse, bdms\u003dNone, cell_down_support\u003dFalse):"},{"line_number":407,"context_line":"        \"\"\"Provide a view for a list of servers."},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        :param func: Function used to format the server data"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_25679ceb","line":406,"range":{"start_line":406,"start_character":50,"end_line":406,"end_character":67},"updated":"2019-02-01 21:45:26.000000000","message":"Document this in the docstring.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def _list_view(self, func, request, servers, coll_name, show_extra_specs,"},{"line_number":405,"context_line":"                   show_extended_attr\u003dNone, show_host_status\u003dNone,"},{"line_number":406,"context_line":"                   show_sec_grp\u003dFalse, bdms\u003dNone, cell_down_support\u003dFalse):"},{"line_number":407,"context_line":"        \"\"\"Provide a view for a list of servers."},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        :param func: Function used to format the server data"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_db4689c1","line":406,"range":{"start_line":406,"start_character":50,"end_line":406,"end_character":67},"in_reply_to":"9fdfeff1_25679ceb","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        return flavordict"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _get_flavor(self, request, instance, show_extra_specs):"},{"line_number":498,"context_line":"        if (api_version_request.is_supported(request, min_version\u003d\u00272.68\u0027)"},{"line_number":499,"context_line":"                and (\u0027display_name\u0027 not in instance) and"},{"line_number":500,"context_line":"                (\u0027flavor\u0027 in instance)):"},{"line_number":501,"context_line":"            # NOTE(tssurya): From microversion 2.68 we handle down cells for"},{"line_number":502,"context_line":"            # which we may get partial constructs with certain keys like"},{"line_number":503,"context_line":"            # ``flavor`` for the ``GET /servers{server_id}`` request for the"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_85d44849","line":500,"range":{"start_line":498,"start_character":8,"end_line":500,"end_character":40},"updated":"2019-02-01 21:45:26.000000000","message":"You have all of this logic in show() to already know this, so just pass in a kwarg to tell this code what to do.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        return flavordict"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _get_flavor(self, request, instance, show_extra_specs):"},{"line_number":498,"context_line":"        if (api_version_request.is_supported(request, min_version\u003d\u00272.68\u0027)"},{"line_number":499,"context_line":"                and (\u0027display_name\u0027 not in instance) and"},{"line_number":500,"context_line":"                (\u0027flavor\u0027 in instance)):"},{"line_number":501,"context_line":"            # NOTE(tssurya): From microversion 2.68 we handle down cells for"},{"line_number":502,"context_line":"            # which we may get partial constructs with certain keys like"},{"line_number":503,"context_line":"            # ``flavor`` for the ``GET /servers{server_id}`` request for the"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_3b68f51f","line":500,"range":{"start_line":498,"start_character":8,"end_line":500,"end_character":40},"in_reply_to":"9fdfeff1_85d44849","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99f4b240709b93f70fe27ad321b012e15e8099db","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                # its flavor, image, avz, and user_id in addition to the"},{"line_number":159,"context_line":"                # basic information from its instance_mapping."},{"line_number":160,"context_line":"                avz \u003d instance.availability_zone"},{"line_number":161,"context_line":"                show_extra_specs \u003d False"},{"line_number":162,"context_line":"                context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":163,"context_line":"                show_extra_specs \u003d context.can("},{"line_number":164,"context_line":"                    fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_8f175652","line":161,"range":{"start_line":161,"start_character":16,"end_line":161,"end_character":40},"updated":"2019-02-05 19:32:57.000000000","message":"This is pointless code right?","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                # its flavor, image, avz, and user_id in addition to the"},{"line_number":159,"context_line":"                # basic information from its instance_mapping."},{"line_number":160,"context_line":"                avz \u003d instance.availability_zone"},{"line_number":161,"context_line":"                show_extra_specs \u003d False"},{"line_number":162,"context_line":"                context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":163,"context_line":"                show_extra_specs \u003d context.can("},{"line_number":164,"context_line":"                    fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_6df55083","line":161,"range":{"start_line":161,"start_character":16,"end_line":161,"end_character":40},"in_reply_to":"9fdfeff1_8f175652","updated":"2019-02-06 11:55:50.000000000","message":"Done","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99f4b240709b93f70fe27ad321b012e15e8099db","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                        \"OS-EXT-STS:power_state\": instance[\"power_state\"]"},{"line_number":177,"context_line":"                    },"},{"line_number":178,"context_line":"                }"},{"line_number":179,"context_line":"            else:"},{"line_number":180,"context_line":"                # If the key \u0027flavor\u0027 is not present for an instance from"},{"line_number":181,"context_line":"                # a down cell, it means that the request is a"},{"line_number":182,"context_line":"                # ``GET /servers/detail``` and thus we include only the"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_4f096e2f","line":179,"updated":"2019-02-05 19:32:57.000000000","message":"Personally, I\u0027d put the body of this else above L153, and then .update() it with more detail if L153 is true. Otherwise you\u0027re duplicating all of these lines for no reason. While they\u0027re unlikely to need maintenance in the future, it would be cleaner to unify them, IMHO.","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                        \"OS-EXT-STS:power_state\": instance[\"power_state\"]"},{"line_number":177,"context_line":"                    },"},{"line_number":178,"context_line":"                }"},{"line_number":179,"context_line":"            else:"},{"line_number":180,"context_line":"                # If the key \u0027flavor\u0027 is not present for an instance from"},{"line_number":181,"context_line":"                # a down cell, it means that the request is a"},{"line_number":182,"context_line":"                # ``GET /servers/detail``` and thus we include only the"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_edc140e6","line":179,"in_reply_to":"9fdfeff1_4f096e2f","updated":"2019-02-06 11:55:50.000000000","message":"Done","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99f4b240709b93f70fe27ad321b012e15e8099db","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            # value from the request_spec of the instance instead of querying"},{"line_number":503,"context_line":"            # instance.flavor from the cell database since the cell will be"},{"line_number":504,"context_line":"            # down."},{"line_number":505,"context_line":"            instance_type \u003d instance.flavor"},{"line_number":506,"context_line":"        else:"},{"line_number":507,"context_line":"            instance_type \u003d instance.get_flavor()"},{"line_number":508,"context_line":"        if not instance_type:"},{"line_number":509,"context_line":"            LOG.warning(\"Instance has had its instance_type removed \""},{"line_number":510,"context_line":"                        \"from the DB\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_eb2615bb","line":507,"range":{"start_line":505,"start_character":0,"end_line":507,"end_character":49},"updated":"2019-02-05 19:32:57.000000000","message":"Um, what? These should be equivalent. What are you trying to get at here?","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"22acb94562ff2284866565dfffa8030ee901119d","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            # value from the request_spec of the instance instead of querying"},{"line_number":503,"context_line":"            # instance.flavor from the cell database since the cell will be"},{"line_number":504,"context_line":"            # down."},{"line_number":505,"context_line":"            instance_type \u003d instance.flavor"},{"line_number":506,"context_line":"        else:"},{"line_number":507,"context_line":"            instance_type \u003d instance.get_flavor()"},{"line_number":508,"context_line":"        if not instance_type:"},{"line_number":509,"context_line":"            LOG.warning(\"Instance has had its instance_type removed \""},{"line_number":510,"context_line":"                        \"from the DB\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_4a137b67","line":507,"range":{"start_line":505,"start_character":0,"end_line":507,"end_character":49},"in_reply_to":"9fdfeff1_23767940","updated":"2019-02-07 10:10:34.000000000","message":"\u003e Right so the first is this:\n \u003e \n \u003e https://github.com/openstack/nova/blob/bcfd2439bab7cfad942d7e6a187df6edb1d1bf09/nova/compute/api.py#L2426\n \u003e \n \u003e And the second would only be a problem if we have to lazy-load the\n \u003e flavor field, right? If the instance is in a down cell, we won\u0027t\n \u003e have to lazy-load it because you\u0027ve already set the field in that\n \u003e code linked above, and if the instance is in an up cell, either we\n \u003e lazy-load the field or it\u0027s already set (I expect it to already be\n \u003e set because of this: https://github.com/openstack/nova/blob/bcfd2439bab7cfad942d7e6a187df6edb1d1bf09/nova/api/openstack/compute/servers.py#L279\n \u003e )\n \u003e \n \u003e So I think Dan\u0027s point is why can\u0027t we just leave this code as-is?\n\nahh okay, thanks for explaining this! I didn\u0027t think of the lazy load part! cool, yea I will remove it since it won\u0027t be necessary, (not sure why I had to add it at some point during testing/early design phase), but seems to work now without needing this extra check because it is already lazy loaded from compute/api.py","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            # value from the request_spec of the instance instead of querying"},{"line_number":503,"context_line":"            # instance.flavor from the cell database since the cell will be"},{"line_number":504,"context_line":"            # down."},{"line_number":505,"context_line":"            instance_type \u003d instance.flavor"},{"line_number":506,"context_line":"        else:"},{"line_number":507,"context_line":"            instance_type \u003d instance.get_flavor()"},{"line_number":508,"context_line":"        if not instance_type:"},{"line_number":509,"context_line":"            LOG.warning(\"Instance has had its instance_type removed \""},{"line_number":510,"context_line":"                        \"from the DB\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_edbf00ce","line":507,"range":{"start_line":505,"start_character":0,"end_line":507,"end_character":49},"in_reply_to":"9fdfeff1_eb2615bb","updated":"2019-02-06 11:55:50.000000000","message":"The first one gets it from the partial construct that was constructed in the compute/api.py from the request_spec directly. Second ones gets it from https://github.com/openstack/nova/blob/bcfd2439bab7cfad942d7e6a187df6edb1d1bf09/nova/objects/instance.py#L1187 , which is cell targeted and would fail for servers from down cells.\n\nHopefully I am not over-complicating this.. I just wanted to keep the same function workflow for _get_flavor() since there is the 2.47 below for adding the flavor_dict/extra specs.","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"014385cec403b8048dec0d2b2e98309a4cd86252","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            # value from the request_spec of the instance instead of querying"},{"line_number":503,"context_line":"            # instance.flavor from the cell database since the cell will be"},{"line_number":504,"context_line":"            # down."},{"line_number":505,"context_line":"            instance_type \u003d instance.flavor"},{"line_number":506,"context_line":"        else:"},{"line_number":507,"context_line":"            instance_type \u003d instance.get_flavor()"},{"line_number":508,"context_line":"        if not instance_type:"},{"line_number":509,"context_line":"            LOG.warning(\"Instance has had its instance_type removed \""},{"line_number":510,"context_line":"                        \"from the DB\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_23767940","line":507,"range":{"start_line":505,"start_character":0,"end_line":507,"end_character":49},"in_reply_to":"9fdfeff1_edbf00ce","updated":"2019-02-06 13:45:46.000000000","message":"Right so the first is this:\n\nhttps://github.com/openstack/nova/blob/bcfd2439bab7cfad942d7e6a187df6edb1d1bf09/nova/compute/api.py#L2426\n\nAnd the second would only be a problem if we have to lazy-load the flavor field, right? If the instance is in a down cell, we won\u0027t have to lazy-load it because you\u0027ve already set the field in that code linked above, and if the instance is in an up cell, either we lazy-load the field or it\u0027s already set (I expect it to already be set because of this: https://github.com/openstack/nova/blob/bcfd2439bab7cfad942d7e6a187df6edb1d1bf09/nova/api/openstack/compute/servers.py#L279 )\n\nSo I think Dan\u0027s point is why can\u0027t we just leave this code as-is?","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"}],"nova/compute/api.py":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"e8d4a9c81adcfb4160124000b60bf75a33647627","unresolved":false,"context_lines":[{"line_number":2709,"context_line":"            # API and client want minimal construct instances for any cells"},{"line_number":2710,"context_line":"            # that didn\u0027t return, so generate and prefix those to the actual"},{"line_number":2711,"context_line":"            # results."},{"line_number":2712,"context_line":"            project \u003d search_opts.get(\u0027project_id\u0027, context.project_id)"},{"line_number":2713,"context_line":"            limit \u003d (orig_limit - len(instances)) if limit else limit"},{"line_number":2714,"context_line":"            return (self._generate_minimal_construct_for_down_cells(context,"},{"line_number":2715,"context_line":"                down_cell_uuids, project, limit) + instances)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_11222954","side":"PARENT","line":2712,"range":{"start_line":2712,"start_character":51,"end_line":2712,"end_character":71},"updated":"2018-12-06 12:13:02.000000000","message":"I am having to do this hack to allow the \"all-tenants\" filter:\n\nJust thinking out loud here: the other option instead of passing the None project id as default into the query would be to propagate the \"all_tenants\" boolean from the upper layer: https://review.openstack.org/#/c/591657/19/nova/api/openstack/compute/servers.py@243. This way we can be sure that it is only for the \"all-tenants\" admin case and doesn\u0027t somehow set project to None if search_opts[\u0027project_id\u0027] doesn\u0027t exist for some reason. Technically this should not happen as seen here: https://review.openstack.org/#/c/591657/19/nova/api/openstack/compute/servers.py@249 , for all cases other than --all-tenants and --user filters the search_opts[\u0027project_id\u0027] s/will/should be present as a filter. Nevertheless I do not like messing around too much with the context like this.","commit_id":"20a580b81729baf7d710a986fc07d6b3bfe2e76b"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"39394082649d589df44604104a2f3fb39c35c16d","unresolved":false,"context_lines":[{"line_number":2709,"context_line":"            # API and client want minimal construct instances for any cells"},{"line_number":2710,"context_line":"            # that didn\u0027t return, so generate and prefix those to the actual"},{"line_number":2711,"context_line":"            # results."},{"line_number":2712,"context_line":"            project \u003d search_opts.get(\u0027project_id\u0027, context.project_id)"},{"line_number":2713,"context_line":"            limit \u003d (orig_limit - len(instances)) if limit else limit"},{"line_number":2714,"context_line":"            return (self._generate_minimal_construct_for_down_cells(context,"},{"line_number":2715,"context_line":"                down_cell_uuids, project, limit) + instances)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_d1d7ca4c","side":"PARENT","line":2712,"range":{"start_line":2712,"start_character":51,"end_line":2712,"end_character":71},"in_reply_to":"3f79a3b5_11222954","updated":"2018-12-06 17:06:34.000000000","message":"okay.. based on the unit test case failing: http://logs.openstack.org/57/591657/19/check/openstack-tox-py35/93e08fc/testr_results.html.gz which is legit, when called from the lower layers, probably I should not change this. Will pass the all_tenants flag (if we really do need that filter)","commit_id":"20a580b81729baf7d710a986fc07d6b3bfe2e76b"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"652aa1fa911befb3b8aae3631cf7f54bdf7c7e53","unresolved":false,"context_lines":[{"line_number":2709,"context_line":"            # API and client want minimal construct instances for any cells"},{"line_number":2710,"context_line":"            # that didn\u0027t return, so generate and prefix those to the actual"},{"line_number":2711,"context_line":"            # results."},{"line_number":2712,"context_line":"            project \u003d search_opts.get(\u0027project_id\u0027, context.project_id)"},{"line_number":2713,"context_line":"            limit \u003d (orig_limit - len(instances)) if limit else limit"},{"line_number":2714,"context_line":"            return (self._generate_minimal_construct_for_down_cells(context,"},{"line_number":2715,"context_line":"                down_cell_uuids, project, limit) + instances)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_a03aec92","side":"PARENT","line":2712,"range":{"start_line":2712,"start_character":51,"end_line":2712,"end_character":71},"in_reply_to":"3f79a3b5_d1d7ca4c","updated":"2018-12-07 10:50:12.000000000","message":"Done","commit_id":"20a580b81729baf7d710a986fc07d6b3bfe2e76b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":2350,"context_line":""},{"line_number":2351,"context_line":"        :param context: RequestContext"},{"line_number":2352,"context_line":"        :param down_cell_uuids: A list of cell UUIDs that did not respond"},{"line_number":2353,"context_line":"        :param project: A project ID to filter mappings"},{"line_number":2354,"context_line":"        :param limit: A numeric limit on the number of results, or None"},{"line_number":2355,"context_line":"        :returns: An InstanceList() of partial Instance() objects"},{"line_number":2356,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_8539a8a4","line":2353,"range":{"start_line":2353,"start_character":8,"end_line":2353,"end_character":55},"updated":"2019-02-01 21:45:26.000000000","message":"Should probably update this to mention the None case.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":2350,"context_line":""},{"line_number":2351,"context_line":"        :param context: RequestContext"},{"line_number":2352,"context_line":"        :param down_cell_uuids: A list of cell UUIDs that did not respond"},{"line_number":2353,"context_line":"        :param project: A project ID to filter mappings"},{"line_number":2354,"context_line":"        :param limit: A numeric limit on the number of results, or None"},{"line_number":2355,"context_line":"        :returns: An InstanceList() of partial Instance() objects"},{"line_number":2356,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_9b9fa164","line":2353,"range":{"start_line":2353,"start_character":8,"end_line":2353,"end_character":55},"in_reply_to":"9fdfeff1_8539a8a4","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99f4b240709b93f70fe27ad321b012e15e8099db","unresolved":false,"context_lines":[{"line_number":2708,"context_line":"                project \u003d None"},{"line_number":2709,"context_line":"                # Since we skipped popping this in the top layer, we pop this"},{"line_number":2710,"context_line":"                # out now since its purpose is over."},{"line_number":2711,"context_line":"                search_opts.pop(\u0027all_tenants\u0027, None)"},{"line_number":2712,"context_line":"            limit \u003d (orig_limit - len(instances)) if limit else limit"},{"line_number":2713,"context_line":"            return (self._generate_minimal_construct_for_down_cells(context,"},{"line_number":2714,"context_line":"                down_cell_uuids, project, limit) + instances)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_8b3749e4","line":2711,"updated":"2019-02-05 19:32:57.000000000","message":"Personally this moving of this code kinda scares me a bit. Just, you know, saying :)","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":2708,"context_line":"                project \u003d None"},{"line_number":2709,"context_line":"                # Since we skipped popping this in the top layer, we pop this"},{"line_number":2710,"context_line":"                # out now since its purpose is over."},{"line_number":2711,"context_line":"                search_opts.pop(\u0027all_tenants\u0027, None)"},{"line_number":2712,"context_line":"            limit \u003d (orig_limit - len(instances)) if limit else limit"},{"line_number":2713,"context_line":"            return (self._generate_minimal_construct_for_down_cells(context,"},{"line_number":2714,"context_line":"                down_cell_uuids, project, limit) + instances)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_8d3994f3","line":2711,"in_reply_to":"9fdfeff1_8b3749e4","updated":"2019-02-06 11:55:50.000000000","message":"I know what you mean, would you prefer we pop this before itself and bring down yet another flag for all_tenants ?","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"014385cec403b8048dec0d2b2e98309a4cd86252","unresolved":false,"context_lines":[{"line_number":2708,"context_line":"                project \u003d None"},{"line_number":2709,"context_line":"                # Since we skipped popping this in the top layer, we pop this"},{"line_number":2710,"context_line":"                # out now since its purpose is over."},{"line_number":2711,"context_line":"                search_opts.pop(\u0027all_tenants\u0027, None)"},{"line_number":2712,"context_line":"            limit \u003d (orig_limit - len(instances)) if limit else limit"},{"line_number":2713,"context_line":"            return (self._generate_minimal_construct_for_down_cells(context,"},{"line_number":2714,"context_line":"                down_cell_uuids, project, limit) + instances)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_e3bab1df","line":2711,"in_reply_to":"9fdfeff1_8d3994f3","updated":"2019-02-06 13:45:46.000000000","message":"\u003e I know what you mean, would you prefer we pop this before itself\n \u003e and bring down yet another flag for all_tenants ?\n\nThat might be cleaner, then we\u0027re not needing to deal with ignoring all_tenants in search_opts above as well.","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"}],"nova/compute/multi_cell_list.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"2527913eb6c3d8b3c211e04ef06cf45e639c0a41","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":407,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":408,"context_line":"                    not cell_down_support):"},{"line_number":409,"context_line":"                        raise exception.NovaException("},{"line_number":410,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_6be15c2a","line":407,"range":{"start_line":407,"start_character":24,"end_line":407,"end_character":68},"updated":"2019-01-28 06:26:35.000000000","message":"Hmm, should we add some information about the new behavior on this config option? I mean, what we did in this BP sort of changed the effect of this config option, we might not do exactly what the help message of this config said.","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"cba8415154c5d8cd8c23eebe523c7bc3217bdb41","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":407,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":408,"context_line":"                    not cell_down_support):"},{"line_number":409,"context_line":"                        raise exception.NovaException("},{"line_number":410,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_dcb5ac7f","line":407,"range":{"start_line":407,"start_character":24,"end_line":407,"end_character":68},"in_reply_to":"9fdfeff1_6be15c2a","updated":"2019-01-28 10:09:13.000000000","message":"yes, I will edit it, I was just waiting for you or matt to confim if Huawei is ok with this behavior? i.e\n\ndepending on the config value we will either skip down cells or fail with API exception if we are listing using filters/sorting/paging options with the cell_down_support.","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9d8ee40a6092889621b78d62aec77a87a19a7e2","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":407,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":408,"context_line":"                    not cell_down_support):"},{"line_number":409,"context_line":"                        raise exception.NovaException("},{"line_number":410,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_6dee4cb5","line":407,"range":{"start_line":407,"start_character":24,"end_line":407,"end_character":68},"in_reply_to":"9fdfeff1_dcb5ac7f","updated":"2019-01-28 12:41:56.000000000","message":"Done","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9d8ee40a6092889621b78d62aec77a87a19a7e2","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":407,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":408,"context_line":"                    not cell_down_support):"},{"line_number":409,"context_line":"                        raise exception.NovaException("},{"line_number":410,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_cd0c18ee","line":407,"range":{"start_line":407,"start_character":24,"end_line":407,"end_character":68},"in_reply_to":"9fdfeff1_dcb5ac7f","updated":"2019-01-28 12:41:56.000000000","message":"Done","commit_id":"5dd0014ad4bc7ea3dd603e5cfdcef72a5acf1964"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        \"\"\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        cell_down_support \u003d kwargs.pop(\u0027cell_down_support\u0027, False)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        if marker:"},{"line_number":244,"context_line":"            # A marker identifier was provided from the API. Call this"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_850768ca","line":241,"range":{"start_line":241,"start_character":40,"end_line":241,"end_character":57},"updated":"2019-02-01 21:45:26.000000000","message":"Document this in the docstring above.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        \"\"\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        cell_down_support \u003d kwargs.pop(\u0027cell_down_support\u0027, False)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        if marker:"},{"line_number":244,"context_line":"            # A marker identifier was provided from the API. Call this"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_3b46b523","line":241,"range":{"start_line":241,"start_character":40,"end_line":241,"end_character":57},"in_reply_to":"9fdfeff1_850768ca","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":407,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":408,"context_line":"                    not cell_down_support):"},{"line_number":409,"context_line":"                        raise exception.NovaException("},{"line_number":410,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"},{"line_number":411,"context_line":"                            \u0027indicates that we should fail.\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_c50010ae","line":408,"range":{"start_line":407,"start_character":16,"end_line":408,"end_character":43},"updated":"2019-02-01 21:45:26.000000000","message":"It would be good to have a comment here about this logic.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                return"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":407,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":408,"context_line":"                    not cell_down_support):"},{"line_number":409,"context_line":"                        raise exception.NovaException("},{"line_number":410,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"},{"line_number":411,"context_line":"                            \u0027indicates that we should fail.\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_bbbf05cf","line":408,"range":{"start_line":407,"start_character":16,"end_line":408,"end_character":43},"in_reply_to":"9fdfeff1_c50010ae","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"652a134a53879054c91e5163f9dcfd3759b036eb","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                    # if CONF.api.list_records_by_skipping_down_cells is False."},{"line_number":421,"context_line":"                    # In all other cases the results from the down cell should"},{"line_number":422,"context_line":"                    # be skipped now to either construct minimal constructs"},{"line_number":423,"context_line":"                    # later if cell_down_support is True or to simply return the"},{"line_number":424,"context_line":"                    # skipped results if cell_down_support is False."},{"line_number":425,"context_line":"                        raise exception.NovaException("},{"line_number":426,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_20ec41f2","line":423,"updated":"2019-02-05 15:04:25.000000000","message":"oops \u003e 80.","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                    # if CONF.api.list_records_by_skipping_down_cells is False."},{"line_number":421,"context_line":"                    # In all other cases the results from the down cell should"},{"line_number":422,"context_line":"                    # be skipped now to either construct minimal constructs"},{"line_number":423,"context_line":"                    # later if cell_down_support is True or to simply return the"},{"line_number":424,"context_line":"                    # skipped results if cell_down_support is False."},{"line_number":425,"context_line":"                        raise exception.NovaException("},{"line_number":426,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_cdeebc8a","line":423,"in_reply_to":"9fdfeff1_20ec41f2","updated":"2019-02-06 11:55:50.000000000","message":"Done","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"}],"nova/conf/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":340,"context_line":"Note that from API microversion 2.69 there could be transient conditions in the"},{"line_number":341,"context_line":"deployment where certain records are not available and the results could be"},{"line_number":342,"context_line":"partial for certain requests containing those records. In those cases this"},{"line_number":343,"context_line":"option will be ignored."},{"line_number":344,"context_line":"\"\"\"),"},{"line_number":345,"context_line":"]"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_dd6d9c32","line":343,"updated":"2019-02-12 22:07:18.000000000","message":"nit: I would link to the down cell API guide from here for more details - could do that in the subsequent docs patch.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"Note that from API microversion 2.69 there could be transient conditions in the"},{"line_number":341,"context_line":"deployment where certain records are not available and the results could be"},{"line_number":342,"context_line":"partial for certain requests containing those records. In those cases this"},{"line_number":343,"context_line":"option will be ignored."},{"line_number":344,"context_line":"\"\"\"),"},{"line_number":345,"context_line":"]"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_0a898fc8","line":343,"in_reply_to":"9fdfeff1_dd6d9c32","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"}],"nova/objects/instance_mapping.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def _get_not_deleted_by_cell_and_project_from_db(context, cell_uuid,"},{"line_number":258,"context_line":"                                                     project_id, limit):"},{"line_number":259,"context_line":"        query \u003d context.session.query(api_models.InstanceMapping)"},{"line_number":260,"context_line":"        if project_id is not None:"},{"line_number":261,"context_line":"            query \u003d query.filter_by(project_id\u003dproject_id)"},{"line_number":262,"context_line":"        # Both the values NULL (for newer instances) and"},{"line_number":263,"context_line":"        # False (for the older instances) mean that the instance"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_a5d86c52","line":260,"updated":"2019-02-01 21:45:26.000000000","message":"I would add a comment that project_id can be None in the case that instances are being listed for all tenants.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def _get_not_deleted_by_cell_and_project_from_db(context, cell_uuid,"},{"line_number":258,"context_line":"                                                     project_id, limit):"},{"line_number":259,"context_line":"        query \u003d context.session.query(api_models.InstanceMapping)"},{"line_number":260,"context_line":"        if project_id is not None:"},{"line_number":261,"context_line":"            query \u003d query.filter_by(project_id\u003dproject_id)"},{"line_number":262,"context_line":"        # Both the values NULL (for newer instances) and"},{"line_number":263,"context_line":"        # False (for the older instances) mean that the instance"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_7b73ddb2","line":260,"in_reply_to":"9fdfeff1_a5d86c52","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"nova/tests/fixtures.py":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8342208b14449e231064be98916b6e0276cf359e","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            \u0027nova.objects.InstanceMappingList._get_by_instance_uuids_from_db\u0027,"},{"line_number":314,"context_line":"            self._fake_instancemapping_get_uuids))"},{"line_number":315,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":316,"context_line":"            \u0027nova.objects.InstanceMappingList.\u0027"},{"line_number":317,"context_line":"            \u0027_get_not_deleted_by_cell_and_project_from_db\u0027,"},{"line_number":318,"context_line":"            self._fake_instancemapping_get_by_cell_and_project))"},{"line_number":319,"context_line":"        self.useFixture(fixtures.MonkeyPatch("}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_ad9a800f","line":316,"updated":"2018-11-30 00:40:51.000000000","message":"could just stub this for the api_sample test_case.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a362e787a2cbaf8ecd9012e567ea0d677e2d636","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            \u0027nova.objects.InstanceMappingList._get_by_instance_uuids_from_db\u0027,"},{"line_number":314,"context_line":"            self._fake_instancemapping_get_uuids))"},{"line_number":315,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":316,"context_line":"            \u0027nova.objects.InstanceMappingList.\u0027"},{"line_number":317,"context_line":"            \u0027_get_not_deleted_by_cell_and_project_from_db\u0027,"},{"line_number":318,"context_line":"            self._fake_instancemapping_get_by_cell_and_project))"},{"line_number":319,"context_line":"        self.useFixture(fixtures.MonkeyPatch("}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_b8686af3","line":316,"in_reply_to":"3f79a3b5_ad9a800f","updated":"2018-11-30 19:59:17.000000000","message":"That\u0027s probably a better idea than putting it into the global fixture itself.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"838d17e5e37bebb5187a6d29b2763a7c483f742e","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            \u0027nova.objects.InstanceMappingList._get_by_instance_uuids_from_db\u0027,"},{"line_number":314,"context_line":"            self._fake_instancemapping_get_uuids))"},{"line_number":315,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":316,"context_line":"            \u0027nova.objects.InstanceMappingList.\u0027"},{"line_number":317,"context_line":"            \u0027_get_not_deleted_by_cell_and_project_from_db\u0027,"},{"line_number":318,"context_line":"            self._fake_instancemapping_get_by_cell_and_project))"},{"line_number":319,"context_line":"        self.useFixture(fixtures.MonkeyPatch("}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_6b7bc52a","line":316,"in_reply_to":"3f79a3b5_b8686af3","updated":"2018-12-03 13:57:55.000000000","message":"Done","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d10fd0ad008f5bf4dd7f6aebd41f0144ba4af852","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"        self.addCleanup(CONF.clear_override, \u0027driver\u0027, \u0027quota\u0027)"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class DownCellFixture(fixtures.Fixture):"},{"line_number":2053,"context_line":"    \"\"\"A fixture to simulate when a cell is down either due to error or timeout"},{"line_number":2054,"context_line":""},{"line_number":2055,"context_line":"    This fixture will stub out the scatter_gather_cells routine used in various"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_b3188b72","line":2052,"range":{"start_line":2052,"start_character":6,"end_line":2052,"end_character":21},"updated":"2018-11-30 20:00:07.000000000","message":"If you need changes to this, let\u0027s just put them in the change that introduces it:\n\nhttps://review.openstack.org/#/c/614810/","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8e2a53c2137f9c50c60729fb49caf5b3e1e03c91","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"        self.addCleanup(CONF.clear_override, \u0027driver\u0027, \u0027quota\u0027)"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class DownCellFixture(fixtures.Fixture):"},{"line_number":2053,"context_line":"    \"\"\"A fixture to simulate when a cell is down either due to error or timeout"},{"line_number":2054,"context_line":""},{"line_number":2055,"context_line":"    This fixture will stub out the scatter_gather_cells routine used in various"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_716de8cc","line":2052,"range":{"start_line":2052,"start_character":6,"end_line":2052,"end_character":21},"in_reply_to":"3f79a3b5_b3188b72","updated":"2018-12-03 22:39:25.000000000","message":"Done","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8342208b14449e231064be98916b6e0276cf359e","unresolved":false,"context_lines":[{"line_number":2074,"context_line":"    \"\"\""},{"line_number":2075,"context_line":"    def setUp(self):"},{"line_number":2076,"context_line":"        super(DownCellFixture, self).setUp()"},{"line_number":2077,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":2078,"context_line":""},{"line_number":2079,"context_line":"        # NOTE(mriedem): We could make this more dynamic in the future by"},{"line_number":2080,"context_line":"        # allowing the caller to provide a list of cells to consider \"down\"."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_4d7f2cbd","line":2077,"updated":"2018-11-30 00:40:51.000000000","message":"refactor and add more comments on the changed logic.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a362e787a2cbaf8ecd9012e567ea0d677e2d636","unresolved":false,"context_lines":[{"line_number":2112,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":2113,"context_line":"            \u0027nova.context.scatter_gather_cells\u0027, stub_scatter_gather_cells))"},{"line_number":2114,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":2115,"context_line":"            \u0027nova.context.scatter_gather_all_cells\u0027,"},{"line_number":2116,"context_line":"            stub_scatter_gather_all_cells))"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_18771ed5","line":2115,"updated":"2018-11-30 19:59:17.000000000","message":"Why is this needed? scatter_gather_all_cells calls scatter_gather_cells already.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8e2a53c2137f9c50c60729fb49caf5b3e1e03c91","unresolved":false,"context_lines":[{"line_number":2112,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":2113,"context_line":"            \u0027nova.context.scatter_gather_cells\u0027, stub_scatter_gather_cells))"},{"line_number":2114,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":2115,"context_line":"            \u0027nova.context.scatter_gather_all_cells\u0027,"},{"line_number":2116,"context_line":"            stub_scatter_gather_all_cells))"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_4e404d5f","line":2115,"in_reply_to":"3f79a3b5_18771ed5","updated":"2018-12-03 22:39:25.000000000","message":"you are right, I have no idea why I added this :(","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"}],"nova/tests/functional/api_sample_tests/api_samples/servers/v2.68/server-create-req.json.tpl":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"        \"accessIPv6\": \"%(access_ip_v6)s\","},{"line_number":5,"context_line":"        \"name\" : \"new-server-test\","},{"line_number":6,"context_line":"        \"imageRef\" : \"%(image_id)s\","},{"line_number":7,"context_line":"        \"flavorRef\" : \"http://openstack.example.com/flavors/1\","},{"line_number":8,"context_line":"        \"availability_zone\": \"nova\","},{"line_number":9,"context_line":"        \"OS-DCF:diskConfig\": \"AUTO\","},{"line_number":10,"context_line":"        \"metadata\" : {"}],"source_content_type":"text/x-smarty","patch_set":28,"id":"9fdfeff1_a5a62cc0","line":7,"range":{"start_line":7,"start_character":23,"end_line":7,"end_character":61},"updated":"2019-02-01 21:45:26.000000000","message":"Using URLs for the flavor is really old school, can we just pass a flavor id (1 I guess?).","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"        \"accessIPv6\": \"%(access_ip_v6)s\","},{"line_number":5,"context_line":"        \"name\" : \"new-server-test\","},{"line_number":6,"context_line":"        \"imageRef\" : \"%(image_id)s\","},{"line_number":7,"context_line":"        \"flavorRef\" : \"http://openstack.example.com/flavors/1\","},{"line_number":8,"context_line":"        \"availability_zone\": \"nova\","},{"line_number":9,"context_line":"        \"OS-DCF:diskConfig\": \"AUTO\","},{"line_number":10,"context_line":"        \"metadata\" : {"}],"source_content_type":"text/x-smarty","patch_set":28,"id":"9fdfeff1_12a96a8f","line":7,"range":{"start_line":7,"start_character":23,"end_line":7,"end_character":61},"in_reply_to":"9fdfeff1_a5a62cc0","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"nova/tests/functional/api_sample_tests/api_samples/servers/v2.68/server-get-resp.json.tpl":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"a9776c6a9fbabe4cff3c20934c3d54c16f16e5a7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        },"},{"line_number":22,"context_line":"        \"status\": \"UNKNOWN\","},{"line_number":23,"context_line":"        \"tenant_id\": \"project\","},{"line_number":24,"context_line":"        \"user_id\": \"fake\""},{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":17,"id":"3f79a3b5_8d31c40c","line":24,"updated":"2018-11-30 00:50:10.000000000","message":"where is the power state and the avz ? :o check the tests","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"838d17e5e37bebb5187a6d29b2763a7c483f742e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        },"},{"line_number":22,"context_line":"        \"status\": \"UNKNOWN\","},{"line_number":23,"context_line":"        \"tenant_id\": \"project\","},{"line_number":24,"context_line":"        \"user_id\": \"fake\""},{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":17,"id":"3f79a3b5_2b8ced38","line":24,"in_reply_to":"3f79a3b5_18fe3e07","updated":"2018-12-03 13:57:55.000000000","message":"right, done.","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a362e787a2cbaf8ecd9012e567ea0d677e2d636","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        },"},{"line_number":22,"context_line":"        \"status\": \"UNKNOWN\","},{"line_number":23,"context_line":"        \"tenant_id\": \"project\","},{"line_number":24,"context_line":"        \"user_id\": \"fake\""},{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":17,"id":"3f79a3b5_18fe3e07","line":24,"in_reply_to":"3f79a3b5_8d31c40c","updated":"2018-11-30 19:59:17.000000000","message":"Because you don\u0027t include it in the response from the view builder:\n\nhttps://review.openstack.org/#/c/591657/17/nova/api/openstack/compute/views/servers.py@138","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"}],"nova/tests/functional/api_sample_tests/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def setUp(self):"},{"line_number":375,"context_line":"        super(ServersSampleJson268Test, self).setUp()"},{"line_number":376,"context_line":"        self.common_subs \u003d {"},{"line_number":377,"context_line":"            \u0027hostid\u0027: \u0027[a-f0-9]+\u0027,"},{"line_number":378,"context_line":"            \u0027instance_name\u0027: \u0027instance-\\d{8}\u0027,"},{"line_number":379,"context_line":"            \u0027hypervisor_hostname\u0027: r\u0027[\\w\\.\\-]+\u0027,"},{"line_number":380,"context_line":"            \u0027hostname\u0027: r\u0027[\\w\\.\\-]+\u0027,"},{"line_number":381,"context_line":"            \u0027access_ip_v4\u0027: \u00271.2.3.4\u0027,"},{"line_number":382,"context_line":"            \u0027access_ip_v6\u0027: \u002780fe::\u0027,"},{"line_number":383,"context_line":"            \u0027user_data\u0027: (self.user_data if six.PY2"},{"line_number":384,"context_line":"                          else self.user_data.decode(\u0027utf-8\u0027)),"},{"line_number":385,"context_line":"            \u0027cdrive\u0027: \u0027.*\u0027,"},{"line_number":386,"context_line":"        }"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        def _fake_instancemapping_get_by_cell_and_project(*args, **kwargs):"},{"line_number":389,"context_line":"            # global cell based on which rest of the functions are stubbed out"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_c5c7b063","line":386,"range":{"start_line":376,"start_character":8,"end_line":386,"end_character":9},"updated":"2019-02-01 21:45:26.000000000","message":"Do we really need any of this? I\u0027m assuming it\u0027s copy/paste.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def setUp(self):"},{"line_number":375,"context_line":"        super(ServersSampleJson268Test, self).setUp()"},{"line_number":376,"context_line":"        self.common_subs \u003d {"},{"line_number":377,"context_line":"            \u0027hostid\u0027: \u0027[a-f0-9]+\u0027,"},{"line_number":378,"context_line":"            \u0027instance_name\u0027: \u0027instance-\\d{8}\u0027,"},{"line_number":379,"context_line":"            \u0027hypervisor_hostname\u0027: r\u0027[\\w\\.\\-]+\u0027,"},{"line_number":380,"context_line":"            \u0027hostname\u0027: r\u0027[\\w\\.\\-]+\u0027,"},{"line_number":381,"context_line":"            \u0027access_ip_v4\u0027: \u00271.2.3.4\u0027,"},{"line_number":382,"context_line":"            \u0027access_ip_v6\u0027: \u002780fe::\u0027,"},{"line_number":383,"context_line":"            \u0027user_data\u0027: (self.user_data if six.PY2"},{"line_number":384,"context_line":"                          else self.user_data.decode(\u0027utf-8\u0027)),"},{"line_number":385,"context_line":"            \u0027cdrive\u0027: \u0027.*\u0027,"},{"line_number":386,"context_line":"        }"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        def _fake_instancemapping_get_by_cell_and_project(*args, **kwargs):"},{"line_number":389,"context_line":"            # global cell based on which rest of the functions are stubbed out"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_fbf82d4a","line":386,"range":{"start_line":376,"start_character":8,"end_line":386,"end_character":9},"in_reply_to":"9fdfeff1_c5c7b063","updated":"2019-02-05 11:46:50.000000000","message":"well, doesn\u0027t play any significant role except to fill the values during the server create and then to compare them for the response in the below two tests, although in this particular case since we have missing keys, the actual ones that do get filled in like the ips, don\u0027t really matter.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        def _fake_instancemapping_get_by_cell_and_project(*args, **kwargs):"},{"line_number":389,"context_line":"            # global cell based on which rest of the functions are stubbed out"},{"line_number":390,"context_line":"            cell_fixture \u003d nova_fixtures.SingleCellSimple()"},{"line_number":391,"context_line":"            return [{"},{"line_number":392,"context_line":"                \u0027id\u0027: 1,"},{"line_number":393,"context_line":"                \u0027updated_at\u0027: None,"},{"line_number":394,"context_line":"                \u0027created_at\u0027: None,"},{"line_number":395,"context_line":"                \u0027instance_uuid\u0027: utils_fixture.uuidsentinel.inst,"},{"line_number":396,"context_line":"                \u0027cell_id\u0027: 1,"},{"line_number":397,"context_line":"                \u0027project_id\u0027: \"6f70656e737461636b20342065766572\","},{"line_number":398,"context_line":"                \u0027cell_mapping\u0027: cell_fixture._fake_cell_list()[0],"},{"line_number":399,"context_line":"                \u0027queued_for_delete\u0027: False"},{"line_number":400,"context_line":"            }]"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        self.stub_out(\u0027nova.objects.InstanceMappingList.\u0027"},{"line_number":403,"context_line":"            \u0027_get_not_deleted_by_cell_and_project_from_db\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_65acc49e","line":400,"range":{"start_line":391,"start_character":20,"end_line":400,"end_character":13},"updated":"2019-02-01 21:45:26.000000000","message":"Use an InstanceMappingList and InstanceMapping object here. In fact, I\u0027m not sure how this even passes because InstanceMapping doesn\u0027t have the dict compat mixin, so what is accessing the fields on this?","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        def _fake_instancemapping_get_by_cell_and_project(*args, **kwargs):"},{"line_number":389,"context_line":"            # global cell based on which rest of the functions are stubbed out"},{"line_number":390,"context_line":"            cell_fixture \u003d nova_fixtures.SingleCellSimple()"},{"line_number":391,"context_line":"            return [{"},{"line_number":392,"context_line":"                \u0027id\u0027: 1,"},{"line_number":393,"context_line":"                \u0027updated_at\u0027: None,"},{"line_number":394,"context_line":"                \u0027created_at\u0027: None,"},{"line_number":395,"context_line":"                \u0027instance_uuid\u0027: utils_fixture.uuidsentinel.inst,"},{"line_number":396,"context_line":"                \u0027cell_id\u0027: 1,"},{"line_number":397,"context_line":"                \u0027project_id\u0027: \"6f70656e737461636b20342065766572\","},{"line_number":398,"context_line":"                \u0027cell_mapping\u0027: cell_fixture._fake_cell_list()[0],"},{"line_number":399,"context_line":"                \u0027queued_for_delete\u0027: False"},{"line_number":400,"context_line":"            }]"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        self.stub_out(\u0027nova.objects.InstanceMappingList.\u0027"},{"line_number":403,"context_line":"            \u0027_get_not_deleted_by_cell_and_project_from_db\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_5bb6198d","line":400,"range":{"start_line":391,"start_character":20,"end_line":400,"end_character":13},"in_reply_to":"9fdfeff1_65acc49e","updated":"2019-02-05 11:46:50.000000000","message":"This test is using the cell_fixture so this was just basically done in the same manner as the other functions that are mocked: https://github.com/openstack/nova/blob/570b07e53c72b1fbb80315bd5f4cf42e4e69f64b/nova/tests/fixtures.py#L330 , since get_by_cell_and_project was the one added here, I just added it locally to this test.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":382,"context_line":"            \u0027access_ip_v6\u0027: \u002780fe::\u0027,"},{"line_number":383,"context_line":"            \u0027user_data\u0027: (self.user_data if six.PY2"},{"line_number":384,"context_line":"                          else self.user_data.decode(\u0027utf-8\u0027)),"},{"line_number":385,"context_line":"            \u0027cdrive\u0027: \u0027.*\u0027,"},{"line_number":386,"context_line":"        }"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        def _fake_instancemapping_get_by_cell_and_project(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_9047fb4c","line":385,"range":{"start_line":385,"start_character":12,"end_line":385,"end_character":27},"updated":"2019-02-12 22:07:18.000000000","message":"Don\u0027t think this is used.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":382,"context_line":"            \u0027access_ip_v6\u0027: \u002780fe::\u0027,"},{"line_number":383,"context_line":"            \u0027user_data\u0027: (self.user_data if six.PY2"},{"line_number":384,"context_line":"                          else self.user_data.decode(\u0027utf-8\u0027)),"},{"line_number":385,"context_line":"            \u0027cdrive\u0027: \u0027.*\u0027,"},{"line_number":386,"context_line":"        }"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        def _fake_instancemapping_get_by_cell_and_project(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_0a774fd6","line":385,"range":{"start_line":385,"start_character":12,"end_line":385,"end_character":27},"in_reply_to":"9fdfeff1_9047fb4c","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        uuid \u003d self._post_server(use_common_server_api_samples\u003dFalse)"},{"line_number":415,"context_line":"        with nova_fixtures.DownCellFixture():"},{"line_number":416,"context_line":"            response \u003d self._do_get(\u0027servers/detail\u0027)"},{"line_number":417,"context_line":"        subs \u003d self.common_subs.copy()"},{"line_number":418,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":419,"context_line":"        self._verify_response(\u0027servers-details-resp\u0027, subs, response, 200)"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_f06767e8","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":38},"updated":"2019-02-12 22:07:18.000000000","message":"Shouldn\u0027t need to copy this here and below.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        uuid \u003d self._post_server(use_common_server_api_samples\u003dFalse)"},{"line_number":415,"context_line":"        with nova_fixtures.DownCellFixture():"},{"line_number":416,"context_line":"            response \u003d self._do_get(\u0027servers/detail\u0027)"},{"line_number":417,"context_line":"        subs \u003d self.common_subs.copy()"},{"line_number":418,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":419,"context_line":"        self._verify_response(\u0027servers-details-resp\u0027, subs, response, 200)"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_6a6e1b01","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":38},"in_reply_to":"9fdfeff1_f06767e8","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"}],"nova/tests/functional/api_sample_tests/test_services.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def setUp(self):"},{"line_number":197,"context_line":"        super(ServicesV268JsonTest, self).setUp()"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        def _fake_cell_list(*args, **kwargs):"},{"line_number":200,"context_line":"            return [{\u0027id\u0027: 1,"},{"line_number":201,"context_line":"                     \u0027updated_at\u0027: None,"},{"line_number":202,"context_line":"                     \u0027created_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3f79a3b5_baf69b2b","line":199,"range":{"start_line":199,"start_character":11,"end_line":199,"end_character":27},"updated":"2018-12-20 08:43:54.000000000","message":"Why is a function used?\nIt is sufficient to use a constant, isn\u0027t it?","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"795f888c972397f943aea3a69f9f8766a0e178db","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def setUp(self):"},{"line_number":197,"context_line":"        super(ServicesV268JsonTest, self).setUp()"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        def _fake_cell_list(*args, **kwargs):"},{"line_number":200,"context_line":"            return [{\u0027id\u0027: 1,"},{"line_number":201,"context_line":"                     \u0027updated_at\u0027: None,"},{"line_number":202,"context_line":"                     \u0027created_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3f79a3b5_83ab3a1f","line":199,"range":{"start_line":199,"start_character":11,"end_line":199,"end_character":27},"in_reply_to":"3f79a3b5_baf69b2b","updated":"2018-12-20 12:12:46.000000000","message":"sure, doesn\u0027t matter if its a function or a constant, I was just following the patterns.","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                     \u0027updated_at\u0027: None,"},{"line_number":212,"context_line":"                     \u0027created_at\u0027: None,"},{"line_number":213,"context_line":"                     \u0027host\u0027: \u0027host1\u0027,"},{"line_number":214,"context_line":"                     \u0027cell_mapping\u0027: _fake_cell_list()[0]},"},{"line_number":215,"context_line":"                    {\u0027id\u0027: 2,"},{"line_number":216,"context_line":"                     \u0027updated_at\u0027: None,"},{"line_number":217,"context_line":"                     \u0027created_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_25c9dc57","line":214,"range":{"start_line":214,"start_character":37,"end_line":214,"end_character":57},"updated":"2019-02-01 21:45:26.000000000","message":"Do this once outside generating the list.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                     \u0027updated_at\u0027: None,"},{"line_number":212,"context_line":"                     \u0027created_at\u0027: None,"},{"line_number":213,"context_line":"                     \u0027host\u0027: \u0027host1\u0027,"},{"line_number":214,"context_line":"                     \u0027cell_mapping\u0027: _fake_cell_list()[0]},"},{"line_number":215,"context_line":"                    {\u0027id\u0027: 2,"},{"line_number":216,"context_line":"                     \u0027updated_at\u0027: None,"},{"line_number":217,"context_line":"                     \u0027created_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_f0292c9b","line":214,"range":{"start_line":214,"start_character":37,"end_line":214,"end_character":57},"in_reply_to":"9fdfeff1_25c9dc57","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"8342208b14449e231064be98916b6e0276cf359e","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"    def test_get_servers_with_down_cells(self):"},{"line_number":1240,"context_line":"        servers \u003d self.api.get_servers(detail\u003dFalse)"},{"line_number":1241,"context_line":"        self.assertEqual(1, len(servers))"},{"line_number":1242,"context_line":"        # in progress, more tests coming up for records from"},{"line_number":1243,"context_line":"        # both up and down cells."},{"line_number":1244,"context_line":"        # self.assertEqual(\u0027UNKNOWN\u0027, servers[0].status)"},{"line_number":1245,"context_line":"        # self.assertEqual(self.uuid, servers[0].id)"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_0df4d455","line":1245,"range":{"start_line":1242,"start_character":8,"end_line":1245,"end_character":52},"updated":"2018-11-30 00:40:51.000000000","message":"finish this suite","commit_id":"5fb81eb4e533a31fce622e8b01278e9dc3ddeb49"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"58fb3e0920749eb461e083a85ffefed41a9c0178","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        # in progress, more tests coming up for records from"},{"line_number":1243,"context_line":"        # both up and down cells."},{"line_number":1244,"context_line":"        # self.assertEqual(\u0027UNKNOWN\u0027, servers[0].status)"},{"line_number":1245,"context_line":"        # self.assertEqual(self.uuid, servers[0].id)"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_71e728b0","line":1245,"updated":"2018-12-03 23:01:13.000000000","message":"Also include more tests on the filter exceptions.","commit_id":"88115a4af828e78f704423b2088cfff6f0650e22"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c3c0ae68806c8a3c509c13be95dec053ca1f16da","unresolved":false,"context_lines":[{"line_number":1273,"context_line":"                        context\u003dcctxt,"},{"line_number":1274,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1275,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1276,"context_line":"                        instance_type_id\u003di,"},{"line_number":1277,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1278,"context_line":"                        flavor\u003dflavor,"},{"line_number":1279,"context_line":"                        info_cache\u003d_info_cache,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_16c76c66","line":1276,"range":{"start_line":1276,"start_character":41,"end_line":1276,"end_character":42},"updated":"2019-01-30 03:28:12.000000000","message":"this too.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":1273,"context_line":"                        context\u003dcctxt,"},{"line_number":1274,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1275,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1276,"context_line":"                        instance_type_id\u003di,"},{"line_number":1277,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1278,"context_line":"                        flavor\u003dflavor,"},{"line_number":1279,"context_line":"                        info_cache\u003d_info_cache,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_b03404fd","line":1276,"range":{"start_line":1276,"start_character":41,"end_line":1276,"end_character":42},"in_reply_to":"9fdfeff1_16c76c66","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c3c0ae68806c8a3c509c13be95dec053ca1f16da","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1275,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1276,"context_line":"                        instance_type_id\u003di,"},{"line_number":1277,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1278,"context_line":"                        flavor\u003dflavor,"},{"line_number":1279,"context_line":"                        info_cache\u003d_info_cache,"},{"line_number":1280,"context_line":"                        display_name\u003d\u0027server-test\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_d6bd64d8","line":1277,"range":{"start_line":1277,"start_character":59,"end_line":1277,"end_character":60},"updated":"2019-01-30 03:28:12.000000000","message":"don\u0027t see where this is defined?","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1275,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1276,"context_line":"                        instance_type_id\u003di,"},{"line_number":1277,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1278,"context_line":"                        flavor\u003dflavor,"},{"line_number":1279,"context_line":"                        info_cache\u003d_info_cache,"},{"line_number":1280,"context_line":"                        display_name\u003d\u0027server-test\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_503918f0","line":1277,"range":{"start_line":1277,"start_character":59,"end_line":1277,"end_character":60},"in_reply_to":"9fdfeff1_45fe606b","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1275,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1276,"context_line":"                        instance_type_id\u003di,"},{"line_number":1277,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1278,"context_line":"                        flavor\u003dflavor,"},{"line_number":1279,"context_line":"                        info_cache\u003d_info_cache,"},{"line_number":1280,"context_line":"                        display_name\u003d\u0027server-test\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_45fe606b","line":1277,"range":{"start_line":1277,"start_character":59,"end_line":1277,"end_character":60},"in_reply_to":"9fdfeff1_d6bd64d8","updated":"2019-02-01 21:45:26.000000000","message":"It\u0027s the i variable from L1246 above, and is getting lucky because the flavor above has id\u003d1 and coincidentally with range(2) you\u0027re getting i\u003d1 here, but it should be cleaned up. I\u0027d use flavor.id here to be clear.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"afb64950cdc1262e82fd3d7976696a3650e938e2","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"        self.api.microversion \u003d \u00272.68\u0027"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":1226,"context_line":"        self.project_id \u003d \"6f70656e737461636b20342065766572\""},{"line_number":1227,"context_line":"        self.cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":1228,"context_line":"        self.down_cell_insts \u003d []"},{"line_number":1229,"context_line":"        self.up_cell_insts \u003d []"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_f104c480","line":1226,"range":{"start_line":1226,"start_character":8,"end_line":1226,"end_character":60},"updated":"2019-02-05 21:34:16.000000000","message":"Can you just use self.api.project_id here?","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"        self.api.microversion \u003d \u00272.68\u0027"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":1226,"context_line":"        self.project_id \u003d \"6f70656e737461636b20342065766572\""},{"line_number":1227,"context_line":"        self.cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":1228,"context_line":"        self.down_cell_insts \u003d []"},{"line_number":1229,"context_line":"        self.up_cell_insts \u003d []"}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_ed1dc073","line":1226,"range":{"start_line":1226,"start_character":8,"end_line":1226,"end_character":60},"in_reply_to":"9fdfeff1_f104c480","updated":"2019-02-06 11:55:50.000000000","message":"Done","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"afb64950cdc1262e82fd3d7976696a3650e938e2","unresolved":false,"context_lines":[{"line_number":1343,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":1344,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":1345,"context_line":"        self.admin_api.microversion \u003d \u00272.68\u0027"},{"line_number":1346,"context_line":"        servers \u003d self.admin_api.get_servers(search_opts\u003d{\u0027all_tenants\u0027: 1})"},{"line_number":1347,"context_line":"        # 4 servers from the up cells and 4 servers from the down cells"},{"line_number":1348,"context_line":"        # plus the 2 instances from cell1 and cell3 which are in a different"},{"line_number":1349,"context_line":"        # project."}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_d138a03e","line":1346,"range":{"start_line":1346,"start_character":59,"end_line":1346,"end_character":70},"updated":"2019-02-05 21:34:16.000000000","message":"All of the servers in this test are created with the same project_id, right? Note that if you\u0027re using OSAPIFixture the project_id is always 6f70656e737461636b20342065766572 unless you override it, which I don\u0027t see happening in these tests. But the more interesting thing to see with all_tenants would be that you create at least one server from project A in an up cell and at least one server from project B in a down cell, and with all_tenants you can get the results from both, otherwise you\u0027re just kind of getting lucky because all servers are from the same project right?","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"77f612df17133c37129718c7dcd29c51db051bcb","unresolved":false,"context_lines":[{"line_number":1343,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":1344,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":1345,"context_line":"        self.admin_api.microversion \u003d \u00272.68\u0027"},{"line_number":1346,"context_line":"        servers \u003d self.admin_api.get_servers(search_opts\u003d{\u0027all_tenants\u0027: 1})"},{"line_number":1347,"context_line":"        # 4 servers from the up cells and 4 servers from the down cells"},{"line_number":1348,"context_line":"        # plus the 2 instances from cell1 and cell3 which are in a different"},{"line_number":1349,"context_line":"        # project."}],"source_content_type":"text/x-python","patch_set":29,"id":"9fdfeff1_48187a74","line":1346,"range":{"start_line":1346,"start_character":59,"end_line":1346,"end_character":70},"in_reply_to":"9fdfeff1_d138a03e","updated":"2019-02-06 11:55:50.000000000","message":"\u003e All of the servers in this test are created with the same\n \u003e project_id, right? \n\nNo see L1268 until L1287, there are two servers created with \u0027fake\u0027 project_id just for this test.\n\n \u003e Note that if you\u0027re using OSAPIFixture the\n \u003e project_id is always 6f70656e737461636b20342065766572 unless you\n \u003e override it, which I don\u0027t see happening in these tests. But the\n \u003e more interesting thing to see with all_tenants would be that you\n \u003e create at least one server from project A in an up cell and at\n \u003e least one server from project B in a down cell, and with\n \u003e all_tenants you can get the results from both, otherwise you\u0027re\n \u003e just kind of getting lucky because all servers are from the same\n \u003e project right?\n\nnot really two servers are of \u0027fake\u0027 project while rest are of \u00276f70656e737461636b20342065766572\u0027 which is why in L1355 and L1362 we have that comparision with the tenan_id to get only servers from 6f70656e737461636b20342065766572 which would be 8 in total like done below, plus the two from \u0027fake\u0027 project.","commit_id":"9e403f06d08e91fc083c48f7c2ddca5c9cd67dd8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"                        context\u003dcctxt,"},{"line_number":1276,"context_line":"                        project_id\u003dself.project_id,"},{"line_number":1277,"context_line":"                        user_id\u003dself.project_id,"},{"line_number":1278,"context_line":"                        instance_type_id\u003di,"},{"line_number":1279,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1280,"context_line":"                        flavor\u003dflavor,"},{"line_number":1281,"context_line":"                        info_cache\u003d_info_cache,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_70a137f8","line":1278,"range":{"start_line":1278,"start_character":41,"end_line":1278,"end_character":42},"updated":"2019-02-12 22:07:18.000000000","message":"nit: this should really be flavor.id","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"                        context\u003dcctxt,"},{"line_number":1276,"context_line":"                        project_id\u003dself.project_id,"},{"line_number":1277,"context_line":"                        user_id\u003dself.project_id,"},{"line_number":1278,"context_line":"                        instance_type_id\u003di,"},{"line_number":1279,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, i),"},{"line_number":1280,"context_line":"                        flavor\u003dflavor,"},{"line_number":1281,"context_line":"                        info_cache\u003d_info_cache,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_8a4c9f9e","line":1278,"range":{"start_line":1278,"start_character":41,"end_line":1278,"end_character":42},"in_reply_to":"9fdfeff1_70a137f8","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"                                             project_id\u003dself.project_id,"},{"line_number":1288,"context_line":"                                             queued_for_delete\u003dFalse)"},{"line_number":1289,"context_line":"                im.create()"},{"line_number":1290,"context_line":"                if cell.name \u003d\u003d \u0027cell1\u0027 or cell.name \u003d\u003d \u0027cell2\u0027:"},{"line_number":1291,"context_line":"                    self.down_cell_insts.append(inst.uuid)"},{"line_number":1292,"context_line":"                else:"},{"line_number":1293,"context_line":"                    self.up_cell_insts.append(inst.uuid)"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_b0b23f48","line":1290,"updated":"2019-02-12 22:07:18.000000000","message":"A comment here would be good - looks like this makes cell1 and cell2 \"down\" while cell3 will be up.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"                                             project_id\u003dself.project_id,"},{"line_number":1288,"context_line":"                                             queued_for_delete\u003dFalse)"},{"line_number":1289,"context_line":"                im.create()"},{"line_number":1290,"context_line":"                if cell.name \u003d\u003d \u0027cell1\u0027 or cell.name \u003d\u003d \u0027cell2\u0027:"},{"line_number":1291,"context_line":"                    self.down_cell_insts.append(inst.uuid)"},{"line_number":1292,"context_line":"                else:"},{"line_number":1293,"context_line":"                    self.up_cell_insts.append(inst.uuid)"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_ea276bc6","line":1290,"in_reply_to":"9fdfeff1_b0b23f48","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"                        context\u003dcctxt,"},{"line_number":1300,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1301,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1302,"context_line":"                        instance_type_id\u003d3,"},{"line_number":1303,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, 3),"},{"line_number":1304,"context_line":"                        flavor\u003dflavor,"},{"line_number":1305,"context_line":"                        info_cache\u003d_info_cache,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_107b0b7b","line":1302,"range":{"start_line":1302,"start_character":41,"end_line":1302,"end_character":42},"updated":"2019-02-12 22:07:18.000000000","message":"flavor.id","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"                        context\u003dcctxt,"},{"line_number":1300,"context_line":"                        project_id\u003d\u0027fake\u0027,"},{"line_number":1301,"context_line":"                        user_id\u003d\u0027fake\u0027,"},{"line_number":1302,"context_line":"                        instance_type_id\u003d3,"},{"line_number":1303,"context_line":"                        hostname\u003d\u0027%s-inst%i\u0027 % (cell.name, 3),"},{"line_number":1304,"context_line":"                        flavor\u003dflavor,"},{"line_number":1305,"context_line":"                        info_cache\u003d_info_cache,"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_ca2aa78f","line":1302,"range":{"start_line":1302,"start_character":41,"end_line":1302,"end_character":42},"in_reply_to":"9fdfeff1_107b0b7b","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"                                             project_id\u003d\u0027fake\u0027,"},{"line_number":1312,"context_line":"                                             queued_for_delete\u003dFalse)"},{"line_number":1313,"context_line":"                im.create()"},{"line_number":1314,"context_line":"            if cell.name \u003d\u003d \u0027cell1\u0027 or cell.name \u003d\u003d \u0027cell2\u0027:"},{"line_number":1315,"context_line":"                self.down_cell_mappings.objects.append(cell)"},{"line_number":1316,"context_line":"        self.useFixture(nova_fixtures.DownCellFixture(self.down_cell_mappings))"},{"line_number":1317,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_d09823c1","line":1314,"range":{"start_line":1314,"start_character":12,"end_line":1314,"end_character":60},"updated":"2019-02-12 22:07:18.000000000","message":"nit: since this is above, you could define a variable outside the loop and then do:\n\ndown_cell_names \u003d [\u0027cell1\u0027, \u0027cell2\u0027]\n...\nif cell.name in down_cell_names:\n   ....","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ad0263dac97bceb060394494cf68db142bd8472d","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"                                             project_id\u003d\u0027fake\u0027,"},{"line_number":1312,"context_line":"                                             queued_for_delete\u003dFalse)"},{"line_number":1313,"context_line":"                im.create()"},{"line_number":1314,"context_line":"            if cell.name \u003d\u003d \u0027cell1\u0027 or cell.name \u003d\u003d \u0027cell2\u0027:"},{"line_number":1315,"context_line":"                self.down_cell_mappings.objects.append(cell)"},{"line_number":1316,"context_line":"        self.useFixture(nova_fixtures.DownCellFixture(self.down_cell_mappings))"},{"line_number":1317,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_95284086","line":1314,"range":{"start_line":1314,"start_character":12,"end_line":1314,"end_character":60},"in_reply_to":"9fdfeff1_d09823c1","updated":"2019-02-13 11:48:20.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                self.assertEqual(server[\u0027user_id\u0027], self.project_id)"},{"line_number":1353,"context_line":"                self.assertIn(\u0027image\u0027, server)"},{"line_number":1354,"context_line":""},{"line_number":1355,"context_line":"    def test_get_servers_detail_limits_with_down_cells(self):"},{"line_number":1356,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027limit\u0027: 5})"},{"line_number":1357,"context_line":"        # 4 servers from the up cells since we skip down cell"},{"line_number":1358,"context_line":"        # results by default for filters."}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_90e37b34","line":1355,"range":{"start_line":1355,"start_character":8,"end_line":1355,"end_character":54},"updated":"2019-02-12 22:07:18.000000000","message":"How about running a test like this with self.flags(list_records_by_skipping_down_cells\u003dFalse, group\u003d\u0027api\u0027) and assert you get a 500 response.\n\nWe could also test that \"nova list\" case I mentioned in the API code where deleted\u003dFalse is passed from a non-admin user which would normally get filtered out of search_opts but now it\u0027s going to cause a change in behavior based on how list_records_by_skipping_down_cells is configured.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"fb9dabda1e761823c93a1f65f36bcdd9e4d9eb2a","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"                self.assertEqual(server[\u0027user_id\u0027], self.project_id)"},{"line_number":1353,"context_line":"                self.assertIn(\u0027image\u0027, server)"},{"line_number":1354,"context_line":""},{"line_number":1355,"context_line":"    def test_get_servers_detail_limits_with_down_cells(self):"},{"line_number":1356,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027limit\u0027: 5})"},{"line_number":1357,"context_line":"        # 4 servers from the up cells since we skip down cell"},{"line_number":1358,"context_line":"        # results by default for filters."}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_303962d6","line":1355,"range":{"start_line":1355,"start_character":8,"end_line":1355,"end_character":54},"in_reply_to":"9fdfeff1_90e37b34","updated":"2019-02-13 12:51:23.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc4ff3b4738cd6a6bb1367a730bbc0450102cc78","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"    def test_get_servers_detail_limits_with_down_cells(self):"},{"line_number":1356,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027limit\u0027: 5})"},{"line_number":1357,"context_line":"        # 4 servers from the up cells since we skip down cell"},{"line_number":1358,"context_line":"        # results by default for filters."},{"line_number":1359,"context_line":"        self.assertEqual(4, len(servers))"},{"line_number":1360,"context_line":"        for server in servers:"},{"line_number":1361,"context_line":"            # server in up cell"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_50eaf30e","line":1358,"range":{"start_line":1358,"start_character":33,"end_line":1358,"end_character":40},"updated":"2019-02-12 22:07:18.000000000","message":"nit: limit isn\u0027t really a filter parameter, it\u0027s for paging.","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"fb9dabda1e761823c93a1f65f36bcdd9e4d9eb2a","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"    def test_get_servers_detail_limits_with_down_cells(self):"},{"line_number":1356,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027limit\u0027: 5})"},{"line_number":1357,"context_line":"        # 4 servers from the up cells since we skip down cell"},{"line_number":1358,"context_line":"        # results by default for filters."},{"line_number":1359,"context_line":"        self.assertEqual(4, len(servers))"},{"line_number":1360,"context_line":"        for server in servers:"},{"line_number":1361,"context_line":"            # server in up cell"}],"source_content_type":"text/x-python","patch_set":39,"id":"9fdfeff1_f58aec61","line":1358,"range":{"start_line":1358,"start_character":33,"end_line":1358,"end_character":40},"in_reply_to":"9fdfeff1_50eaf30e","updated":"2019-02-13 12:51:23.000000000","message":"Done","commit_id":"dc328c53f9613c99a97d9e369e35260e78104c78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fec7281a815d8569d44082eae37ee0612c49972d","unresolved":false,"context_lines":[{"line_number":1367,"context_line":"            self.assertEqual(server[\u0027user_id\u0027], self.project_id)"},{"line_number":1368,"context_line":"            self.assertIn(\u0027image\u0027, server)"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"    def test_get_servers_detail_limits_with_down_cells_the_500_gift(self):"},{"line_number":1371,"context_line":"        self.flags(list_records_by_skipping_down_cells\u003dFalse, group\u003d\u0027api\u0027)"},{"line_number":1372,"context_line":"        # We get an API error with a 500 response code since the"},{"line_number":1373,"context_line":"        # list_records_by_skipping_down_cells config option is False."}],"source_content_type":"text/x-python","patch_set":40,"id":"9fdfeff1_3305e710","line":1370,"range":{"start_line":1370,"start_character":55,"end_line":1370,"end_character":67},"updated":"2019-02-13 16:20:13.000000000","message":"ha","commit_id":"6ea92132f11678009a9df98ea2c4de4c87954e63"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fec7281a815d8569d44082eae37ee0612c49972d","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"                                self.api.get_servers,"},{"line_number":1376,"context_line":"                                search_opts\u003d{\u0027limit\u0027: 5})"},{"line_number":1377,"context_line":"        self.assertEqual(500, exp.response.status_code)"},{"line_number":1378,"context_line":"        self.assertIn(\u0027NovaException\u0027, six.text_type(exp))"},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"    def test_get_servers_detail_marker_in_down_cells(self):"},{"line_number":1381,"context_line":"        # TODO(tssurya): move this to unit testing"}],"source_content_type":"text/x-python","patch_set":40,"id":"9fdfeff1_d32edb8a","line":1378,"updated":"2019-02-13 16:20:13.000000000","message":"Is there something more specific we can check in the error, like \"is not responding but configuration\"?","commit_id":"6ea92132f11678009a9df98ea2c4de4c87954e63"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"6c4c74a30ce77b82517f51bb9abd9213a2ebed4a","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"                                self.api.get_servers,"},{"line_number":1376,"context_line":"                                search_opts\u003d{\u0027limit\u0027: 5})"},{"line_number":1377,"context_line":"        self.assertEqual(500, exp.response.status_code)"},{"line_number":1378,"context_line":"        self.assertIn(\u0027NovaException\u0027, six.text_type(exp))"},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"    def test_get_servers_detail_marker_in_down_cells(self):"},{"line_number":1381,"context_line":"        # TODO(tssurya): move this to unit testing"}],"source_content_type":"text/x-python","patch_set":40,"id":"9fdfeff1_590bce8c","line":1378,"in_reply_to":"9fdfeff1_d32edb8a","updated":"2019-02-14 19:02:08.000000000","message":"Not at this level since it gets caught by the API layers and gets converted to the \"Unexpected API error\"\n\nWe have test coverage (https://github.com/openstack/nova/blob/4a92b338d94355ea06337433fd3d79c352fce152/nova/tests/unit/compute/test_instance_list.py#L215) further below for that.","commit_id":"6ea92132f11678009a9df98ea2c4de4c87954e63"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"    def test_get_servers_detail_marker_in_down_cells(self):"},{"line_number":1381,"context_line":"        marker \u003d self.down_cell_insts[2]"},{"line_number":1382,"context_line":"        # It will fail with a 500 if the marker is in the down cell."},{"line_number":1383,"context_line":"        exp \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":1384,"context_line":"                                self.api.get_servers,"},{"line_number":1385,"context_line":"                                search_opts\u003d{\u0027marker\u0027: marker})"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_866b05b5","line":1382,"updated":"2019-02-15 14:27:54.000000000","message":"And this is because when passing the marker the down_cell_support variable in the API will be False.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3c9b389e7179278f3673f81f4082b550b3e93b37","unresolved":false,"context_lines":[{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"    def test_get_servers_detail_marker_in_down_cells(self):"},{"line_number":1381,"context_line":"        marker \u003d self.down_cell_insts[2]"},{"line_number":1382,"context_line":"        # It will fail with a 500 if the marker is in the down cell."},{"line_number":1383,"context_line":"        exp \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":1384,"context_line":"                                self.api.get_servers,"},{"line_number":1385,"context_line":"                                search_opts\u003d{\u0027marker\u0027: marker})"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_c106d71c","line":1382,"in_reply_to":"9fdfeff1_866b05b5","updated":"2019-02-15 14:55:57.000000000","message":"basically it would explode here: https://github.com/openstack/nova/blob/d231a420d0d4865bb19da513af416cb8bc89010f/nova/compute/instance_list.py#L64 since it can\u0027t connect to the cell, irrespective of the cell_down_support variable. As in we are not handling the connection error there.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"        marker \u003d self.up_cell_insts[1]"},{"line_number":1391,"context_line":"        # It will give the results from the up cell if"},{"line_number":1392,"context_line":"        # list_records_by_skipping_down_cells config option is True."},{"line_number":1393,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027marker\u0027: marker,"},{"line_number":1394,"context_line":"                                                    \u0027sort_key\u0027: \"created_at\","},{"line_number":1395,"context_line":"                                                    \u0027sort_dir\u0027: \"asc\"})"},{"line_number":1396,"context_line":"        # since there are 4 servers from the up cells, when giving the"},{"line_number":1397,"context_line":"        # second instance as marker, sorted by creation time in ascending"},{"line_number":1398,"context_line":"        # third and fourth instances will be returned."}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_a694098c","line":1395,"range":{"start_line":1393,"start_character":39,"end_line":1395,"end_character":70},"updated":"2019-02-15 14:27:54.000000000","message":"So because of these, the cell_down_support variable in the API should be False, right? But if the marker is not in a down cell we\u0027re OK.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3c9b389e7179278f3673f81f4082b550b3e93b37","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"        marker \u003d self.up_cell_insts[1]"},{"line_number":1391,"context_line":"        # It will give the results from the up cell if"},{"line_number":1392,"context_line":"        # list_records_by_skipping_down_cells config option is True."},{"line_number":1393,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027marker\u0027: marker,"},{"line_number":1394,"context_line":"                                                    \u0027sort_key\u0027: \"created_at\","},{"line_number":1395,"context_line":"                                                    \u0027sort_dir\u0027: \"asc\"})"},{"line_number":1396,"context_line":"        # since there are 4 servers from the up cells, when giving the"},{"line_number":1397,"context_line":"        # second instance as marker, sorted by creation time in ascending"},{"line_number":1398,"context_line":"        # third and fourth instances will be returned."}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_e63bf1e6","line":1395,"range":{"start_line":1393,"start_character":39,"end_line":1395,"end_character":70},"in_reply_to":"9fdfeff1_a694098c","updated":"2019-02-15 14:55:57.000000000","message":"yea.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":1404,"context_line":"    def test_get_servers_detail_non_admin_with_deleted_flag(self):"},{"line_number":1405,"context_line":"        # if list_records_by_skipping_down_cells config option is True"},{"line_number":1406,"context_line":"        # this deleted option should be ignored and the rest of the instances"},{"line_number":1407,"context_line":"        # from the up cells and the partial results from the down cells should"},{"line_number":1408,"context_line":"        # be returned."},{"line_number":1409,"context_line":"        # Set the policy so we don\u0027t have permission to allow"},{"line_number":1410,"context_line":"        # all filters but are able to get server details."},{"line_number":1411,"context_line":"        servers_rule \u003d \u0027os_compute_api:servers:detail\u0027"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_c63eed89","line":1408,"range":{"start_line":1407,"start_character":28,"end_line":1408,"end_character":22},"updated":"2019-02-15 14:27:54.000000000","message":"OK and this is because remove_invalid_options would filter out the \u0027deleted\u0027 parameter so that\u0027s why the cell_down_support variable in the API is still True. We could also set list_records_by_skipping_down_cells\u003dFalse in this test to further drive home that the cell_down_support variable is going to be True in this case, but that could be done in a follow up.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        # Set the policy so we don\u0027t have permission to allow"},{"line_number":1410,"context_line":"        # all filters but are able to get server details."},{"line_number":1411,"context_line":"        servers_rule \u003d \u0027os_compute_api:servers:detail\u0027"},{"line_number":1412,"context_line":"        extraspec_rule \u003d \u0027os_compute_api:servers:allow_all_filters\u0027"},{"line_number":1413,"context_line":"        self.policy.set_rules({"},{"line_number":1414,"context_line":"            extraspec_rule: \u0027rule:admin_api\u0027,"},{"line_number":1415,"context_line":"            servers_rule: \u0027@\u0027})"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_06d4f546","line":1412,"updated":"2019-02-15 14:27:54.000000000","message":"This already defaults to admin-only so I\u0027m not sure why you need to explicitly set it.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27db2e3b9c6c8c85539c058dc1d31807a90b9c9f","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        # Set the policy so we don\u0027t have permission to allow"},{"line_number":1410,"context_line":"        # all filters but are able to get server details."},{"line_number":1411,"context_line":"        servers_rule \u003d \u0027os_compute_api:servers:detail\u0027"},{"line_number":1412,"context_line":"        extraspec_rule \u003d \u0027os_compute_api:servers:allow_all_filters\u0027"},{"line_number":1413,"context_line":"        self.policy.set_rules({"},{"line_number":1414,"context_line":"            extraspec_rule: \u0027rule:admin_api\u0027,"},{"line_number":1415,"context_line":"            servers_rule: \u0027@\u0027})"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_d9e1e7d1","line":1412,"in_reply_to":"9fdfeff1_06339515","updated":"2019-02-15 18:41:47.000000000","message":"Hmm, OK, we can also specify a different project_id when creating the API fixture but that could be cleaned up separately later if we care.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3c9b389e7179278f3673f81f4082b550b3e93b37","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        # Set the policy so we don\u0027t have permission to allow"},{"line_number":1410,"context_line":"        # all filters but are able to get server details."},{"line_number":1411,"context_line":"        servers_rule \u003d \u0027os_compute_api:servers:detail\u0027"},{"line_number":1412,"context_line":"        extraspec_rule \u003d \u0027os_compute_api:servers:allow_all_filters\u0027"},{"line_number":1413,"context_line":"        self.policy.set_rules({"},{"line_number":1414,"context_line":"            extraspec_rule: \u0027rule:admin_api\u0027,"},{"line_number":1415,"context_line":"            servers_rule: \u0027@\u0027})"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_06339515","line":1412,"in_reply_to":"9fdfeff1_06d4f546","updated":"2019-02-15 14:55:57.000000000","message":"because unfortunately this OSAPI Fixture has the admin_api and api use the same project_id \"6f70656e737461636b20342065766572\".","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29588695d0a3734982d98ebef91602d479032e7d","unresolved":false,"context_lines":[{"line_number":1412,"context_line":"        extraspec_rule \u003d \u0027os_compute_api:servers:allow_all_filters\u0027"},{"line_number":1413,"context_line":"        self.policy.set_rules({"},{"line_number":1414,"context_line":"            extraspec_rule: \u0027rule:admin_api\u0027,"},{"line_number":1415,"context_line":"            servers_rule: \u0027@\u0027})"},{"line_number":1416,"context_line":"        servers \u003d self.api.get_servers(search_opts\u003d{\u0027deleted\u0027: True})"},{"line_number":1417,"context_line":"        # gets 4 results from up cells and 4 from down cells."},{"line_number":1418,"context_line":"        self.assertEqual(8, len(servers))"}],"source_content_type":"text/x-python","patch_set":42,"id":"9fdfeff1_c6c90dac","line":1415,"range":{"start_line":1415,"start_character":12,"end_line":1415,"end_character":29},"updated":"2019-02-15 14:27:54.000000000","message":"I\u0027m also not sure why you need to set this, it defaults to admin-or-owner.","commit_id":"f0a1d3c2eba591561d75fe353fb051134e7b10a1"}],"releasenotes/notes/bp-handling-down-cell-10f76145d767300c.yaml":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"88d0291afe9040a9306600d9a3ec4b2a78160975","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"},{"line_number":8,"context_line":"    available information from the API database for those records in the"},{"line_number":9,"context_line":"    down cells."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f79a3b5_7a2db444","line":9,"updated":"2018-08-21 14:13:52.000000000","message":"Makes sense to leave it here.","commit_id":"207f7b73d4c0ce77e088b9302d54cf7f828ffadf"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"b79ad6e8667c26ff43dea86f7c0f71c29f66f541","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    From microversion 2.66 the responses of `GET /servers``,"},{"line_number":5,"context_line":"    ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":6,"context_line":"    ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_dd59bf5c","line":4,"range":{"start_line":4,"start_character":25,"end_line":4,"end_character":26},"updated":"2018-10-04 17:31:04.000000000","message":"7","commit_id":"c9f30cd5e95c91a1a580eb868475cb4b25a81f74"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbb34398f5fc3cc75e1d277cbda707bba15d9236","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    From microversion 2.68 the responses of `GET /servers``,"},{"line_number":5,"context_line":"    ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":6,"context_line":"    ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"},{"line_number":8,"context_line":"    available information from the API database for those records in the"},{"line_number":9,"context_line":"    down cells."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_e22f1355","line":6,"range":{"start_line":6,"start_character":25,"end_line":6,"end_character":44},"updated":"2018-10-31 22:04:15.000000000","message":"same\n\nShould link to the API guide changes from this as well.","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"06874c0ebfc7a4ec82de0ef84f47301d52610438","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    From microversion 2.68 the responses of `GET /servers``,"},{"line_number":5,"context_line":"    ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":6,"context_line":"    ``GET /os-services`` may contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"},{"line_number":8,"context_line":"    available information from the API database for those records in the"},{"line_number":9,"context_line":"    down cells."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_b53285be","line":6,"range":{"start_line":6,"start_character":25,"end_line":6,"end_character":44},"in_reply_to":"3f79a3b5_e22f1355","updated":"2018-11-19 14:17:56.000000000","message":"Done","commit_id":"2d446f8de47910e1c61eaa97666171a8cdd1598a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"64406172502d8f2a93fad2be524301f0a4e5ff55","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    ``GET /os-services`` will contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"},{"line_number":8,"context_line":"    available information from the API database for those records in the"},{"line_number":9,"context_line":"    down cells. See `handling_down_cells` for more information on the missing"},{"line_number":10,"context_line":"    keys."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    .. _handling_down_cells: https://developer.openstack.org/api-guide/compute/server_concepts.html#handling-down-cells"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3f79a3b5_682b6431","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":41},"updated":"2018-12-07 02:00:12.000000000","message":"`handling_down_cells`_","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3ced507ff6b86bfdbb675badb08f4450b86ad2e7","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    ``GET /os-services`` will contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"},{"line_number":8,"context_line":"    available information from the API database for those records in the"},{"line_number":9,"context_line":"    down cells. See `handling_down_cells` for more information on the missing"},{"line_number":10,"context_line":"    keys."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    .. _handling_down_cells: https://developer.openstack.org/api-guide/compute/server_concepts.html#handling-down-cells"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3f79a3b5_5dc1812f","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":41},"in_reply_to":"3f79a3b5_682b6431","updated":"2018-12-07 10:07:15.000000000","message":"Done","commit_id":"f13a94227807015866cb1527660d0bb8c1f09fc9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"76e4c6eadc8a2659aea9245c4e38fe8ff5092fd2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    From microversion 2.68 the responses of `GET /servers``,"},{"line_number":5,"context_line":"    ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":6,"context_line":"    ``GET /os-services`` will contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"3f79a3b5_148c452a","line":4,"range":{"start_line":4,"start_character":44,"end_line":4,"end_character":45},"updated":"2018-12-20 08:43:54.000000000","message":"``","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"7a900333c99ef3ff0259bed1837b5a3e8ac49469","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    From microversion 2.68 the responses of `GET /servers``,"},{"line_number":5,"context_line":"    ``GET /servers/detail``, ``GET /servers/{server_id}`` and"},{"line_number":6,"context_line":"    ``GET /os-services`` will contain missing keys during down cell situations"},{"line_number":7,"context_line":"    because of adding support for returning minimal constructs based on the"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"9fdfeff1_e2ded80f","line":4,"range":{"start_line":4,"start_character":44,"end_line":4,"end_character":45},"in_reply_to":"3f79a3b5_148c452a","updated":"2019-01-26 16:08:43.000000000","message":"Done","commit_id":"02b828c23ae961148c7070711595bddff82e0b8d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e8d61b2b761585449e59a35e510c2e496acd0a9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    down cells. See `handling_down_cells`_ for more information on the missing"},{"line_number":10,"context_line":"    keys."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    .. _handling_down_cells: https://developer.openstack.org/api-guide/compute/server_concepts.html#handling-down-cells"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9fdfeff1_6501246a","line":12,"range":{"start_line":12,"start_character":79,"end_line":12,"end_character":94},"updated":"2019-02-01 21:45:26.000000000","message":"Like what I said in that server_concepts page, I\u0027d probably just drop that and link directly to the down_cell.html page.","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"ea3634a988bc000f6b0ece8c93b8fa6c02928b9d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    down cells. See `handling_down_cells`_ for more information on the missing"},{"line_number":10,"context_line":"    keys."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    .. _handling_down_cells: https://developer.openstack.org/api-guide/compute/server_concepts.html#handling-down-cells"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9fdfeff1_904a2081","line":12,"range":{"start_line":12,"start_character":79,"end_line":12,"end_character":94},"in_reply_to":"9fdfeff1_6501246a","updated":"2019-02-05 11:46:50.000000000","message":"Done","commit_id":"c6f8937cc6b3c120969ffd0b927c8516c32e85c9"}]}
