)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d085cf4d469622aa07b1323200d0d56cd0b0073e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stacking/spreading and affinity/anti-affinity patterns. Curiously"},{"line_number":11,"context_line":"enough, however, there is no way to configure a stack or spread policy"},{"line_number":12,"context_line":"of CPUs. Add one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I90ee8a2081c2a0465441a8d81d161f4887b4e1fb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a98d1f4_8216da49","line":13,"updated":"2016-10-03 20:11:33.000000000","message":"I don\u0027t see any blueprint mentioning that ?\n\nThe real concern I see with that change is that we\u0027re working on using the placement API for providing the best destinations related to the existing resources (CPU, memory, disk). While it\u0027s fine to merge that one, it would mean that it\u0027s not waiting for the scheduler using the placement API, which could be a bit sad. The real issue is that it\u0027s really easy to add a custom weighter out-of-tree without needing to add it in the Nova tree, so that\u0027s not really needed, see ?","commit_id":"0f7f9cc0d81365cbbb57f379b1136871d0e0bdd2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5ff234c94aa6fb638e9c96108aac6da2726aad12","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stacking/spreading and affinity/anti-affinity patterns. Curiously"},{"line_number":11,"context_line":"enough, however, there is no way to configure a stack or spread policy"},{"line_number":12,"context_line":"of CPUs. Add one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I90ee8a2081c2a0465441a8d81d161f4887b4e1fb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a98d1f4_560f142e","line":13,"in_reply_to":"3a98d1f4_8216da49","updated":"2016-10-04 12:58:39.000000000","message":"\u003e I don\u0027t see any blueprint mentioning that ?\n\nAdded the link.\n\n \u003e The real concern I see with that change is that we\u0027re working on using the placement API for providing the best destinations related to the existing resources (CPU, memory, disk). While it\u0027s fine to merge that one, it would mean that it\u0027s not waiting for the scheduler using the placement API, which could be a bit sad. The real issue is that it\u0027s really easy to add a custom weighter out-of-tree without needing to add it in the Nova tree, so that\u0027s not really needed, see ?\n\nI did this fairly quickly while working on the PCI-NUMA filter here. The reason for doing this is that it seemed like a filter that had a clear use case and one I really expected to see there already. If you don\u0027t think it\u0027s as useful as I think it is, then I\u0027m fine to abandon this :)","commit_id":"0f7f9cc0d81365cbbb57f379b1136871d0e0bdd2"}],"doc/source/user/filter-scheduler.rst":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"b5145868ea8c4c78f9897975972ebf759080a7cb","unresolved":false,"context_lines":[{"line_number":493,"context_line":".. |AggregateMultiTenancyIsolation| replace:: :class:`AggregateMultiTenancyIsolation \u003cnova.scheduler.filters.aggregate_multitenancy_isolation.AggregateMultiTenancyIsolation\u003e`"},{"line_number":494,"context_line":".. |NUMATopologyFilter| replace:: :class:`NUMATopologyFilter \u003cnova.scheduler.filters.numa_topology_filter.NUMATopologyFilter\u003e`"},{"line_number":495,"context_line":".. |RAMWeigher| replace:: :class:`RAMWeigher \u003cnova.scheduler.weights.ram.RAMWeigher\u003e`"},{"line_number":496,"context_line":".. |CPUWeigher| replace:: :class:`CPUWeigher \u003cnova.scheduler.weights.ram.CPUWeigher\u003e`"},{"line_number":497,"context_line":".. |AggregateImagePropertiesIsolation| replace:: :class:`AggregateImagePropertiesIsolation \u003cnova.scheduler.filters.aggregate_image_properties_isolation.AggregateImagePropertiesIsolation\u003e`"},{"line_number":498,"context_line":".. |MetricsFilter| replace:: :class:`MetricsFilter \u003cnova.scheduler.filters.metrics_filter.MetricsFilter\u003e`"},{"line_number":499,"context_line":".. |MetricsWeigher| replace:: :class:`MetricsWeigher \u003cnova.scheduler.weights.metrics.MetricsWeigher\u003e`"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_d1b16de3","line":496,"range":{"start_line":496,"start_character":69,"end_line":496,"end_character":72},"updated":"2018-03-09 06:05:40.000000000","message":"cpu","commit_id":"193c1388493f96d4a72d262f76be0aaedc29d215"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"421fcdecf95baf8abb5639c676e53d608253c08b","unresolved":false,"context_lines":[{"line_number":493,"context_line":".. |AggregateMultiTenancyIsolation| replace:: :class:`AggregateMultiTenancyIsolation \u003cnova.scheduler.filters.aggregate_multitenancy_isolation.AggregateMultiTenancyIsolation\u003e`"},{"line_number":494,"context_line":".. |NUMATopologyFilter| replace:: :class:`NUMATopologyFilter \u003cnova.scheduler.filters.numa_topology_filter.NUMATopologyFilter\u003e`"},{"line_number":495,"context_line":".. |RAMWeigher| replace:: :class:`RAMWeigher \u003cnova.scheduler.weights.ram.RAMWeigher\u003e`"},{"line_number":496,"context_line":".. |CPUWeigher| replace:: :class:`CPUWeigher \u003cnova.scheduler.weights.ram.CPUWeigher\u003e`"},{"line_number":497,"context_line":".. |AggregateImagePropertiesIsolation| replace:: :class:`AggregateImagePropertiesIsolation \u003cnova.scheduler.filters.aggregate_image_properties_isolation.AggregateImagePropertiesIsolation\u003e`"},{"line_number":498,"context_line":".. |MetricsFilter| replace:: :class:`MetricsFilter \u003cnova.scheduler.filters.metrics_filter.MetricsFilter\u003e`"},{"line_number":499,"context_line":".. |MetricsWeigher| replace:: :class:`MetricsWeigher \u003cnova.scheduler.weights.metrics.MetricsWeigher\u003e`"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_27950641","line":496,"range":{"start_line":496,"start_character":69,"end_line":496,"end_character":72},"in_reply_to":"df7087c5_d1b16de3","updated":"2018-03-09 09:22:13.000000000","message":"Done","commit_id":"193c1388493f96d4a72d262f76be0aaedc29d215"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ff535b51f849505608c0f4c6c11502c8cd7abc2d","unresolved":false,"context_lines":[{"line_number":401,"context_line":"  host with least RAM available will win (useful for stacking hosts, instead"},{"line_number":402,"context_line":"  of spreading)."},{"line_number":403,"context_line":"* |CPUWeigher| Compute weight based on available vCPUs on the compute node."},{"line_number":404,"context_line":"  Sort with the largest weight winning. If the multiplier is negative, the"},{"line_number":405,"context_line":"  host with least CPUs available will win (useful for stacking hosts, instead"},{"line_number":406,"context_line":"  of spreading)."},{"line_number":407,"context_line":"* |DiskWeigher| Hosts are weighted and sorted by free disk space with the largest"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_21bf92aa","line":404,"range":{"start_line":404,"start_character":47,"end_line":404,"end_character":57},"updated":"2018-03-15 21:53:55.000000000","message":"Call out the config option here so the operator doesn\u0027t have to hunt for it.","commit_id":"3d088bb18a33f75028844b5df6e3fda122a8b2b3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d85c22f1b360b7288489f383edb512da8a2d5a9","unresolved":false,"context_lines":[{"line_number":401,"context_line":"  host with least RAM available will win (useful for stacking hosts, instead"},{"line_number":402,"context_line":"  of spreading)."},{"line_number":403,"context_line":"* |CPUWeigher| Compute weight based on available vCPUs on the compute node."},{"line_number":404,"context_line":"  Sort with the largest weight winning. If the multiplier is negative, the"},{"line_number":405,"context_line":"  host with least CPUs available will win (useful for stacking hosts, instead"},{"line_number":406,"context_line":"  of spreading)."},{"line_number":407,"context_line":"* |DiskWeigher| Hosts are weighted and sorted by free disk space with the largest"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_706f36c5","line":404,"range":{"start_line":404,"start_character":47,"end_line":404,"end_character":57},"in_reply_to":"df7087c5_21bf92aa","updated":"2018-03-20 15:52:24.000000000","message":"Done","commit_id":"3d088bb18a33f75028844b5df6e3fda122a8b2b3"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2385c9284207bbef9c277663fbfbf937fea4739a","unresolved":false,"context_lines":[{"line_number":407,"context_line":"  host with least CPUs available will win (useful for stacking hosts, instead"},{"line_number":408,"context_line":"  of spreading)."},{"line_number":409,"context_line":"* |DiskWeigher| Hosts are weighted and sorted by free disk space with the largest"},{"line_number":410,"context_line":"  weight winning.  If the multiplier is negative, the host with less disk space available"},{"line_number":411,"context_line":"  will win (useful for stacking hosts, instead of spreading)."},{"line_number":412,"context_line":"* |MetricsWeigher| This weigher can compute the weight based on the compute node"},{"line_number":413,"context_line":"  host\u0027s various metrics. The to-be weighed metrics and their weighing ratio"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_4e1b1080","line":410,"range":{"start_line":410,"start_character":26,"end_line":410,"end_character":36},"updated":"2018-03-30 07:26:42.000000000","message":"At least for Disk case, could you use the same terminology with RAM and CPU cases?","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"51a260cdab3929efe4ca16f72bebe857a9bb0dfe","unresolved":false,"context_lines":[{"line_number":398,"context_line":""},{"line_number":399,"context_line":"* |RAMWeigher| Compute weight based on available RAM on the compute node."},{"line_number":400,"context_line":"  Sort with the largest weight winning. If the multiplier,"},{"line_number":401,"context_line":"  :oslo.config:opt:`filter_scheduler.ram_weight_multiplier`, is negative, the"},{"line_number":402,"context_line":"  host with least RAM available will win (useful for stacking hosts, instead"},{"line_number":403,"context_line":"  of spreading)."},{"line_number":404,"context_line":"* |CPUWeigher| Compute weight based on available vCPUs on the compute node."}],"source_content_type":"text/x-rst","patch_set":11,"id":"9f6a8fd7_0aa11e96","line":401,"range":{"start_line":401,"start_character":15,"end_line":401,"end_character":18},"updated":"2018-04-26 21:10:52.000000000","message":"option\n\nbug 1767192","commit_id":"67f52ab36df0f029d745851fc45607736c03e474"}],"nova/conf/scheduler.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ff535b51f849505608c0f4c6c11502c8cd7abc2d","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        default\u003d1.0,"},{"line_number":393,"context_line":"        deprecated_group\u003d\"DEFAULT\","},{"line_number":394,"context_line":"        help\u003d\"\"\""},{"line_number":395,"context_line":"RAM weight multipler ratio."},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"This option determines how hosts with more or less available RAM are weighed. A"},{"line_number":398,"context_line":"positive value will result in the scheduler preferring hosts with more"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_81e53ede","line":395,"range":{"start_line":395,"start_character":0,"end_line":395,"end_character":3},"updated":"2018-03-15 21:53:55.000000000","message":"unrelated....","commit_id":"3d088bb18a33f75028844b5df6e3fda122a8b2b3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"024330eb477ae3ed39a072e294920c8263605180","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_70058910","line":427,"updated":"2018-03-30 13:37:15.000000000","message":"To have this working as expected, all hosts should have the same multiplier, so what about to use a list of string options?\n\n  [\u0027spreading\u0027, \u0027stacking\u0027]","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"976e3180ab3e4c57b4745921f4a9b6e8808fcf02","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_b2b65fd9","line":427,"in_reply_to":"9f6a8fd7_b22c1f48","updated":"2018-04-16 16:12:10.000000000","message":"I don\u0027t think a TODO note is necessary. And you don\u0027t have to hack olso: You can just convert the string value into -1 or +1 in method \u0027def weight_multiplier()\u0027.\n\nI\u0027m not going to push using a list of options [\u0027spreading\u0027, \u0027stacking\u0027], I understand you want to stay coherent and we could probably think of that in future and so update all the weighter in same time.","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e4cd9a797246cf188435d0e12ba058c9d154b0f1","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_3fcc5960","line":427,"in_reply_to":"bf659307_04efccb0","updated":"2018-04-05 13:36:22.000000000","message":"Basically instead of a FloatOpt using a ListOption with a limited choice.","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5f14c3db28ebaa41a7a38091c7b1e33a74eaa4eb","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_333951d6","line":427,"in_reply_to":"bf659307_1fb2194a","updated":"2018-04-12 15:45:35.000000000","message":"Yeah I understand you want to stay coherent. but don\u0027t you think we could also change the RAM/DISK weighter? Perhaps we could deprecate ram_weight_multiplier and disk_weight_multiplier to introduce a new and more elegant options?","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7759c2d807670ec04b368acc2b07cdd803154ed5","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_74011606","line":427,"in_reply_to":"bf659307_2550c7d4","updated":"2018-04-11 14:56:32.000000000","message":"Yes that is my thinking","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"88f41cc0d0070b9bec53097026a7796989cf865e","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_b22c1f48","line":427,"in_reply_to":"bf659307_333951d6","updated":"2018-04-16 15:54:39.000000000","message":"\u003e Yeah I understand you want to stay coherent. but don\u0027t you think we\n \u003e could also change the RAM/DISK weighter? Perhaps we could deprecate\n \u003e ram_weight_multiplier and disk_weight_multiplier to introduce a new\n \u003e and more elegant options?\n\nI can look into this but it will require some oslo.config hacks and I\u0027d rather do it separately. Would a TODO to investigate this be suitable?","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6eff5780d0ad0f8509fffaa62aafb8869f14a2ac","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_2550c7d4","line":427,"in_reply_to":"bf659307_3fcc5960","updated":"2018-04-05 16:44:11.000000000","message":"\u003e Basically instead of a FloatOpt using a ListOption with a limited\n \u003e choice.\n\nNo no, I mean this bit\n\n \u003e To have this working as expected, \n\nI guess you\u0027re suggesting this is really a binary option (1.0 or -1.0) so float is overkill. It would technically work though, right?","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9a3781685c7a85962557e3f696f01255d2c03370","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_04efccb0","line":427,"in_reply_to":"bf659307_70058910","updated":"2018-04-05 12:51:24.000000000","message":"Could you explain this a little more?","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0d8a9bee4be9f53702289c203ae2662db5bc4ea7","unresolved":false,"context_lines":[{"line_number":424,"context_line":"  ratio for this weigher."},{"line_number":425,"context_line":"\"\"\"),"},{"line_number":426,"context_line":"    cfg.FloatOpt(\"cpu_weight_multiplier\","},{"line_number":427,"context_line":"         default\u003d1.0,"},{"line_number":428,"context_line":"         help\u003d\"\"\""},{"line_number":429,"context_line":"CPU weight multiplier ratio."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_1fb2194a","line":427,"in_reply_to":"bf659307_74011606","updated":"2018-04-12 11:26:46.000000000","message":"\u003e Yes that is my thinking\n\nIf that\u0027s the case, I would prefer to keep it this way because it\u0027s consistent with the other multipliers we have here (e.g. RAM) and will be easier for operators to reason about. If we change this then we should change them all and I don\u0027t think that\u0027s worth the effort. Do you agree?","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b9e9175d8dc4ceb7fc36f53e7f50dafae58e7737","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        default\u003d1.0,"},{"line_number":432,"context_line":"        deprecated_group\u003d\"DEFAULT\","},{"line_number":433,"context_line":"        help\u003d\"\"\""},{"line_number":434,"context_line":"RAM weight multipler ratio."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"This option determines how hosts with more or less available RAM are weighed. A"},{"line_number":437,"context_line":"positive value will result in the scheduler preferring hosts with more"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_5111caab","line":434,"range":{"start_line":434,"start_character":0,"end_line":434,"end_character":3},"updated":"2018-04-18 12:58:36.000000000","message":"nit: unrelated fix","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ca3b4c0604755080fb894f871075ac1ac034d4","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        default\u003d1.0,"},{"line_number":432,"context_line":"        deprecated_group\u003d\"DEFAULT\","},{"line_number":433,"context_line":"        help\u003d\"\"\""},{"line_number":434,"context_line":"RAM weight multipler ratio."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"This option determines how hosts with more or less available RAM are weighed. A"},{"line_number":437,"context_line":"positive value will result in the scheduler preferring hosts with more"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_f7da4ee7","line":434,"range":{"start_line":434,"start_character":0,"end_line":434,"end_character":3},"in_reply_to":"9f6a8fd7_5111caab","updated":"2018-04-23 14:50:38.000000000","message":"If it\u0027s OK, I\u0027ll keep this because (a) no merge conflicts and (b) I really don\u0027t want to submit a separate patch for this :)","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b9e9175d8dc4ceb7fc36f53e7f50dafae58e7737","unresolved":false,"context_lines":[{"line_number":460,"context_line":"rather than spreading."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"This option is only used by the FilterScheduler and its subclasses; if you use"},{"line_number":463,"context_line":"a different scheduler, this option has no effect. Also note that this setting"},{"line_number":464,"context_line":"only affects scheduling if the \u0027cpu\u0027 weigher is enabled."},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"Possible values:"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_91652248","line":464,"range":{"start_line":463,"start_character":49,"end_line":464,"end_character":56},"updated":"2018-04-18 12:58:36.000000000","message":"you could use the \"Related options\" section in the docstring for saying which conf opt is related.","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ca3b4c0604755080fb894f871075ac1ac034d4","unresolved":false,"context_lines":[{"line_number":460,"context_line":"rather than spreading."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"This option is only used by the FilterScheduler and its subclasses; if you use"},{"line_number":463,"context_line":"a different scheduler, this option has no effect. Also note that this setting"},{"line_number":464,"context_line":"only affects scheduling if the \u0027cpu\u0027 weigher is enabled."},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"Possible values:"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_77f07e68","line":464,"range":{"start_line":463,"start_character":49,"end_line":464,"end_character":56},"in_reply_to":"9f6a8fd7_91652248","updated":"2018-04-23 14:50:38.000000000","message":"Done","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b9e9175d8dc4ceb7fc36f53e7f50dafae58e7737","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":223,"context_line":"        # TODO(stephenfin): When we remove AggregateCoreFilter, we should"},{"line_number":224,"context_line":"        # multiply the below by cpu_allocation_ratio to avoid having to do this"},{"line_number":225,"context_line":"        # in multiple places through the code"},{"line_number":226,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":227,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":228,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_9198c21b","line":225,"updated":"2018-04-18 12:58:36.000000000","message":"well, not sure it\u0027s a short-term one and that looks to me unrelated to that feature.","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ca3b4c0604755080fb894f871075ac1ac034d4","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":223,"context_line":"        # TODO(stephenfin): When we remove AggregateCoreFilter, we should"},{"line_number":224,"context_line":"        # multiply the below by cpu_allocation_ratio to avoid having to do this"},{"line_number":225,"context_line":"        # in multiple places through the code"},{"line_number":226,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":227,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":228,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_9a2bf780","line":225,"in_reply_to":"9f6a8fd7_9198c21b","updated":"2018-04-23 14:50:38.000000000","message":"Done","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"}],"nova/scheduler/weights/cpu.py":[{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"9aae1f0ab2e70be96650422800915b6392657f09","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_13297fe4","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"updated":"2018-04-14 07:02:16.000000000","message":"vcpus_free \u003d (host_state.vcpus_total * host_state.cpu_allocation_ratio - host_state.vcpus_used)","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a6d451176a4b1b388ba4cd3d04b12c778d6cd59","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_2be2c304","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"in_reply_to":"9f6a8fd7_555fad40","updated":"2018-04-17 13:06:06.000000000","message":"Done","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"340bf7af6c77c50465eec777b7f9086fea4a1d16","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_555fad40","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"in_reply_to":"9f6a8fd7_7570b173","updated":"2018-04-16 16:48:25.000000000","message":"\u003e And this weigher code is currently matching how the resource\n \u003e tracker reports the resource view:\n \u003e \n \u003e https://github.com/openstack/nova/blob/fb0b785169e5e422b06e82f2eb58e68f6d2008b3/nova/compute/resource_tracker.py#L786\n\nSeems like this could be wrong. This log was reporting that I had 22 free cores when it should have been reporting 22 * 16.0. When I booted 3 * 10 core instances, it reported that I have -8 cores. I\u0027ll work on fixing both of these shortly.\n\n\u003e We don\u0027t really need that, just using a list of options (binary) as I suggested [0] is enough.\n\nI see where your coming from but I want to keep this (downstream) backportable and consistent with the other options. I could add a \u0027choice\u0027 attribute but even that is inconsistent. Let\u0027s bring this up in the weekly meeting this week and see what others think.","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4f554d20e7890275ba193d503d3db3cd44c295d6","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_95dc6547","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"in_reply_to":"9f6a8fd7_7570b173","updated":"2018-04-16 16:26:05.000000000","message":"The claim code is what ultimately matters at least for the resource tracker:\n\nhttps://github.com/openstack/nova/blob/fb0b785169e5e422b06e82f2eb58e68f6d2008b3/nova/compute/claims.py#L185\n\nBut note that if you\u0027re using placement, you don\u0027t need to enable the CoreFilter which means the vcpus limit isn\u0027t passded to the compute service and the vcpu claim isn\u0027t even made.\n\nhttps://github.com/openstack/nova/blob/fb0b785169e5e422b06e82f2eb58e68f6d2008b3/nova/compute/claims.py#L144","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"25b1ac0c6578d8609c31b96d31d7a56db6a7767c","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_7570b173","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"in_reply_to":"9f6a8fd7_9508e528","updated":"2018-04-16 16:23:14.000000000","message":"I guess the resource tracker does account for reserved CPUs in the compute node vcpus_used field:\n\nhttps://github.com/openstack/nova/blob/fb0b785169e5e422b06e82f2eb58e68f6d2008b3/nova/compute/resource_tracker.py#L1155\n\nAnd it\u0027s updated per instance usage and virt driver overhead here:\n\nhttps://github.com/openstack/nova/blob/fb0b785169e5e422b06e82f2eb58e68f6d2008b3/nova/compute/resource_tracker.py#L935\n\nAnd this weigher code is currently matching how the resource tracker reports the resource view:\n\nhttps://github.com/openstack/nova/blob/fb0b785169e5e422b06e82f2eb58e68f6d2008b3/nova/compute/resource_tracker.py#L786","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"976e3180ab3e4c57b4745921f4a9b6e8808fcf02","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_32732f18","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"in_reply_to":"bf659307_13297fe4","updated":"2018-04-16 16:12:10.000000000","message":"Seems to be a good point. We should take into account the CPU allocation ratio. That is also a good reason to avoid using a float for the config option introduced. We don\u0027t really need that, just using a list of options (binary) as I suggested [0] is enough.\n\n[0] https://review.openstack.org/#/c/379525/9/nova/conf/scheduler.py","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"00fc66d5977e3e8ccf79ea513a4472b0b013e6de","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d host_state.vcpus_total - host_state.vcpus_used"},{"line_number":40,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_9508e528","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":67},"in_reply_to":"bf659307_13297fe4","updated":"2018-04-16 16:15:31.000000000","message":"The CoreFilter takes into account the allocation ratio too, so there does appear to be precedent.\n\nAlso, shouldn\u0027t this account for CONF.reserved_host_cpus? But I don\u0027t see getting set in the HostState object, at least directly, nor via the compute_nodes table record? I know it\u0027s part of the resource provider inventory in placement.","commit_id":"b3dbc15bae2c2c4541cd02761bce467fe01168c8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0a7a2c488f9ebf20a9127513408c806705ccc5bb","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d (host_state.vcpus_total * host_state.cpu_allocation_ratio"},{"line_number":40,"context_line":"                      - host_state.vcpus_used)"},{"line_number":41,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_c491b154","line":39,"range":{"start_line":39,"start_character":47,"end_line":39,"end_character":78},"updated":"2018-04-17 17:34:24.000000000","message":"From the config description of cpu_allocation_ratio:\n\n NOTE: As of the 16.0.0 Pike release, this configuration option is ignored\n for the ironic.IronicDriver compute driver and is hardcoded to 1.0.\n\nIs this host_state.cpu_allocation_ratio always 1 on ironic compute node?","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b9e9175d8dc4ceb7fc36f53e7f50dafae58e7737","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d (host_state.vcpus_total * host_state.cpu_allocation_ratio"},{"line_number":40,"context_line":"                      - host_state.vcpus_used)"},{"line_number":41,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_f1da5ee7","line":39,"range":{"start_line":39,"start_character":47,"end_line":39,"end_character":78},"in_reply_to":"9f6a8fd7_7c72a8e5","updated":"2018-04-18 12:58:36.000000000","message":"Please don\u0027t do that. The scheduler shouldn\u0027t be doing different features because of hypervisors.\n\nTBC, Ironic just passes a 1.0 CPU ratio. Fine for the scheduler. Period.","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54ccadc18097966818629e5b7cb815917b0c2f1d","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d (host_state.vcpus_total * host_state.cpu_allocation_ratio"},{"line_number":40,"context_line":"                      - host_state.vcpus_used)"},{"line_number":41,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_7c72a8e5","line":39,"range":{"start_line":39,"start_character":47,"end_line":39,"end_character":78},"in_reply_to":"9f6a8fd7_c491b154","updated":"2018-04-18 10:14:06.000000000","message":"Yes, it seems this was initially done that way when the \u0027get_inventory\u0027 function was implemented for that driver in commit e7840cdf1d8 (later refined in b25928dc045). I wonder if we should check the hypervisor_type and ignore this configuration option for \u0027ironic\u0027?","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ca3b4c0604755080fb894f871075ac1ac034d4","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d (host_state.vcpus_total * host_state.cpu_allocation_ratio"},{"line_number":40,"context_line":"                      - host_state.vcpus_used)"},{"line_number":41,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_1a37e7e5","line":39,"range":{"start_line":39,"start_character":47,"end_line":39,"end_character":78},"in_reply_to":"9f6a8fd7_f1da5ee7","updated":"2018-04-23 14:50:38.000000000","message":"Spot on. I\u0027ll keep this as-is in that case","commit_id":"2cde0e0585977cb58302445f275ebe1f00846676"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8ad20e2ef5b5da8fdd90037a3fd9ef850b7feb6","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weigh_object(self, host_state, weight_properties):"},{"line_number":38,"context_line":"        \"\"\"Higher weights win.  We want spreading to be the default.\"\"\""},{"line_number":39,"context_line":"        vcpus_free \u003d (host_state.vcpus_total * host_state.cpu_allocation_ratio"},{"line_number":40,"context_line":"                      - host_state.vcpus_used)"},{"line_number":41,"context_line":"        return vcpus_free"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fb8cfa7_f3a5e903","line":39,"range":{"start_line":39,"start_character":58,"end_line":39,"end_character":78},"updated":"2019-06-28 20:38:15.000000000","message":"This might be None, see bug 1834694.","commit_id":"67f52ab36df0f029d745851fc45607736c03e474"}],"nova/tests/unit/scheduler/weights/test_weights_cpu.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"5d08fadca83b1973e99a3034771bbed5ea0c5dde","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _get_all_hosts(self):"},{"line_number":38,"context_line":"        host_values \u003d ["},{"line_number":39,"context_line":"            (\u0027host1\u0027, \u0027node1\u0027, {\u0027vcpus_total\u0027: 8, \u0027vcpus_used\u0027: 8}),  # 0 free"},{"line_number":40,"context_line":"            (\u0027host2\u0027, \u0027node2\u0027, {\u0027vcpus_total\u0027: 4, \u0027vcpus_used\u0027: 2}),  # 2 free"},{"line_number":41,"context_line":"            (\u0027host3\u0027, \u0027node3\u0027, {\u0027vcpus_total\u0027: 6, \u0027vcpus_used\u0027: 0}),  # 6 free"},{"line_number":42,"context_line":"            (\u0027host4\u0027, \u0027node4\u0027, {\u0027vcpus_total\u0027: 8, \u0027vcpus_used\u0027: 0}),  # 8 free"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_89c093e2","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":78},"updated":"2018-03-21 06:25:49.000000000","message":"maybe 0 vcpu is not a good example here, as it will be probably filtered out before weigher.","commit_id":"c66fdf9de5201528730f460af2f85775ff3e071f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2035729f861464b45ec9b0da3e49d0811261ce1f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016, Red Hat Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_48ce902d","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2018-04-23 21:05:12.000000000","message":"we\u0027re in 2018, but meh.","commit_id":"67f52ab36df0f029d745851fc45607736c03e474"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2035729f861464b45ec9b0da3e49d0811261ce1f","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        self.flags(cpu_weight_multiplier\u003d1.0, group\u003d\u0027filter_scheduler\u0027)"},{"line_number":106,"context_line":"        hostinfo_list \u003d self._get_all_hosts()"},{"line_number":107,"context_line":"        host_attr \u003d {\u0027vcpus_total\u0027: 4, \u0027vcpus_used\u0027: 6,"},{"line_number":108,"context_line":"                     \u0027cpu_allocation_ratio\u0027: 1.0}"},{"line_number":109,"context_line":"        host_state \u003d fakes.FakeHostState(\u0027negative\u0027, \u0027negative\u0027, host_attr)"},{"line_number":110,"context_line":"        hostinfo_list \u003d list(hostinfo_list) + [host_state]"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_c8a86021","line":108,"updated":"2018-04-23 21:05:12.000000000","message":"TBC, this case should never happen, but meh.","commit_id":"67f52ab36df0f029d745851fc45607736c03e474"}]}
