)]}'
{"nova/scheduler/conf.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"38637b16cfac554ed835cec3088d174378f2a07c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":2,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2B9ao%3D","side":"PARENT","line":1,"updated":"2014-01-20 11:59:54.000000000","message":"something looks fishy here","commit_id":"9710e55720d388051e370da8af54b71d6b8a97e7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"38637b16cfac554ed835cec3088d174378f2a07c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova import db"},{"line_number":21,"context_line":"from nova.openstack.common.gettextutils import _"},{"line_number":22,"context_line":"from nova.openstack.common import log as logging"},{"line_number":23,"context_line":"from oslo.config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2B9Z4%3D","line":22,"updated":"2014-01-20 11:59:54.000000000","message":"this should be in a separate section above\n it should be:\n\nfrom oslo.config import cfg\n\nfrom nova import db\n.\n.\n.","commit_id":"7e187c37e324e8ae6500c06c6d0f07d229420e06"}],"nova/scheduler/filters/__init__.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"ad61aeb66d00c0f3190f83b71864aa1827a0f6fc","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class BaseHostFilter(scheduler_conf.FilterPropOverrideConf,"},{"line_number":25,"context_line":"                        filters.BaseFilter):"},{"line_number":26,"context_line":"    \"\"\"Base class for host filters.\"\"\""},{"line_number":27,"context_line":"    def _filter_one(self, obj, filter_properties):"},{"line_number":28,"context_line":"        \"\"\"Return True if the object passes the filter, otherwise False.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FKm8%3D","line":25,"updated":"2014-01-16 19:58:27.000000000","message":"indentation should match previous arg","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6f90f916a23f9d1668782e9775d72c158da11050","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class BaseHostFilter(scheduler_conf.FilterPropOverrideConf,"},{"line_number":25,"context_line":"                        filters.BaseFilter):"},{"line_number":26,"context_line":"    \"\"\"Base class for host filters.\"\"\""},{"line_number":27,"context_line":"    def _filter_one(self, obj, filter_properties):"},{"line_number":28,"context_line":"        \"\"\"Return True if the object passes the filter, otherwise False.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B9%2BA%3D","line":25,"in_reply_to":"AAAAUH%2F%2FKm8%3D","updated":"2014-01-20 10:38:14.000000000","message":"Done","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class BaseHostFilter(scheduler_conf.FilterPropOverrideConf,"},{"line_number":25,"context_line":"                     filters.BaseFilter):"},{"line_number":26,"context_line":"    \"\"\"Base class for host filters.\"\"\""},{"line_number":27,"context_line":"    def _filter_one(self, obj, filter_properties):"},{"line_number":28,"context_line":"        \"\"\"Return True if the object passes the filter, otherwise False.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BwN4%3D","line":25,"updated":"2014-01-23 16:18:28.000000000","message":"+ Align arguments.\n+ It\u0027s weird having BaseHostFilter inherit FilterPropOverrideConf, and some other Filters inherit AggregateOverrideConf which overshadows the former. Better remove FilterOverrideConf from BaseHostFilter, and let the Filters inherit their needed OverrideConf (Filter/Aggregate). Having FilterOverrideConf here will only cause unexpected result due to the bad inheritance order.","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"df51ee7bc53a61913244069c75eaf7a8bd450054","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from nova.scheduler import conf as scheduler_conf"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class BaseHostFilter(scheduler_conf.BaseConf,"},{"line_number":25,"context_line":"                     filters.BaseFilter):"},{"line_number":26,"context_line":"    \"\"\"Base class for host filters.\"\"\""},{"line_number":27,"context_line":"    def _filter_one(self, obj, filter_properties):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2BCLI%3D","line":24,"updated":"2014-01-30 19:51:34.000000000","message":"Again, why do we need an OverrideConf here? This will potentially cause trouble while creating new filters due to the fact that we have to be careful about inheritance order: the intended OverrideConf has to be listed first, then the BaseFilter.\n\nWhy don\u0027t we just leave BaseHostFilter as it was, then we can make your Filters inherit OverrideConf in any order that you want, total care-free!","commit_id":"21ca1a66c25e573130940768c35d1bf0b23f33f3"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"cd7cd6910944d84332d8c8db8869b76ae360736e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from nova.scheduler import conf as scheduler_conf"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class BaseHostFilter(scheduler_conf.BaseConf,"},{"line_number":25,"context_line":"                     filters.BaseFilter):"},{"line_number":26,"context_line":"    \"\"\"Base class for host filters.\"\"\""},{"line_number":27,"context_line":"    def _filter_one(self, obj, filter_properties):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F91MM%3D","line":24,"in_reply_to":"AAAAUH%2F%2BCLI%3D","updated":"2014-02-03 15:06:53.000000000","message":"Done","commit_id":"21ca1a66c25e573130940768c35d1bf0b23f33f3"}],"nova/scheduler/filters/availability_zone_filter.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"ad61aeb66d00c0f3190f83b71864aa1827a0f6fc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        availability_zone \u003d props.get(\u0027availability_zone\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if availability_zone:"},{"line_number":44,"context_line":"            metadata \u003d self.get_config(\u0027availability_zone\u0027,"},{"line_number":45,"context_line":"                                                filter_properties,"},{"line_number":46,"context_line":"                                                host_state.host)"},{"line_number":47,"context_line":"            if len(metadata) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FKnM%3D","line":44,"updated":"2014-01-16 19:58:27.000000000","message":"indentation should match previous arg","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6f90f916a23f9d1668782e9775d72c158da11050","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        availability_zone \u003d props.get(\u0027availability_zone\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if availability_zone:"},{"line_number":44,"context_line":"            metadata \u003d self.get_config(\u0027availability_zone\u0027,"},{"line_number":45,"context_line":"                                                filter_properties,"},{"line_number":46,"context_line":"                                                host_state.host)"},{"line_number":47,"context_line":"            if len(metadata) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B99s%3D","line":44,"in_reply_to":"AAAAUH%2F%2FKnM%3D","updated":"2014-01-20 10:38:14.000000000","message":"Done","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"38637b16cfac554ed835cec3088d174378f2a07c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        if availability_zone:"},{"line_number":44,"context_line":"            metadata \u003d self.get_config(\u0027availability_zone\u0027,"},{"line_number":45,"context_line":"                                       filter_properties,"},{"line_number":46,"context_line":"                                       host_state.host)"},{"line_number":47,"context_line":"            if len(metadata) \u003e 0:"},{"line_number":48,"context_line":"                return availability_zone in metadata"},{"line_number":49,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2B9Zk%3D","line":46,"updated":"2014-01-20 11:59:54.000000000","message":"Consider:\n\nif not metadata:\n    metadata \u003d [CONF.default_availability_zone]\nreturn availability_zone in metadata\n\nOr an alternative is to have the self.getconfig receive an input for the default value","commit_id":"7e187c37e324e8ae6500c06c6d0f07d229420e06"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class AvailabilityZoneFilter(scheduler_conf.AggregateOverrideConf,"},{"line_number":27,"context_line":"                             filters.BaseHostFilter):"},{"line_number":28,"context_line":"    \"\"\"Filters Hosts by availability zone."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    Works with aggregate metadata availability zones, using the key"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BwNQ%3D","line":27,"updated":"2014-01-23 16:18:28.000000000","message":"align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"103a96b2b2ea49769a4166886d1845b21389baee","unresolved":false,"context_lines":[{"line_number":23,"context_line":"CONF.import_opt(\u0027default_availability_zone\u0027, \u0027nova.availability_zones\u0027)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class AvailabilityZoneFilter(scheduler_conf.AggregateOverrideConf,"},{"line_number":27,"context_line":"                             filters.BaseHostFilter):"},{"line_number":28,"context_line":"    \"\"\"Filters Hosts by availability zone."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUX%2F%2Fd9g%3D","line":26,"updated":"2014-02-13 00:10:28.000000000","message":"It feels odd to hide the DB call like this, but I can\u0027t think of a better suggestion right now.","commit_id":"610249fd91387a9cc5d4f4cab2d7f3cb83808d3a"}],"nova/scheduler/filters/core_filter.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"ad61aeb66d00c0f3190f83b71864aa1827a0f6fc","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_cpu_allocation_ratio(self, host_state, filter_properties):"},{"line_number":82,"context_line":"        aggregate_vals \u003d self.get_config(\u0027cpu_allocation_ratio\u0027,"},{"line_number":83,"context_line":"                                        filter_properties,"},{"line_number":84,"context_line":"                                        host_state.host)"},{"line_number":85,"context_line":"        num_values \u003d len(aggregate_vals)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FKng%3D","line":83,"updated":"2014-01-16 19:58:27.000000000","message":"indent 1 more space to match previous arg","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6f90f916a23f9d1668782e9775d72c158da11050","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_cpu_allocation_ratio(self, host_state, filter_properties):"},{"line_number":82,"context_line":"        aggregate_vals \u003d self.get_config(\u0027cpu_allocation_ratio\u0027,"},{"line_number":83,"context_line":"                                        filter_properties,"},{"line_number":84,"context_line":"                                        host_state.host)"},{"line_number":85,"context_line":"        num_values \u003d len(aggregate_vals)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B99M%3D","line":83,"in_reply_to":"AAAAUH%2F%2FKng%3D","updated":"2014-01-20 10:38:14.000000000","message":"Done","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class AggregateCoreFilter(scheduler_conf.AggregateOverrideConf,"},{"line_number":75,"context_line":"                          BaseCoreFilter):"},{"line_number":76,"context_line":"    \"\"\"AggregateCoreFilter with per-aggregate CPU subscription flag."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    Fall back to global cpu_allocation_ratio if no per-aggregate setting found."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Bu6U%3D","line":75,"updated":"2014-01-23 16:18:28.000000000","message":"align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"103a96b2b2ea49769a4166886d1845b21389baee","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return (vcpus_total - host_state.vcpus_used) \u003e\u003d instance_vcpus"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class CoreFilter(scheduler_conf.FilterPropOverrideConf,"},{"line_number":68,"context_line":"                 BaseCoreFilter):"},{"line_number":69,"context_line":"    \"\"\"CoreFilter filters based on CPU core utilization.\"\"\""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUX%2F%2Fd9E%3D","line":67,"updated":"2014-02-13 00:10:28.000000000","message":"I worry about the performance impact of this change to people not needing the extra functionality.\n\nHave you done any profiling of this code to prove if these changes make much of an impact?","commit_id":"610249fd91387a9cc5d4f4cab2d7f3cb83808d3a"}],"nova/scheduler/filters/disk_filter.py":[{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":"CONF.register_opt(disk_allocation_ratio_opt)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class DiskFilter(filters.BaseHostFilter):"},{"line_number":32,"context_line":"    \"\"\"Disk Filter with over subscription flag.\"\"\""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpVM%3D","line":30,"updated":"2014-01-23 16:18:28.000000000","message":"Why does DiskFilter uses FilterHostOverrideConf? It will make 2 VM with 2 different disk_allocation_ratios be hosted in the same compute, which is inappropriate. The current DiskFilter ensures that the VMs always get through the same disk_allocation_ratio check. DiskFilter should use AggregateOverrideConf instead.","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"}],"nova/scheduler/filters/io_ops_filter.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"ad61aeb66d00c0f3190f83b71864aa1827a0f6fc","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        num_io_ops \u003d host_state.num_io_ops"},{"line_number":40,"context_line":"        max_io_ops \u003d self.get_config(\u0027max_io_ops_per_host\u0027,"},{"line_number":41,"context_line":"                                filter_properties)"},{"line_number":42,"context_line":"        passes \u003d num_io_ops \u003c max_io_ops"},{"line_number":43,"context_line":"        if not passes:"},{"line_number":44,"context_line":"            LOG.debug(_(\"%(host_state)s fails I/O ops check: Max IOs per host \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FKnw%3D","line":41,"updated":"2014-01-16 19:58:27.000000000","message":"should be indented to match previous arg","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6f90f916a23f9d1668782e9775d72c158da11050","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        num_io_ops \u003d host_state.num_io_ops"},{"line_number":40,"context_line":"        max_io_ops \u003d self.get_config(\u0027max_io_ops_per_host\u0027,"},{"line_number":41,"context_line":"                                filter_properties)"},{"line_number":42,"context_line":"        passes \u003d num_io_ops \u003c max_io_ops"},{"line_number":43,"context_line":"        if not passes:"},{"line_number":44,"context_line":"            LOG.debug(_(\"%(host_state)s fails I/O ops check: Max IOs per host \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B99A%3D","line":41,"in_reply_to":"AAAAUH%2F%2FKnw%3D","updated":"2014-01-20 10:38:14.000000000","message":"Done","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"CONF.register_opt(max_io_ops_per_host_opt)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class IoOpsFilter(filters.BaseHostFilter):"},{"line_number":33,"context_line":"    \"\"\"Filter out hosts with too many concurrent I/O operations.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def host_passes(self, host_state, filter_properties):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpU0%3D","line":32,"updated":"2014-01-23 16:18:28.000000000","message":"Idem DiskFilter","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"}],"nova/scheduler/filters/ram_filter.py":[{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _get_ram_allocation_ratio(self, host_state, filter_properties):"},{"line_number":72,"context_line":"        return self.get_config(\u0027ram_allocation_ratio\u0027,"},{"line_number":73,"context_line":"                               filter_properties)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class AggregateRamFilter(scheduler_conf.AggregateOverrideConf, BaseRamFilter):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpSs%3D","line":73,"updated":"2014-01-23 16:18:28.000000000","message":"align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"}],"nova/scheduler/filters/type_filter.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"ad61aeb66d00c0f3190f83b71864aa1827a0f6fc","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class AggregateTypeAffinityFilter(scheduler_conf.AggregateOverrideConf,"},{"line_number":44,"context_line":"                                    filters.BaseHostFilter):"},{"line_number":45,"context_line":"    \"\"\"AggregateTypeAffinityFilter limits instance_type by aggregate"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return True if no instance_type key is set or if the aggregate metadata"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FKoQ%3D","line":44,"updated":"2014-01-16 19:58:27.000000000","message":"should be indented 2 spaces less to match previous arg","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6f90f916a23f9d1668782e9775d72c158da11050","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class AggregateTypeAffinityFilter(scheduler_conf.AggregateOverrideConf,"},{"line_number":44,"context_line":"                                    filters.BaseHostFilter):"},{"line_number":45,"context_line":"    \"\"\"AggregateTypeAffinityFilter limits instance_type by aggregate"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return True if no instance_type key is set or if the aggregate metadata"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B980%3D","line":44,"in_reply_to":"AAAAUH%2F%2FKoQ%3D","updated":"2014-01-20 10:38:14.000000000","message":"Done","commit_id":"14772e66427e42871874392edf06f64e8c498549"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class AggregateTypeAffinityFilter(scheduler_conf.AggregateOverrideConf,"},{"line_number":44,"context_line":"                                  filters.BaseHostFilter):"},{"line_number":45,"context_line":"    \"\"\"AggregateTypeAffinityFilter limits instance_type by aggregate"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return True if no instance_type key is set or if the aggregate metadata"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpSY%3D","line":44,"updated":"2014-01-23 16:18:28.000000000","message":"align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"}],"nova/tests/scheduler/test_host_filters.py":[{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":1764,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":1765,"context_line":""},{"line_number":1766,"context_line":""},{"line_number":1767,"context_line":"class GetConfigTestCase(test.TestCase):"},{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":"    def setUp(self):"},{"line_number":1770,"context_line":"        super(GetConfigTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpMw%3D","line":1767,"updated":"2014-01-23 16:18:28.000000000","message":"This class is for get_config only. All these tests are already done in test_scheduler_utils.py from the #61794 patch.\n\nWhat I expect from filter tests are tests that run filters and verify the results (passed hosts) are corrected. In this case it should be the result with and without applying overrides.","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"6002be756fae889109519ff4f169c8c67835b27f","unresolved":false,"context_lines":[{"line_number":1799,"context_line":"        result \u003d db.aggregate_create(self.context.elevated(), values, metadata)"},{"line_number":1800,"context_line":"        for host in hosts:"},{"line_number":1801,"context_line":"            db.aggregate_host_add(self.context.elevated(), result[\u0027id\u0027], host)"},{"line_number":1802,"context_line":"        return result"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":"    def test_without_conf_overrides(self):"},{"line_number":1805,"context_line":"        filt_cls \u003d self.class_map[\u0027TestBaseFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F9kcA%3D","line":1802,"updated":"2014-02-05 23:59:04.000000000","message":"The return value never seems to be used, so you might as well not return it.","commit_id":"7186430bf0f575852361a5e38774093801c0641f"}],"nova/tests/scheduler/test_host_manager.py":[{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"af569cb00515dbcaf1edd45271aaccf44150c687","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Test we returns 1 correct function"},{"line_number":90,"context_line":"        filter_classes \u003d self.host_manager._choose_host_filters(None,"},{"line_number":91,"context_line":"                                                            fake_properties)"},{"line_number":92,"context_line":"        self.assertEqual(len(filter_classes), 1)"},{"line_number":93,"context_line":"        self.assertEqual(filter_classes[0].__name__, \u0027FakeFilterClass2\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _mock_get_filtered_hosts(self, info, specified_filters\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BzzY%3D","line":92,"updated":"2014-01-21 21:26:44.000000000","message":"argument order should be (expected, observed)","commit_id":"8b1dfb698b84dcaf0531474440e1f79caab684de"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"58c456202e7262dd4f62f0e11a4cdfc7172eb4d6","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Test we returns 1 correct function"},{"line_number":90,"context_line":"        filter_classes \u003d self.host_manager._choose_host_filters(None,"},{"line_number":91,"context_line":"                                                            fake_properties)"},{"line_number":92,"context_line":"        self.assertEqual(len(filter_classes), 1)"},{"line_number":93,"context_line":"        self.assertEqual(filter_classes[0].__name__, \u0027FakeFilterClass2\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _mock_get_filtered_hosts(self, info, specified_filters\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BxkE%3D","line":92,"in_reply_to":"AAAAUH%2F%2BzzY%3D","updated":"2014-01-22 09:23:11.000000000","message":"Done","commit_id":"8b1dfb698b84dcaf0531474440e1f79caab684de"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"af569cb00515dbcaf1edd45271aaccf44150c687","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        filter_classes \u003d self.host_manager._choose_host_filters(None,"},{"line_number":91,"context_line":"                                                            fake_properties)"},{"line_number":92,"context_line":"        self.assertEqual(len(filter_classes), 1)"},{"line_number":93,"context_line":"        self.assertEqual(filter_classes[0].__name__, \u0027FakeFilterClass2\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _mock_get_filtered_hosts(self, info, specified_filters\u003dNone,"},{"line_number":96,"context_line":"                                                            conf\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BzzU%3D","line":93,"updated":"2014-01-21 21:26:44.000000000","message":"same","commit_id":"8b1dfb698b84dcaf0531474440e1f79caab684de"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"58c456202e7262dd4f62f0e11a4cdfc7172eb4d6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        filter_classes \u003d self.host_manager._choose_host_filters(None,"},{"line_number":91,"context_line":"                                                            fake_properties)"},{"line_number":92,"context_line":"        self.assertEqual(len(filter_classes), 1)"},{"line_number":93,"context_line":"        self.assertEqual(filter_classes[0].__name__, \u0027FakeFilterClass2\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _mock_get_filtered_hosts(self, info, specified_filters\u003dNone,"},{"line_number":96,"context_line":"                                                            conf\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BxkA%3D","line":93,"in_reply_to":"AAAAUH%2F%2BzzU%3D","updated":"2014-01-22 09:23:11.000000000","message":"Done","commit_id":"8b1dfb698b84dcaf0531474440e1f79caab684de"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.flags(scheduler_default_filters\u003d\u0027FakeFilterClass1\u0027)"},{"line_number":76,"context_line":"        self.host_manager.filter_classes \u003d [FakeFilterClass1,"},{"line_number":77,"context_line":"                                        FakeFilterClass2]"},{"line_number":78,"context_line":"        self.assertRaises(exception.SchedulerHostFilterNotFound,"},{"line_number":79,"context_line":"                self.host_manager._choose_host_filters, None, fake_properties)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpJ0%3D","line":77,"updated":"2014-01-23 16:18:28.000000000","message":"Align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.flags(scheduler_default_filters\u003d[\u0027FakeFilterClass1\u0027])"},{"line_number":86,"context_line":"        self.host_manager.filter_classes \u003d [FakeFilterClass1,"},{"line_number":87,"context_line":"                                        FakeFilterClass2]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Test we returns 1 correct function"},{"line_number":90,"context_line":"        filter_classes \u003d self.host_manager._choose_host_filters(None,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpJc%3D","line":87,"updated":"2014-01-23 16:18:28.000000000","message":"align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"a943153463e2f82367d497f8f09f15b489c7c4d4","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Test we returns 1 correct function"},{"line_number":90,"context_line":"        filter_classes \u003d self.host_manager._choose_host_filters(None,"},{"line_number":91,"context_line":"                                                            fake_properties)"},{"line_number":92,"context_line":"        self.assertEqual(1, len(filter_classes))"},{"line_number":93,"context_line":"        self.assertEqual(\u0027FakeFilterClass2\u0027, filter_classes[0].__name__)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BpJY%3D","line":91,"updated":"2014-01-23 16:18:28.000000000","message":"align arguments","commit_id":"57bb2bc9c6790b51188eaff7d39abac3999faa38"}]}
