)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"7eae1127794a9173b199d910fd506aa14f6999cf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Extends state reporting to include up-to-date resource utilization of"},{"line_number":10,"context_line":"hosts. Adds claims support and stats profiling to resource tracker."},{"line_number":11,"context_line":"Adds scheduler filters and weighers that exploit the added stats."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint utilization-based-scheduling"},{"line_number":14,"context_line":"Change-Id: Ic47c26e79d36392d16421168bab496d9381989d9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"AAAAM3%2F%2FZbY%3D","line":11,"updated":"2013-01-24 03:27:17.000000000","message":"You should add a docImpact flag here, as this change is user facing.","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"}],"doc/source/devref/filter_scheduler.rst":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"fb475c63583ce0b6f3a52db3c472f7b8f55e8941","unresolved":false,"context_lines":[{"line_number":75,"context_line":"  sufficient number of CPU cores."},{"line_number":76,"context_line":"* |IsolatedHostsFilter| - filter based on \"image_isolated\" and \"host_isolated\""},{"line_number":77,"context_line":"  flags."},{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."},{"line_number":79,"context_line":"* |RamPredicateFilter| - filters hosts by their RAM reserved for instances. Only hosts with sufficient RAM to host the instance are passed."},{"line_number":80,"context_line":"* |CPUUsageFilter| - filters hosts by their actual CPU usage. Only hosts with sufficient CPU to host the instance are passed."},{"line_number":81,"context_line":"* |RamUsageFilter| - filters hosts by their actual memory usage. Only hosts with sufficient RAM to host the instance are passed. "}],"source_content_type":"text/x-rst","patch_set":20,"id":"AAAAM3%2F%2FY5Q%3D","line":78,"updated":"2013-01-24 13:36:36.000000000","message":"Should probably have line-breaks like the other ones.","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"fb475c63583ce0b6f3a52db3c472f7b8f55e8941","unresolved":false,"context_lines":[{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."},{"line_number":79,"context_line":"* |RamPredicateFilter| - filters hosts by their RAM reserved for instances. Only hosts with sufficient RAM to host the instance are passed."},{"line_number":80,"context_line":"* |CPUUsageFilter| - filters hosts by their actual CPU usage. Only hosts with sufficient CPU to host the instance are passed."},{"line_number":81,"context_line":"* |RamUsageFilter| - filters hosts by their actual memory usage. Only hosts with sufficient RAM to host the instance are passed. "},{"line_number":82,"context_line":"* |SimpleCIDRAffinityFilter| - allows to put a new instance on a host within"},{"line_number":83,"context_line":"  the same IP block."},{"line_number":84,"context_line":"* |DifferentHostFilter| - allows to put the instance on a different host from a"}],"source_content_type":"text/x-rst","patch_set":20,"id":"AAAAM3%2F%2FY5I%3D","line":81,"updated":"2013-01-24 13:36:36.000000000","message":"Remove trailing space.","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1b9571b62c78c3b8a8c3a108c6144226e7d4aad4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."},{"line_number":79,"context_line":"* |RamPredicativeFilter| - filters hosts by their RAM reserved for instances. Only hosts with sufficient RAM to host the instance are passed."},{"line_number":80,"context_line":"* |CPUUsageFilter| - filters hosts by their actual CPU usage. Only hosts with sufficient CPU to host the instance are passed."},{"line_number":81,"context_line":"* |RamUsageFilter| - filters hosts by their actual memory usage. Only hosts with sufficient RAM to host the instance are passed. "},{"line_number":82,"context_line":"* |SimpleCIDRAffinityFilter| - allows to put a new instance on a host within"},{"line_number":83,"context_line":"  the same IP block."},{"line_number":84,"context_line":"* |DifferentHostFilter| - allows to put the instance on a different host from a"}],"source_content_type":"text/x-rst","patch_set":21,"id":"AAAAM3%2F%2FRrc%3D","line":81,"updated":"2013-01-30 16:38:54.000000000","message":"whitespace","commit_id":"adbd378ef86fdfa0c996c152f7c90ab293011484"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  |ComputeCapabilitiesFilter|."},{"line_number":73,"context_line":"* |ComputeFilter| - passes all hosts that are operational and enabled."},{"line_number":74,"context_line":"* |CPUPredicativeFilter| - filters hosts by their available CPU cores (i.e. not previously allocated to VMs). It passes hosts with sufficient number of CPU cores. This filter assumes that VMs fully utilize allocated CPU cores."},{"line_number":75,"context_line":"* |CPUUsageFilter| - filters hosts by their CPU utilizations. Only hosts with sufficient number of CPU cores are passed. Contrast to the previous filter, this filter uses CPU cores consumption as reported by compute nodes. "},{"line_number":76,"context_line":"* |IsolatedHostsFilter| - filter based on \"image_isolated\" and \"host_isolated\""},{"line_number":77,"context_line":"  flags."},{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FRhY%3D","line":75,"updated":"2013-01-30 18:42:20.000000000","message":"Trailing whitespace; missing line wrapping.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  |ComputeCapabilitiesFilter|."},{"line_number":73,"context_line":"* |ComputeFilter| - passes all hosts that are operational and enabled."},{"line_number":74,"context_line":"* |CPUPredicativeFilter| - filters hosts by their available CPU cores (i.e. not previously allocated to VMs). It passes hosts with sufficient number of CPU cores. This filter assumes that VMs fully utilize allocated CPU cores."},{"line_number":75,"context_line":"* |CPUUsageFilter| - filters hosts by their CPU utilizations. Only hosts with sufficient number of CPU cores are passed. Contrast to the previous filter, this filter uses CPU cores consumption as reported by compute nodes. "},{"line_number":76,"context_line":"* |IsolatedHostsFilter| - filter based on \"image_isolated\" and \"host_isolated\""},{"line_number":77,"context_line":"  flags."},{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FQ88%3D","line":75,"in_reply_to":"AAAAM3%2F%2FRhY%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"  flags."},{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."},{"line_number":79,"context_line":"* |RamPredicativeFilter| - filters hosts by their available RAM (i.e. not previously allocated to VMs). Only hosts with sufficient RAM to host the instance are passed. This filter assumes that VMs fully utilize allocated RAM."},{"line_number":80,"context_line":"* |RamUsageFilter| - filters hosts by their actual memory utilizations. Only hosts with sufficient RAM to host the instance are passed. Contrast to the previous filter, this filter uses RAM consumption as reported by compute nodes. The motivation behind is that many hypervisors don\u0027t physically allocate memory upfront (http://www.linux-kvm.org/page/Memory). "},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* |SimpleCIDRAffinityFilter| - allows to put a new instance on a host within"}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FRhU%3D","line":80,"updated":"2013-01-30 18:42:20.000000000","message":"Trailing whitespace; missing line wrapping.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":77,"context_line":"  flags."},{"line_number":78,"context_line":"* |JsonFilter| - allows simple JSON-based grammar for selecting hosts."},{"line_number":79,"context_line":"* |RamPredicativeFilter| - filters hosts by their available RAM (i.e. not previously allocated to VMs). Only hosts with sufficient RAM to host the instance are passed. This filter assumes that VMs fully utilize allocated RAM."},{"line_number":80,"context_line":"* |RamUsageFilter| - filters hosts by their actual memory utilizations. Only hosts with sufficient RAM to host the instance are passed. Contrast to the previous filter, this filter uses RAM consumption as reported by compute nodes. The motivation behind is that many hypervisors don\u0027t physically allocate memory upfront (http://www.linux-kvm.org/page/Memory). "},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* |SimpleCIDRAffinityFilter| - allows to put a new instance on a host within"}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FQ84%3D","line":80,"in_reply_to":"AAAAM3%2F%2FRhU%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":102,"context_line":"::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    class RamPredicativeFilter(filters.BaseHostFilter):"},{"line_number":105,"context_line":"        \"\"\"Ram Predicate Filter with over subscription flag. This filter assumes that VMs fully utilize allocated RAM.\"\"\""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        def host_passes(self, host_state, filter_properties):"},{"line_number":108,"context_line":"            \"\"\"Only return hosts with sufficient available RAM.\"\"\""}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FRhQ%3D","line":105,"updated":"2013-01-30 18:42:20.000000000","message":"Missing line wrapping.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":102,"context_line":"::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    class RamPredicativeFilter(filters.BaseHostFilter):"},{"line_number":105,"context_line":"        \"\"\"Ram Predicate Filter with over subscription flag. This filter assumes that VMs fully utilize allocated RAM.\"\"\""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        def host_passes(self, host_state, filter_properties):"},{"line_number":108,"context_line":"            \"\"\"Only return hosts with sufficient available RAM.\"\"\""}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FQ80%3D","line":105,"in_reply_to":"AAAAM3%2F%2FRhQ%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":209,"context_line":"::"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    --scheduler_available_filters\u003dnova.scheduler.filters.standard_filters"},{"line_number":212,"context_line":"    --scheduler_default_filters\u003dRamPredicativeFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"With this configuration, all filters in `nova.scheduler.filters`"},{"line_number":215,"context_line":"would be available, and by default the |RamPredicativeFilter|, |ComputeFilter|,"}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FRhM%3D","line":212,"updated":"2013-01-30 18:42:20.000000000","message":"Missing line wrapping","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":209,"context_line":"::"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    --scheduler_available_filters\u003dnova.scheduler.filters.standard_filters"},{"line_number":212,"context_line":"    --scheduler_default_filters\u003dRamPredicativeFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"With this configuration, all filters in `nova.scheduler.filters`"},{"line_number":215,"context_line":"would be available, and by default the |RamPredicativeFilter|, |ComputeFilter|,"}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FQ48%3D","line":212,"in_reply_to":"AAAAM3%2F%2FRhM%3D","updated":"2013-01-31 00:29:35.000000000","message":"Should this really be wrapped?\nThis is a code snippet whose interpretation will be harder to understand that way.\n\nAlso when rendered in HTML, like on GitHub, it will be framed in a box with a horizontal scrollbar.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":341,"context_line":".. |RamUsageFilter| replace:: :class:`RamUsageFilter \u003cnova.scheduler.filters.ram_usage_filter.RamUsageFilter\u003e`"},{"line_number":342,"context_line":".. |CPUUsageFilter| replace:: :class:`CPUUsageFilter \u003cnova.scheduler.filters.cpu_usage_filter.CPUUsageFilter\u003e`"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"y"},{"line_number":345,"context_line":".. |SimpleCIDRAffinityFilter| replace:: :class:`SimpleCIDRAffinityFilter \u003cnova.scheduler.filters.affinity_filter.SimpleCIDRAffinityFilter\u003e`"},{"line_number":346,"context_line":".. |DifferentHostFilter| replace:: :class:`DifferentHostFilter \u003cnova.scheduler.filters.affinity_filter.DifferentHostFilter\u003e`"},{"line_number":347,"context_line":".. |SameHostFilter| replace:: :class:`SameHostFilter \u003cnova.scheduler.filters.affinity_filter.SameHostFilter\u003e`"}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FRhI%3D","line":344,"updated":"2013-01-30 18:42:20.000000000","message":"Why the blank line, or the \u0027y\u0027 on a line by itself?","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":341,"context_line":".. |RamUsageFilter| replace:: :class:`RamUsageFilter \u003cnova.scheduler.filters.ram_usage_filter.RamUsageFilter\u003e`"},{"line_number":342,"context_line":".. |CPUUsageFilter| replace:: :class:`CPUUsageFilter \u003cnova.scheduler.filters.cpu_usage_filter.CPUUsageFilter\u003e`"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"y"},{"line_number":345,"context_line":".. |SimpleCIDRAffinityFilter| replace:: :class:`SimpleCIDRAffinityFilter \u003cnova.scheduler.filters.affinity_filter.SimpleCIDRAffinityFilter\u003e`"},{"line_number":346,"context_line":".. |DifferentHostFilter| replace:: :class:`DifferentHostFilter \u003cnova.scheduler.filters.affinity_filter.DifferentHostFilter\u003e`"},{"line_number":347,"context_line":".. |SameHostFilter| replace:: :class:`SameHostFilter \u003cnova.scheduler.filters.affinity_filter.SameHostFilter\u003e`"}],"source_content_type":"text/x-rst","patch_set":22,"id":"AAAAM3%2F%2FQ44%3D","line":344,"in_reply_to":"AAAAM3%2F%2FRhI%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c1cb8ee6c13329cd923c837377248140c019fdb5","unresolved":false,"context_lines":[{"line_number":221,"context_line":"::"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    --scheduler_available_filters\u003dnova.scheduler.filters.standard_filters"},{"line_number":224,"context_line":"    --scheduler_default_filters\u003dRamPredictiveFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"With this configuration, all filters in `nova.scheduler.filters`"},{"line_number":227,"context_line":"would be available, and by default the |RamPredictiveFilter|, |ComputeFilter|,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"AAAAM3%2F%2FPw4%3D","line":224,"updated":"2013-01-31 16:13:35.000000000","message":"OK, granted…","commit_id":"0e22faf5f0f05277d939938bb5c615deade57e48"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027nova.compute.stats.Stats\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027Class that will manage stats for the local compute host\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027cpu_profiler_window_size\u0027, default\u003d10,"},{"line_number":46,"context_line":"               help\u003d\u0027Number of collected cpu stats to use in profiling\u0027)"},{"line_number":47,"context_line":"]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRhE%3D","line":46,"updated":"2013-01-30 18:42:20.000000000","message":"Attonit: It would be nice to add a comma to the end of this line.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027nova.compute.stats.Stats\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027Class that will manage stats for the local compute host\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027cpu_profiler_window_size\u0027, default\u003d10,"},{"line_number":46,"context_line":"               help\u003d\u0027Number of collected cpu stats to use in profiling\u0027)"},{"line_number":47,"context_line":"]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ4w%3D","line":46,"in_reply_to":"AAAAM3%2F%2FRhE%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"706b34e8fccd5427f0906f163e894c41dac8b005","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027nova.compute.stats.Stats\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027Class that will manage stats for the local compute host\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027cpu_profiler_window_size\u0027, default\u003d10,"},{"line_number":46,"context_line":"               help\u003d\u0027Number of collected cpu stats to use in profiling\u0027),"},{"line_number":47,"context_line":"]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAM3%2F%2B%2B1s%3D","line":46,"updated":"2013-02-12 16:30:45.000000000","message":"Is there a reason the default is 10? just curious.","commit_id":"76bcae764723018ae78c4294006729da20702b34"}],"nova/scheduler/filters/cpu_predicative_filter.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class CPUPredicativeFilter(filters.BaseHostFilter):"},{"line_number":34,"context_line":"    \"\"\"CPUPredicativeFilter filters based on CPU cores allocated to VMs."},{"line_number":35,"context_line":"This filter assumes that VMs fully utilize allocated CPU cores.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":38,"context_line":"        \"\"\"Return True if host has sufficient CPU cores.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRg0%3D","line":35,"updated":"2013-01-30 18:42:20.000000000","message":"At a minimum, this second line should be indented 4 spaces, then the close triple-quote placed on a line by itself.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class CPUPredicativeFilter(filters.BaseHostFilter):"},{"line_number":34,"context_line":"    \"\"\"CPUPredicativeFilter filters based on CPU cores allocated to VMs."},{"line_number":35,"context_line":"This filter assumes that VMs fully utilize allocated CPU cores.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":38,"context_line":"        \"\"\"Return True if host has sufficient CPU cores.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ4s%3D","line":35,"in_reply_to":"AAAAM3%2F%2FRg0%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}],"nova/scheduler/filters/cpu_usage_filter.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fa437b07659f98081bb5b83c0634e80b91b100a7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack, LLC."},{"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":13,"id":"AAAAM3%2F%2Fy0s%3D","line":1,"updated":"2013-01-04 20:57:46.000000000","message":"Copyright date…","commit_id":"9896d1eae387998879368a8743a9b0c5f81211cb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"7eae1127794a9173b199d910fd506aa14f6999cf","unresolved":false,"context_lines":[{"line_number":27,"context_line":"CONF.register_opt(cpu_usage_ratio_opt)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CpuUsageFilter(filters.BaseHostFilter):"},{"line_number":31,"context_line":"    \"\"\"CPU filter based on actual usage.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def host_passes(self, host_state, filter_properties):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAM3%2F%2FZbc%3D","line":30,"updated":"2013-01-24 03:27:17.000000000","message":"This along with the core filter should be renamed similar to ram filter renames","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack, LLC."},{"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":22,"id":"AAAAM3%2F%2FRgw%3D","line":1,"updated":"2013-01-30 18:42:20.000000000","message":"Check the copyright date…","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack, LLC."},{"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":22,"id":"AAAAM3%2F%2FQ4o%3D","line":1,"in_reply_to":"AAAAM3%2F%2FRgw%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CpuUsageFilter(filters.BaseHostFilter):"},{"line_number":31,"context_line":"    \"\"\"CPU filter based on CPU utilization."},{"line_number":32,"context_line":"This filter uses CPU cores consumption as reported by compute nodes.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":35,"context_line":"        \"\"\"Only return hosts with sufficient available CPU.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRgo%3D","line":32,"updated":"2013-01-30 18:42:20.000000000","message":"Again, at a minimum, this should be indented 4 spaces and the triple-quote placed on a line by itself (also indented 4 spaces).","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CpuUsageFilter(filters.BaseHostFilter):"},{"line_number":31,"context_line":"    \"\"\"CPU filter based on CPU utilization."},{"line_number":32,"context_line":"This filter uses CPU cores consumption as reported by compute nodes.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":35,"context_line":"        \"\"\"Only return hosts with sufficient available CPU.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ4k%3D","line":32,"in_reply_to":"AAAAM3%2F%2FRgo%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        usable_cpu \u003d cpu_mhz_limit - used_cpu_mhz"},{"line_number":43,"context_line":"        if not usable_cpu \u003e\u003d requested_cpu:"},{"line_number":44,"context_line":"            LOG.debug(_(\"%(host_state)s does not have %(requested_cpu)s MHz \""},{"line_number":45,"context_line":"                    \"usable cpu, it only has %(usable_cpu)s MHz usable cpu.\"),"},{"line_number":46,"context_line":"                    locals())"},{"line_number":47,"context_line":"            return False"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRgk%3D","line":45,"updated":"2013-01-30 18:42:20.000000000","message":"Ideally, this should be indented to line up after the open parenthesis of the _() function, i.e.:\n\n    LOG.debug(_(\"%(host_state)s does not […]\"\n                \"usable cpu, it only […]\"),\n              locals())","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        usable_cpu \u003d cpu_mhz_limit - used_cpu_mhz"},{"line_number":43,"context_line":"        if not usable_cpu \u003e\u003d requested_cpu:"},{"line_number":44,"context_line":"            LOG.debug(_(\"%(host_state)s does not have %(requested_cpu)s MHz \""},{"line_number":45,"context_line":"                    \"usable cpu, it only has %(usable_cpu)s MHz usable cpu.\"),"},{"line_number":46,"context_line":"                    locals())"},{"line_number":47,"context_line":"            return False"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ4c%3D","line":45,"in_reply_to":"AAAAM3%2F%2FRgk%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}],"nova/scheduler/filters/ram_predicative_filter.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class RamPredicativeFilter(filters.BaseHostFilter):"},{"line_number":32,"context_line":"    \"\"\"Ram Predicative Filter based on RAM allocated to VMs."},{"line_number":33,"context_line":"This filter assumes that VMs fully utilize allocated RAM.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":36,"context_line":"        \"\"\"Only return hosts with sufficient available RAM.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRgc%3D","line":33,"updated":"2013-01-30 18:42:20.000000000","message":"Again, at a minimum, this line needs to be indented 4 spaces and the triple-quote needs to be on a line by itself.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class RamPredicativeFilter(filters.BaseHostFilter):"},{"line_number":32,"context_line":"    \"\"\"Ram Predicative Filter based on RAM allocated to VMs."},{"line_number":33,"context_line":"This filter assumes that VMs fully utilize allocated RAM.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":36,"context_line":"        \"\"\"Only return hosts with sufficient available RAM.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ4Y%3D","line":33,"in_reply_to":"AAAAM3%2F%2FRgc%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}],"nova/scheduler/filters/ram_usage_filter.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"7eae1127794a9173b199d910fd506aa14f6999cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"AAAAM3%2F%2FZbk%3D","side":"PARENT","line":2,"updated":"2013-01-24 03:27:17.000000000","message":"As this was copied, I don\u0027t think you can remove the copyright","commit_id":"723987a16f093c18bb2d01f26f82d1ad1512c188"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"7eae1127794a9173b199d910fd506aa14f6999cf","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"ram_usage_ratio_opt \u003d cfg.FloatOpt(\"ram_usage_ratio\","},{"line_number":23,"context_line":"        default\u003d1.0,"},{"line_number":24,"context_line":"        help\u003d\"physical ram usage ratio\")"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAM3%2F%2FZbg%3D","line":22,"updated":"2013-01-24 03:27:17.000000000","message":"do we still want to offer the ability to oversubscribe actual RAM usage? Presumably this only makes sense when using swap","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"738de18b0eea5ca6df2d176a4420efda95a9431f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"ram_usage_ratio_opt \u003d cfg.FloatOpt(\"ram_usage_ratio\","},{"line_number":23,"context_line":"        default\u003d1.0,"},{"line_number":24,"context_line":"        help\u003d\"physical ram usage ratio\")"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAM3%2F%2FY4k%3D","line":22,"in_reply_to":"AAAAM3%2F%2FZbg%3D","updated":"2013-01-24 13:47:50.000000000","message":"Actually this is to enable under-subscribing of actual RAM usage since you might not want your resources to be completely maxed out.\n\nThe flag description should probably explain the use in a better way.","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class RamUsageFilter(filters.BaseHostFilter):"},{"line_number":33,"context_line":"    \"\"\"RAM filter based on memory utilization."},{"line_number":34,"context_line":"This filter uses RAM consumption as reported by compute nodes\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":37,"context_line":"        \"\"\"Only return hosts with sufficient available RAM.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRgY%3D","line":34,"updated":"2013-01-30 18:42:20.000000000","message":"Again, at a minimum, this line needs to be indented 4 spaces and the triple-quote placed on a line by itself.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class RamUsageFilter(filters.BaseHostFilter):"},{"line_number":33,"context_line":"    \"\"\"RAM filter based on memory utilization."},{"line_number":34,"context_line":"This filter uses RAM consumption as reported by compute nodes\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":37,"context_line":"        \"\"\"Only return hosts with sufficient available RAM.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ4U%3D","line":34,"in_reply_to":"AAAAM3%2F%2FRgY%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"706b34e8fccd5427f0906f163e894c41dac8b005","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                  \u0027RamFilter\u0027,"},{"line_number":44,"context_line":"                  \u0027ComputeFilter\u0027,"},{"line_number":45,"context_line":"                  \u0027ComputeCapabilitiesFilter\u0027,"},{"line_number":46,"context_line":"                  \u0027ImagePropertiesFilter\u0027,"},{"line_number":47,"context_line":"                  ],"},{"line_number":48,"context_line":"                help\u003d\u0027Which filter class names to use for filtering hosts \u0027"},{"line_number":49,"context_line":"                      \u0027when not specified in the request.\u0027),"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAM3%2F%2B%2Bzo%3D","line":46,"updated":"2013-02-12 16:30:45.000000000","message":"typo?","commit_id":"76bcae764723018ae78c4294006729da20702b34"}],"nova/scheduler/weights/utilization.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack, LLC."},{"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":22,"id":"AAAAM3%2F%2FRgU%3D","line":1,"updated":"2013-01-30 18:42:20.000000000","message":"Double-check the copyright date.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack, LLC."},{"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":22,"id":"AAAAM3%2F%2FQ4E%3D","line":1,"in_reply_to":"AAAAM3%2F%2FRgU%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}],"nova/tests/compute/test_resource_tracker.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fa437b07659f98081bb5b83c0634e80b91b100a7","unresolved":false,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        if not field in stats:"},{"line_number":403,"context_line":"            raise test.TestingException("},{"line_number":404,"context_line":"                \"\u0027%(field)s\u0027 not in compute node stats.\" % locals())"},{"line_number":405,"context_line":"        x \u003d stats[field]"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        self.assertEqual(value, x)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2Fy0Y%3D","line":404,"updated":"2013-01-04 20:57:46.000000000","message":"I don\u0027t understand what you\u0027re doing here; TestingException isn\u0027t really intended to be used this way.  The purpose of TestingException is to have a specific exception (as opposed to the generic Exception class) that code under test can raise.  I think what you actually want is:\n\n    self.assertTrue(field in stats)","commit_id":"9896d1eae387998879368a8743a9b0c5f81211cb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"dbea3029f507dade105b0ba77d7c6412f2587b20","unresolved":false,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        if not field in stats:"},{"line_number":403,"context_line":"            raise test.TestingException("},{"line_number":404,"context_line":"                \"\u0027%(field)s\u0027 not in compute node stats.\" % locals())"},{"line_number":405,"context_line":"        x \u003d stats[field]"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        self.assertEqual(value, x)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAM3%2F%2FwG8%3D","line":404,"updated":"2013-01-07 17:43:21.000000000","message":"I don\u0027t understand what you\u0027re doing here; TestingException isn\u0027t really intended to be used this way. The purpose of TestingException is to have a specific exception (as opposed to the generic Exception class) that code under test can raise. I think what you actually want is:\n\n    self.assertTrue(field in stats)","commit_id":"9078ee3ef902c0a9705cdc6f641ba993b80c76c5"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"dbea3029f507dade105b0ba77d7c6412f2587b20","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        self._assert_stat(10, \u0027cpu_mhz_used\u0027)"},{"line_number":667,"context_line":"        cpu_profiler \u003d self.tracker.cpu_profiler"},{"line_number":668,"context_line":"        self.assertEqual(10, cpu_profiler.avg)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"class ResizeClaimTestCase(BaseTrackerTestCase):"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAM3%2F%2FwG4%3D","line":669,"updated":"2013-01-07 17:43:21.000000000","message":"You need to add a blank line here; not having it is going to result in a PEP8 error.  (You do run unit tests before attempting to push up a new patch set, right?)","commit_id":"9078ee3ef902c0a9705cdc6f641ba993b80c76c5"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                \u0027cpu_mhz\u0027: self.cpu_mhz,"},{"line_number":93,"context_line":"                \u0027cpu_mhz_total\u0027: self.cpu_mhz_total,"},{"line_number":94,"context_line":"                \u0027cpu_mhz_used\u0027: self.cpu_mhz_used"},{"line_number":95,"context_line":"            }"},{"line_number":96,"context_line":"        }"},{"line_number":97,"context_line":"        return d"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRgI%3D","line":95,"updated":"2013-01-30 18:42:20.000000000","message":"Please consider adding trailing commas, i.e., one after \"self.cpu_mhz_used\" and one after this closing \"}\"","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                \u0027cpu_mhz\u0027: self.cpu_mhz,"},{"line_number":93,"context_line":"                \u0027cpu_mhz_total\u0027: self.cpu_mhz_total,"},{"line_number":94,"context_line":"                \u0027cpu_mhz_used\u0027: self.cpu_mhz_used"},{"line_number":95,"context_line":"            }"},{"line_number":96,"context_line":"        }"},{"line_number":97,"context_line":"        return d"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ38%3D","line":95,"in_reply_to":"AAAAM3%2F%2FRgI%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}],"nova/tests/scheduler/test_host_filters.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"fb475c63583ce0b6f3a52db3c472f7b8f55e8941","unresolved":false,"context_lines":[{"line_number":488,"context_line":"        #False since type matches aggregate, metadata"},{"line_number":489,"context_line":"        self.assertFalse(filt_cls.host_passes(host, filter2_properties))"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    def test_ram_filter_fails_on_memory(self):"},{"line_number":492,"context_line":"        self._stub_service_is_up(True)"},{"line_number":493,"context_line":"        filt_cls \u003d self.class_map[\u0027RamPredicativeFilter\u0027]()"},{"line_number":494,"context_line":"        self.flags(ram_allocation_ratio\u003d1.0)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAM3%2F%2FY7A%3D","line":491,"updated":"2013-01-24 13:36:36.000000000","message":"Maybe the ram tests should be renamed test_ram_predicative* as well.","commit_id":"d19419cc2ca3ab6fd7f5bd49c9299e96fc23c86b"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fa437b07659f98081bb5b83c0634e80b91b100a7","unresolved":false,"context_lines":[{"line_number":2148,"context_line":"        prev_cpu \u003d self._tracked_stats.get(\u0027cpu\u0027, 0)"},{"line_number":2149,"context_line":"        prev_time \u003d self._tracked_stats.get(\u0027time\u0027, 0)"},{"line_number":2150,"context_line":"        self._tracked_stats[\u0027cpu\u0027] \u003d cpu_stats[\u0027kernel\u0027] + cpu_stats[\u0027user\u0027] \\"},{"line_number":2151,"context_line":"                                     + cpu_stats[\u0027iowait\u0027]"},{"line_number":2152,"context_line":"        self._tracked_stats[\u0027time\u0027] \u003d sum(cpu_stats.values())"},{"line_number":2153,"context_line":"        cpu_util \u003d ((self._tracked_stats[\u0027cpu\u0027] - prev_cpu) /"},{"line_number":2154,"context_line":"                    float(self._tracked_stats[\u0027time\u0027] - prev_time))"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2Fyz4%3D","line":2151,"updated":"2013-01-04 20:57:46.000000000","message":"I would rather you enclose the whole expression in parentheses, so as to eliminate the backslash.  Also, I have a slight preference for operators to be at the end of the line, i.e.:\n\n    self._tracked_stats[\u0027cpu\u0027] \u003d (cpu_stats[\u0027kernel\u0027] + cpu_stats[\u0027user\u0027] +\n                                  cpu_stats[\u0027iowait\u0027])","commit_id":"9896d1eae387998879368a8743a9b0c5f81211cb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"        \"\"\"Get the CPU core frequency(MHz) of physical computer."},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"        :returns: the CPU core frequency(MHz)."},{"line_number":2188,"context_line":""},{"line_number":2189,"context_line":"        \"\"\""},{"line_number":2190,"context_line":""},{"line_number":2191,"context_line":"        return self._conn.getInfo()[3]"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRgA%3D","line":2188,"updated":"2013-01-30 18:42:20.000000000","message":"Please eliminate this blank line.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"        \"\"\"Get the CPU core frequency(MHz) of physical computer."},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"        :returns: the CPU core frequency(MHz)."},{"line_number":2188,"context_line":""},{"line_number":2189,"context_line":"        \"\"\""},{"line_number":2190,"context_line":""},{"line_number":2191,"context_line":"        return self._conn.getInfo()[3]"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ3w%3D","line":2188,"in_reply_to":"AAAAM3%2F%2FRgA%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":2194,"context_line":"        \"\"\"Get the total CPU capacity(MHz) of physical computer."},{"line_number":2195,"context_line":""},{"line_number":2196,"context_line":"        :returns: the total CPU capacity(MHz)."},{"line_number":2197,"context_line":""},{"line_number":2198,"context_line":"        \"\"\""},{"line_number":2199,"context_line":""},{"line_number":2200,"context_line":"        info \u003d self._conn.getInfo()"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRf4%3D","line":2197,"updated":"2013-01-30 18:42:20.000000000","message":"Here also.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":2194,"context_line":"        \"\"\"Get the total CPU capacity(MHz) of physical computer."},{"line_number":2195,"context_line":""},{"line_number":2196,"context_line":"        :returns: the total CPU capacity(MHz)."},{"line_number":2197,"context_line":""},{"line_number":2198,"context_line":"        \"\"\""},{"line_number":2199,"context_line":""},{"line_number":2200,"context_line":"        info \u003d self._conn.getInfo()"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ3s%3D","line":2197,"in_reply_to":"AAAAM3%2F%2FRf4%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c3b258b603995b52c9febe6570a16829e24668e5","unresolved":false,"context_lines":[{"line_number":2264,"context_line":"        \"\"\"Get the current CPU usage(MHz) of physical computer."},{"line_number":2265,"context_line":""},{"line_number":2266,"context_line":"        :returns: the current CPU usage(Mhz)."},{"line_number":2267,"context_line":""},{"line_number":2268,"context_line":"        \"\"\""},{"line_number":2269,"context_line":""},{"line_number":2270,"context_line":"        cpu_stats \u003d self._conn.getCPUStats(libvirt.VIR_NODE_CPU_STATS_ALL_CPUS,"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FRf0%3D","line":2267,"updated":"2013-01-30 18:42:20.000000000","message":"Please eliminate this blank line.","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"bbce3b25faa166f1e192c832d1891bab8f84bf60","unresolved":false,"context_lines":[{"line_number":2264,"context_line":"        \"\"\"Get the current CPU usage(MHz) of physical computer."},{"line_number":2265,"context_line":""},{"line_number":2266,"context_line":"        :returns: the current CPU usage(Mhz)."},{"line_number":2267,"context_line":""},{"line_number":2268,"context_line":"        \"\"\""},{"line_number":2269,"context_line":""},{"line_number":2270,"context_line":"        cpu_stats \u003d self._conn.getCPUStats(libvirt.VIR_NODE_CPU_STATS_ALL_CPUS,"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2FQ3o%3D","line":2267,"in_reply_to":"AAAAM3%2F%2FRf0%3D","updated":"2013-01-31 00:29:35.000000000","message":"Done","commit_id":"f686356cb09b27b2ec2edfce845102b94f0fd505"}]}
