)]}'
{"doc/source/conf.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"c22b05e47d774c40fbcae8c6cbc2b8aeec1bfc3b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"              \u0027oslo_policy.sphinxpolicygen\u0027,"},{"line_number":38,"context_line":"              \u0027ext.versioned_notifications\u0027,"},{"line_number":39,"context_line":"              \u0027ext.feature_matrix\u0027,"},{"line_number":40,"context_line":"              \u0027sphinxcontrib.actdiag\u0027,"},{"line_number":41,"context_line":"              ]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_generator_config_file \u003d \u0027../../etc/nova/nova-config-generator.conf\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_9166f9c0","line":40,"updated":"2017-07-18 13:43:40.000000000","message":"Sorry for the same again, but would not like to have such tool without word wrapping,\nfor an official docs it looks very ugly.\nDo you think ditaa or plantuml can solve the problem?","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"}],"doc/source/index.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28c35b3ed7aefe4e41da6b74211cc217494e1565","unresolved":false,"context_lines":[{"line_number":249,"context_line":"   reference/notifications"},{"line_number":250,"context_line":"   reference/policy-enforcement"},{"line_number":251,"context_line":"   reference/rpc"},{"line_number":252,"context_line":"   reference/scheduling"},{"line_number":253,"context_line":"   reference/scheduler-evolution"},{"line_number":254,"context_line":"   reference/services"},{"line_number":255,"context_line":"   reference/stable-api"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f287b81_503c69c7","line":252,"updated":"2017-08-24 11:08:03.000000000","message":"In the built output where is this link, I\u0027m struggling to find it, and thus struggling to find the rendered output.","commit_id":"2c114cb3bad777779129fc3d796e276c534395a2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29f212ecf01dc492a94fd04c4358211acf99bc04","unresolved":false,"context_lines":[{"line_number":249,"context_line":"   reference/notifications"},{"line_number":250,"context_line":"   reference/policy-enforcement"},{"line_number":251,"context_line":"   reference/rpc"},{"line_number":252,"context_line":"   reference/scheduling"},{"line_number":253,"context_line":"   reference/scheduler-evolution"},{"line_number":254,"context_line":"   reference/services"},{"line_number":255,"context_line":"   reference/stable-api"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f287b81_b09eedb5","line":252,"in_reply_to":"7f287b81_503c69c7","updated":"2017-08-24 11:13:00.000000000","message":"Wait - this ToC is hidden (see line 220 above).\n\nWe should include a link to this doc on the \u0027reference/index\u0027 page","commit_id":"2c114cb3bad777779129fc3d796e276c534395a2"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"3cd61231cc2590a65c37e5c3c48e818ce6fd8edf","unresolved":false,"context_lines":[{"line_number":249,"context_line":"   reference/notifications"},{"line_number":250,"context_line":"   reference/policy-enforcement"},{"line_number":251,"context_line":"   reference/rpc"},{"line_number":252,"context_line":"   reference/scheduling"},{"line_number":253,"context_line":"   reference/scheduler-evolution"},{"line_number":254,"context_line":"   reference/services"},{"line_number":255,"context_line":"   reference/stable-api"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f287b81_e3b38d4c","line":252,"in_reply_to":"7f287b81_b09eedb5","updated":"2017-08-24 12:00:22.000000000","message":"Done","commit_id":"2c114cb3bad777779129fc3d796e276c534395a2"}],"doc/source/reference/scheduling.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d5d9abb2859f60300f496c90b8acae7f3aa248d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7f287b81_a9545fcb","updated":"2017-08-23 17:18:47.000000000","message":"This file needs to be linked into an index somewhere, or the docs job will continue to fail.","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d5d9abb2859f60300f496c90b8acae7f3aa248d8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"#. Placement returns this data structure to the Scheduler."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"#. Using the provider summaries returned from Placement, the Scheduler creates"},{"line_number":81,"context_line":"   HostState objects for each one."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"#. Since the request spec can specify one or more instances to be scheduled."},{"line_number":84,"context_line":"   The Scheduler repeats the next several steps for each requested instance."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_290e2f8d","line":81,"updated":"2017-08-23 17:18:47.000000000","message":"I think you should be more clear here that the HostState objects merge data from placement and data from elsewhere to represent the full state of the host.","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"974e3335e8e2e77bfbebfda6b04976c8db394212","unresolved":false,"context_lines":[{"line_number":78,"context_line":"#. Placement returns this data structure to the Scheduler."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"#. Using the provider summaries returned from Placement, the Scheduler creates"},{"line_number":81,"context_line":"   HostState objects for each one."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"#. Since the request spec can specify one or more instances to be scheduled."},{"line_number":84,"context_line":"   The Scheduler repeats the next several steps for each requested instance."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_35f56058","line":81,"in_reply_to":"7f287b81_290e2f8d","updated":"2017-08-23 20:29:54.000000000","message":"It just uses the UUIDs of the providers to filter the hosts; not much merging going on. But I\u0027ll clarify the language a bit.","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d5d9abb2859f60300f496c90b8acae7f3aa248d8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"#. If the claim is not successful, that indicates that another process has"},{"line_number":95,"context_line":"   consumed those resources, and the host is no longer able to satisfy the"},{"line_number":96,"context_line":"   request. In that event, the Scheduler moves on to the next host in the list,"},{"line_number":97,"context_line":"   repeating the process until it is able to successfully claim the resources."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Scheduler needs to select a number of \"alternate\" hosts. These are hosts"},{"line_number":100,"context_line":"   from the ranked list that are in the same cell as the selected host, which"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_29d18fce","line":97,"updated":"2017-08-23 17:18:47.000000000","message":"Worth mentioning generation related retries? Probably not.","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"974e3335e8e2e77bfbebfda6b04976c8db394212","unresolved":false,"context_lines":[{"line_number":94,"context_line":"#. If the claim is not successful, that indicates that another process has"},{"line_number":95,"context_line":"   consumed those resources, and the host is no longer able to satisfy the"},{"line_number":96,"context_line":"   request. In that event, the Scheduler moves on to the next host in the list,"},{"line_number":97,"context_line":"   repeating the process until it is able to successfully claim the resources."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Scheduler needs to select a number of \"alternate\" hosts. These are hosts"},{"line_number":100,"context_line":"   from the ranked list that are in the same cell as the selected host, which"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_95fd343c","line":97,"in_reply_to":"7f287b81_29d18fce","updated":"2017-08-23 20:29:54.000000000","message":"No, since this is a higher-level depiction of the flow of things through the scheduler.","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d5d9abb2859f60300f496c90b8acae7f3aa248d8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"   request. In that event, the Scheduler moves on to the next host in the list,"},{"line_number":97,"context_line":"   repeating the process until it is able to successfully claim the resources."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Scheduler needs to select a number of \"alternate\" hosts. These are hosts"},{"line_number":100,"context_line":"   from the ranked list that are in the same cell as the selected host, which"},{"line_number":101,"context_line":"   can be used by the cell conductor in the event that the build on the"},{"line_number":102,"context_line":"   selected host fails for some reason. The number of alternates is determined"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_c9d7abbf","line":99,"updated":"2017-08-23 17:18:47.000000000","message":"Once the claim is successful, the scheduler also needs...","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"974e3335e8e2e77bfbebfda6b04976c8db394212","unresolved":false,"context_lines":[{"line_number":96,"context_line":"   request. In that event, the Scheduler moves on to the next host in the list,"},{"line_number":97,"context_line":"   repeating the process until it is able to successfully claim the resources."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Scheduler needs to select a number of \"alternate\" hosts. These are hosts"},{"line_number":100,"context_line":"   from the ranked list that are in the same cell as the selected host, which"},{"line_number":101,"context_line":"   can be used by the cell conductor in the event that the build on the"},{"line_number":102,"context_line":"   selected host fails for some reason. The number of alternates is determined"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_75fac842","line":99,"in_reply_to":"7f287b81_c9d7abbf","updated":"2017-08-23 20:29:54.000000000","message":"Done","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f86559f65439b943b356b229ce6320b5e65d2efe","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"#. Scheduler creates two list structures for each instance: one for the hosts"},{"line_number":106,"context_line":"   (selected + alternates), and the other for their matching"},{"line_number":107,"context_line":"   AllocationRequests. "},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"#. To create the alternates, Scheduler determines the cell of the selected"},{"line_number":110,"context_line":"   host. It then iterates through the ranked list of HostState objects to find"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_0d282684","line":107,"range":{"start_line":107,"start_character":22,"end_line":107,"end_character":23},"updated":"2017-08-23 14:13:18.000000000","message":"nit","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"974e3335e8e2e77bfbebfda6b04976c8db394212","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"#. Scheduler creates two list structures for each instance: one for the hosts"},{"line_number":106,"context_line":"   (selected + alternates), and the other for their matching"},{"line_number":107,"context_line":"   AllocationRequests. "},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"#. To create the alternates, Scheduler determines the cell of the selected"},{"line_number":110,"context_line":"   host. It then iterates through the ranked list of HostState objects to find"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f287b81_751e48bb","line":107,"range":{"start_line":107,"start_character":22,"end_line":107,"end_character":23},"in_reply_to":"7f287b81_0d282684","updated":"2017-08-23 20:29:54.000000000","message":"D\u0027oh!","commit_id":"17634e942871b36c870001edff96c316622a6d47"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"21e88b76a47144bdce3362898199207d85544855","unresolved":false,"context_lines":[{"line_number":134,"context_line":"   building the instance on that host. Only when all alternates fail does the"},{"line_number":135,"context_line":"   build request fail."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"__ https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/placement-allocation-requests.html"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f287b81_8646177c","line":137,"range":{"start_line":137,"start_character":3,"end_line":137,"end_character":106},"updated":"2017-08-24 13:22:34.000000000","message":"This is 404","commit_id":"87701d5d3525215cd7c6660ec16f12b6540e8c06"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7b76c632fb130b74d007ef2f8b0ded1904b8ecf8","unresolved":false,"context_lines":[{"line_number":134,"context_line":"   building the instance on that host. Only when all alternates fail does the"},{"line_number":135,"context_line":"   build request fail."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"__ https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/placement-allocation-requests.html"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f287b81_c198891c","line":137,"range":{"start_line":137,"start_character":3,"end_line":137,"end_character":106},"in_reply_to":"7f287b81_8646177c","updated":"2017-08-24 13:33:12.000000000","message":"It won\u0027t be if https://review.openstack.org/#/c/471927/ ever gets approved. :)","commit_id":"87701d5d3525215cd7c6660ec16f12b6540e8c06"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2428bc235355c5d377158a770e479ce9e24f132c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        lane scheduler {"},{"line_number":42,"context_line":"            label \u003d \"Scheduler\";"},{"line_number":43,"context_line":"            send-reqs [label \u003d \"Submit resource requirements to placement\"];"},{"line_number":44,"context_line":"            create [label \u003d \"Create a HostState object for each RP returnedi"},{"line_number":45,"context_line":"              from Placement\"];"},{"line_number":46,"context_line":"            filter [label \u003d \"Filter and weigh results\"];"},{"line_number":47,"context_line":"            return-hosts [label \u003d \"Return a list of selected host +"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7f287b81_f4946246","line":44,"range":{"start_line":44,"start_character":67,"end_line":44,"end_character":76},"updated":"2017-08-24 14:55:12.000000000","message":"returned","commit_id":"8c574395b91950b0590671b5fd4dfa4fe61554bd"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2428bc235355c5d377158a770e479ce9e24f132c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"              from Placement\"];"},{"line_number":46,"context_line":"            filter [label \u003d \"Filter and weigh results\"];"},{"line_number":47,"context_line":"            return-hosts [label \u003d \"Return a list of selected host +"},{"line_number":48,"context_line":"              alternates, along with their allocations to the conductor\"];"},{"line_number":49,"context_line":"        }"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        lane placement {"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7f287b81_f43ea227","line":48,"range":{"start_line":48,"start_character":43,"end_line":48,"end_character":72},"updated":"2017-08-24 14:55:12.000000000","message":"\"...allocations, to the conductor\"  (add comma)","commit_id":"8c574395b91950b0590671b5fd4dfa4fe61554bd"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6e43dedb9404233e867546a5cc21be8d456f2c20","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    actdiag {"},{"line_number":31,"context_line":"        build-spec -\u003e send-spec -\u003e send-reqs -\u003e query -\u003e return-rps -\u003e"},{"line_number":32,"context_line":"            combine -\u003e filter -\u003e return-hosts -\u003e send-hosts;"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        lane conductor {"},{"line_number":35,"context_line":"            label \u003d \"Conductor\";"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7f287b81_d71cc814","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":19},"updated":"2017-08-24 15:17:55.000000000","message":"create","commit_id":"525a2484919d03200e12b7e659765d9c479c3b39"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ad54a799e8865d508dfacc3ac5dc80f407ef251","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            send-hosts [label \u003d \"Submit list of suitable hosts to target cell\"];"},{"line_number":39,"context_line":"        }"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        lane scheduler {"},{"line_number":42,"context_line":"            label \u003d \"Scheduler\";"},{"line_number":43,"context_line":"            send-reqs [label \u003d \"Submit resource requirements to placement\"];"},{"line_number":44,"context_line":"            create [label \u003d \"Create a HostState object for each RP returned"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f287b81_370f3638","line":41,"updated":"2017-08-28 22:07:46.000000000","message":"Why don\u0027t we have something in here for the part where the scheduler creates the allocations in Placement for the selected host?","commit_id":"002ca8c7f4f0e21f51b7e5cd1205a7ddfd9c60f3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ad54a799e8865d508dfacc3ac5dc80f407ef251","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            create [label \u003d \"Create a HostState object for each RP returned"},{"line_number":45,"context_line":"              from Placement\"];"},{"line_number":46,"context_line":"            filter [label \u003d \"Filter and weigh results\"];"},{"line_number":47,"context_line":"            return-hosts [label \u003d \"Return a list of selected host +"},{"line_number":48,"context_line":"              alternates, along with their allocations, to the conductor\"];"},{"line_number":49,"context_line":"        }"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        lane placement {"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f287b81_97202aae","line":48,"range":{"start_line":47,"start_character":35,"end_line":48,"end_character":24},"updated":"2017-08-28 22:07:46.000000000","message":"This didn\u0027t happen in Pike so this is a lie now.","commit_id":"002ca8c7f4f0e21f51b7e5cd1205a7ddfd9c60f3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ad54a799e8865d508dfacc3ac5dc80f407ef251","unresolved":false,"context_lines":[{"line_number":81,"context_line":"   the provider summaries. These HostState objects contain the information"},{"line_number":82,"context_line":"   about the host that will be used for subsequent filtering and weighing."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"#. Since the request spec can specify one or more instances to be scheduled."},{"line_number":85,"context_line":"   The Scheduler repeats the next several steps for each requested instance."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"#. Scheduler runs these HostState objects through the filters and weighers to"},{"line_number":88,"context_line":"   further refine and rank the hosts to match the request."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f287b81_4906a61e","line":85,"range":{"start_line":84,"start_character":75,"end_line":85,"end_character":6},"updated":"2017-08-28 22:07:46.000000000","message":", the","commit_id":"002ca8c7f4f0e21f51b7e5cd1205a7ddfd9c60f3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ad54a799e8865d508dfacc3ac5dc80f407ef251","unresolved":false,"context_lines":[{"line_number":87,"context_line":"#. Scheduler runs these HostState objects through the filters and weighers to"},{"line_number":88,"context_line":"   further refine and rank the hosts to match the request."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"#. Scheduler then selects the HostState at the top of the ranked list, and"},{"line_number":91,"context_line":"   determines its matching AllocationRequest from the data returned by"},{"line_number":92,"context_line":"   Placement. It uses that AllocationRequest as the body of the request sent to"},{"line_number":93,"context_line":"   Placement to claim the resources."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"#. If the claim is not successful, that indicates that another process has"},{"line_number":96,"context_line":"   consumed those resources, and the host is no longer able to satisfy the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f287b81_89292e8b","line":93,"range":{"start_line":90,"start_character":3,"end_line":93,"end_character":36},"updated":"2017-08-28 22:07:46.000000000","message":"We should have something in the image for this...","commit_id":"002ca8c7f4f0e21f51b7e5cd1205a7ddfd9c60f3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ad54a799e8865d508dfacc3ac5dc80f407ef251","unresolved":false,"context_lines":[{"line_number":105,"context_line":"   by the configuration option `scheduler.max_attempts`."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"#. Scheduler creates two list structures for each requested instance: one for"},{"line_number":108,"context_line":"   the hosts (selected + alternates), and the other for their matching"},{"line_number":109,"context_line":"   AllocationRequests."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"#. To create the alternates, Scheduler determines the cell of the selected"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f287b81_e939d2d6","line":108,"range":{"start_line":108,"start_character":25,"end_line":108,"end_character":35},"updated":"2017-08-28 22:07:46.000000000","message":"This isn\u0027t in Pike. We should either remove mention of alternates or make a note that alternates is something coming in the future.","commit_id":"002ca8c7f4f0e21f51b7e5cd1205a7ddfd9c60f3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ad54a799e8865d508dfacc3ac5dc80f407ef251","unresolved":false,"context_lines":[{"line_number":121,"context_line":"   super conductor, with the first element of the tuple being a list of lists"},{"line_number":122,"context_line":"   of hosts, and the second being a list of lists of the AllocationRequests."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"#. Scheduler returns that 2-tuple to the super conductor."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"#. For each requested instance, the super conductor determines the cell of the"},{"line_number":127,"context_line":"   selected host. It then sends a 2-tuple of ([hosts], [AllocationRequests])"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f287b81_6953a218","line":124,"range":{"start_line":124,"start_character":3,"end_line":124,"end_character":57},"updated":"2017-08-28 22:07:46.000000000","message":"We don\u0027t know the format of what we\u0027re going to return, be it a 2-tuple (probably not) or something else.","commit_id":"002ca8c7f4f0e21f51b7e5cd1205a7ddfd9c60f3"}],"doc/source/scheduling.rst":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a562166954bbc5843e1d83c9980f2f3ee29099cf","unresolved":false,"context_lines":[{"line_number":15,"context_line":" Scheduling"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This is an overview of how scheduling works in nova from Pike onwards. For"},{"line_number":19,"context_line":"information on the scheduler itself, refer to :doc:`filter_scheduler`. For an"},{"line_number":20,"context_line":"overview of why we\u0027ve changed how the scheduler works, refer to"},{"line_number":21,"context_line":":doc:`scheduler_evolution`."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_ea93aba2","line":18,"updated":"2017-06-22 14:46:34.000000000","message":"s/nova/Nova/g","commit_id":"b9e88925f535a4ecf199b40863d0442649f58444"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"72fe8f64bebec4a59f44ae7224b28a5512f21485","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        lane conductor {"},{"line_number":35,"context_line":"            label \u003d \"Conductor\";"},{"line_number":36,"context_line":"            build-spec [label \u003d \"Build request spec object\"];"},{"line_number":37,"context_line":"            send-spec [label \u003d \"Submit request spec to scheduler\"];"},{"line_number":38,"context_line":"            send-hosts [label \u003d \"Submit list of suitable hosts to target cell\"];"},{"line_number":39,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_6dd0d0ca","line":36,"updated":"2017-06-20 19:49:15.000000000","message":"I wonder if there\u0027s a way to make the labels wrap on whole words. It\u0027s a nit though, this is certainly better than no diagram.","commit_id":"b9e88925f535a4ecf199b40863d0442649f58444"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"944d31b251149faac1e0c0f8b51475e0137e9654","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        lane conductor {"},{"line_number":35,"context_line":"            label \u003d \"Conductor\";"},{"line_number":36,"context_line":"            build-spec [label \u003d \"Build request spec object\"];"},{"line_number":37,"context_line":"            send-spec [label \u003d \"Submit request spec to scheduler\"];"},{"line_number":38,"context_line":"            send-hosts [label \u003d \"Submit list of suitable hosts to target cell\"];"},{"line_number":39,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_3bc20487","line":36,"in_reply_to":"5f201791_6dd0d0ca","updated":"2017-06-21 10:37:29.000000000","message":"Unfortunately not. This appears to be as much the fault of the SVG spec(s) as the extension: SVG doesn\u0027t support text wrapping in elements by default (and has no intention to do so [1][2]) so the extension has added a crude implementation itself.\n\nI\u0027ve submitted a PR to the project to resolve this, but looking at existing PRs it is unlikely to get merged anytime soon.\n\nI\u0027m including a forked version of the plugin inline to help with this.\n\n[1] https://www.w3.org/Graphics/SVG/WG/wiki/SVG2_Requirements_Input#the_textArea_element\n[2] https://bugzilla.mozilla.org/show_bug.cgi?id\u003d413360","commit_id":"b9e88925f535a4ecf199b40863d0442649f58444"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a0fc0da30542b74c52efe07b47f6f7041ce57afd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        lane placement {"},{"line_number":52,"context_line":"            label \u003d \"Placement\";"},{"line_number":53,"context_line":"            query [label \u003d \"Query to determine the root RPs to satisfy"},{"line_number":54,"context_line":"              requirements\"];"},{"line_number":55,"context_line":"            construct [label \u003d \"Construct data structure for each root RP\"];"},{"line_number":56,"context_line":"            return-rps [label \u003d \"Return list of suitable hosts to scheduler\"];"},{"line_number":57,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_52ec30f2","line":54,"updated":"2017-06-23 14:25:03.000000000","message":"as mentioned in my response to Ed on the ML, the placement service currently doesn\u0027t have support for nested resource providers and therefore there\u0027s not yet any concept of root providers.\n\nIf you changed the above from \"root RPs\" to \"RPs representing compute nodes\", that would be accurate. The things the placement API currently does *not* return are *shared* resource providers.","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f0d9f3fab0113ad79c4fab505425c2b28f0f2aa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        lane placement {"},{"line_number":52,"context_line":"            label \u003d \"Placement\";"},{"line_number":53,"context_line":"            query [label \u003d \"Query to determine the root RPs to satisfy"},{"line_number":54,"context_line":"              requirements\"];"},{"line_number":55,"context_line":"            construct [label \u003d \"Construct data structure for each root RP\"];"},{"line_number":56,"context_line":"            return-rps [label \u003d \"Return list of suitable hosts to scheduler\"];"},{"line_number":57,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_80b58980","line":54,"in_reply_to":"5f201791_52ec30f2","updated":"2017-06-27 08:27:52.000000000","message":"Done","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a0fc0da30542b74c52efe07b47f6f7041ce57afd","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            label \u003d \"Placement\";"},{"line_number":53,"context_line":"            query [label \u003d \"Query to determine the root RPs to satisfy"},{"line_number":54,"context_line":"              requirements\"];"},{"line_number":55,"context_line":"            construct [label \u003d \"Construct data structure for each root RP\"];"},{"line_number":56,"context_line":"            return-rps [label \u003d \"Return list of suitable hosts to scheduler\"];"},{"line_number":57,"context_line":"        }"},{"line_number":58,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_32a2d4af","line":55,"updated":"2017-06-23 14:25:03.000000000","message":"You should remove this box. It\u0027s not relevant to the discussion.","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f0d9f3fab0113ad79c4fab505425c2b28f0f2aa","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            label \u003d \"Placement\";"},{"line_number":53,"context_line":"            query [label \u003d \"Query to determine the root RPs to satisfy"},{"line_number":54,"context_line":"              requirements\"];"},{"line_number":55,"context_line":"            construct [label \u003d \"Construct data structure for each root RP\"];"},{"line_number":56,"context_line":"            return-rps [label \u003d \"Return list of suitable hosts to scheduler\"];"},{"line_number":57,"context_line":"        }"},{"line_number":58,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_2087d5b7","line":55,"in_reply_to":"5f201791_32a2d4af","updated":"2017-06-27 08:27:52.000000000","message":"Done","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a0fc0da30542b74c52efe07b47f6f7041ce57afd","unresolved":false,"context_lines":[{"line_number":87,"context_line":"#. Scheduler then creates a list of N of these data structures, with the first"},{"line_number":88,"context_line":"   being the data for the selected host, and the rest being data structures"},{"line_number":89,"context_line":"   representing alternates consisting of the next hosts in the ranked list that"},{"line_number":90,"context_line":"   are in the same cell as the selected host."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"#. Scheduler returns that list to conductor."},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_d287200f","line":90,"updated":"2017-06-23 14:25:03.000000000","message":"We don\u0027t currently do the above. This is a proposed solution to handle retries within a cell.","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f0d9f3fab0113ad79c4fab505425c2b28f0f2aa","unresolved":false,"context_lines":[{"line_number":87,"context_line":"#. Scheduler then creates a list of N of these data structures, with the first"},{"line_number":88,"context_line":"   being the data for the selected host, and the rest being data structures"},{"line_number":89,"context_line":"   representing alternates consisting of the next hosts in the ranked list that"},{"line_number":90,"context_line":"   are in the same cell as the selected host."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"#. Scheduler returns that list to conductor."},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_00a97922","line":90,"in_reply_to":"5f201791_d287200f","updated":"2017-06-27 08:27:52.000000000","message":"Done","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a0fc0da30542b74c52efe07b47f6f7041ce57afd","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"#. Target cell tries to build the instance on the selected host. If it fails,"},{"line_number":98,"context_line":"   it uses the allocation data in the data structure to unclaim the resources"},{"line_number":99,"context_line":"   for the selected host, and tries to claim the resources for the next host in"},{"line_number":100,"context_line":"   the list using its allocation data. It then tries to build the instance on"},{"line_number":101,"context_line":"   the next host in the list of alternates. Only when all alternates fail does"},{"line_number":102,"context_line":"   the build request fail."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_f299fc6d","line":100,"range":{"start_line":99,"start_character":26,"end_line":100,"end_character":38},"updated":"2017-06-23 14:25:03.000000000","message":"This is not actually part of the proposed solution. It\u0027s a possible implementation detail but we haven\u0027t really decided to do this yet, if at all.","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f0d9f3fab0113ad79c4fab505425c2b28f0f2aa","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"#. Target cell tries to build the instance on the selected host. If it fails,"},{"line_number":98,"context_line":"   it uses the allocation data in the data structure to unclaim the resources"},{"line_number":99,"context_line":"   for the selected host, and tries to claim the resources for the next host in"},{"line_number":100,"context_line":"   the list using its allocation data. It then tries to build the instance on"},{"line_number":101,"context_line":"   the next host in the list of alternates. Only when all alternates fail does"},{"line_number":102,"context_line":"   the build request fail."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f201791_4061b104","line":100,"range":{"start_line":99,"start_character":26,"end_line":100,"end_character":38},"in_reply_to":"5f201791_f299fc6d","updated":"2017-06-27 08:27:52.000000000","message":"I wasn\u0027t sure if you meant the entire retry aspect was invalid, or just this sentence. I\u0027ve erred on the side of caution and removed just the sentence","commit_id":"01d8495dbfd0c92b6853cc66a73ff26516454ec7"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"295b53eea15e96b7180f3812dc1e14d13ca1906f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            label \u003d \"Placement\";"},{"line_number":53,"context_line":"            query [label \u003d \"Query to determine the RPs representing compute"},{"line_number":54,"context_line":"              nodes to satisfy requirements\"];"},{"line_number":55,"context_line":"            return-rps [label \u003d \"Return list of suitable hosts to scheduler\"];"},{"line_number":56,"context_line":"        }"},{"line_number":57,"context_line":"    }"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f1a1f67_e7c3fc36","line":55,"updated":"2017-07-19 17:49:31.000000000","message":"s/hosts/allocations and resource providers/\n\nperhaps?","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"295b53eea15e96b7180f3812dc1e14d13ca1906f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"#. Scheduler sends those requirements to placement."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"#. Placement runs a query to determine the root RPs that can satisfy those"},{"line_number":69,"context_line":"   requirements."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Placement then constructs a data structure for each root provider as"},{"line_number":72,"context_line":"   documented in the `spec`__."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f1a1f67_e733fcf4","line":69,"updated":"2017-07-19 17:49:31.000000000","message":"this is only hand wavingly correct and it depends greatly on whether you are making reference to how things were at the start of pike versus how they will be at the end of pike.\n\nAlso, to what extent do we want to be talking about what placement is doing or what nova-scheduler is doing. Depending on the point of view of level of detail desired it might be easier to say that placement just returns some resource providers in a format that you describe. In one step instead of three.","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"da749311b83b60486d3908373a60fcf19cb9c69a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"#. Scheduler sends those requirements to placement."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"#. Placement runs a query to determine the root RPs that can satisfy those"},{"line_number":69,"context_line":"   requirements."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Placement then constructs a data structure for each root provider as"},{"line_number":72,"context_line":"   documented in the `spec`__."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f287b81_dc99b61f","line":69,"in_reply_to":"1f1a1f67_e733fcf4","updated":"2017-08-23 13:01:34.000000000","message":"Given that this is documenting the scheduler, I think this is the correct amount of detail.","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"c22b05e47d774c40fbcae8c6cbc2b8aeec1bfc3b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"   requirements."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Placement then constructs a data structure for each root provider as"},{"line_number":72,"context_line":"   documented in the `spec`__."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"#. Placement returns a number of these data structures."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f1a1f67_512aa12b","line":72,"updated":"2017-07-18 13:43:40.000000000","message":"Some future spec?","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"295b53eea15e96b7180f3812dc1e14d13ca1906f","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"#. Scheduler then runs this data through the filters and weighters. No"},{"line_number":77,"context_line":"   HostState objects are required, as the data structures will contain all the"},{"line_number":78,"context_line":"   information that scheduler will need."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"#. Scheduler then selects the data structure at the top of the ranked list."},{"line_number":81,"context_line":"   Inside that structure is a dict of the allocation data that scheduler will"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f1a1f67_07cdd883","line":78,"updated":"2017-07-19 17:49:31.000000000","message":"This is not true. The data returned from placement provides some but not all the information that a HostState might want, but HostStates are still used. The provider_summaries from the placement api provide the uuids to limit the HostStates in any given scheduling decision.\n\nSadly there\u0027s just too much funky info about the state of hosts that some people want to filter or weigh that has no place in placement.\n\nIt\u0027s more right in the diagram above.","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"da749311b83b60486d3908373a60fcf19cb9c69a","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"#. Scheduler then runs this data through the filters and weighters. No"},{"line_number":77,"context_line":"   HostState objects are required, as the data structures will contain all the"},{"line_number":78,"context_line":"   information that scheduler will need."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"#. Scheduler then selects the data structure at the top of the ranked list."},{"line_number":81,"context_line":"   Inside that structure is a dict of the allocation data that scheduler will"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f287b81_7cb1a28f","line":78,"in_reply_to":"1f1a1f67_07cdd883","updated":"2017-08-23 13:01:34.000000000","message":"I\u0027m sure this was taken from my original email, which was written at a time when the design being proposed eliminated HostState objects. As that proposal is no longer being considered (at least in Pike/Queens timeframe), this should be changed.","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"295b53eea15e96b7180f3812dc1e14d13ca1906f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"   next data structure in the list is chosen, and repeated until a claim"},{"line_number":84,"context_line":"   succeeds."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"#. Scheduler returns that list to conductor."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"#. Conductor determines the cell of the selected host, and sends that list to"},{"line_number":89,"context_line":"   the target cell."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f1a1f67_87a688c0","line":86,"updated":"2017-07-19 17:49:31.000000000","message":"Which list?\n\nThe list is sends to the conductor is a list of allocations that are all from the same cell as the one that was claimed.","commit_id":"dadcb5d8ce95dcca492650ea9af7bbccb5db1515"}]}
