)]}'
{"nova/filters.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3eefb41a38ea3d28c362870ae5b837aac928faa4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Base class for all filter classes.\"\"\""},{"line_number":30,"context_line":"    def _filter_one(self, obj, spec_obj):"},{"line_number":31,"context_line":"        \"\"\"Return True if it passes the filter, False otherwise."},{"line_number":32,"context_line":"        Override this in a subclass."},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        return True"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"1a26ad4f_62ad8c30","line":32,"updated":"2015-10-30 01:15:32.000000000","message":"Might be nice to add to the docstring of the base filter methods an indication that the spec_obj parameter is a nova.objects.RequestSpec object now.","commit_id":"6372ac408078a4cd531eb9bec08c00bea1c9804e"}],"nova/scheduler/filter_scheduler.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d2142ef68fd6e9b8c21eec85a5dc049ccc534c8b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            # will change for the next instance."},{"line_number":160,"context_line":"            chosen_host.obj.consume_from_instance(spec_obj)"},{"line_number":161,"context_line":"            if spec_obj.instance_group is not None:"},{"line_number":162,"context_line":"                spec_obj.instance_group.members.append(chosen_host.obj.host)"},{"line_number":163,"context_line":"        return selected_hosts"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _get_all_host_states(self, context):"}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_60dd516e","line":162,"updated":"2015-08-29 09:40:51.000000000","message":"This looks like wrong.\n\nThe member is \u0027instance\u0027, not the \u0027host\u0027.","commit_id":"42521b474bdc512f40a490d75928fef2aa38f761"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3eefb41a38ea3d28c362870ae5b837aac928faa4","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            chosen_host.obj.consume_from_instance(spec_obj)"},{"line_number":161,"context_line":"            if spec_obj.instance_group is not None:"},{"line_number":162,"context_line":"                spec_obj.instance_group.hosts.append(chosen_host.obj.host)"},{"line_number":163,"context_line":"                # hosts has to be not part of the updates when saving"},{"line_number":164,"context_line":"                spec_obj.instance_group.obj_reset_changes([\u0027hosts\u0027])"},{"line_number":165,"context_line":"        return selected_hosts"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"1a26ad4f_823c68e3","line":163,"updated":"2015-10-30 01:15:32.000000000","message":"Why do we not want the hosts in the server group(s) to be part of the update of the RequestSpec?","commit_id":"6372ac408078a4cd531eb9bec08c00bea1c9804e"}],"nova/scheduler/filters/__init__.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ad1513cc50e0b7442b7f8b3b136b6b0c97173230","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# TODO(sbauza): Remove that decorator once all filters are using RequestSpec"},{"line_number":53,"context_line":"# object directly."},{"line_number":54,"context_line":"def compat_legacy_props(function):"},{"line_number":55,"context_line":"    \"\"\"Decorator for returning a legacy filter_properties dictionary."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"da20952f_821009aa","line":53,"updated":"2015-09-02 13:24:18.000000000","message":"How about we keep this decorator for a while(maybe a release)? Then people have chance to update their out-of-tree filters.\n\nAnd we add UpgradeNote to the commit message to notice people can use this decorator to keep the compatible with their out-of-tree filters. And people should rewrite their filters with new reques_spec obj","commit_id":"7d4243335b96df5f24c3ec3d4118ac558496e4dc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"59eccbef84a9158708019ee96388c953167d5df2","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# TODO(sbauza): Remove that decorator once all filters are using RequestSpec"},{"line_number":53,"context_line":"# object directly."},{"line_number":54,"context_line":"def compat_legacy_props(function):"},{"line_number":55,"context_line":"    \"\"\"Decorator for returning a legacy filter_properties dictionary."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"da20952f_c5992b21","line":53,"in_reply_to":"da20952f_821009aa","updated":"2015-09-02 13:45:20.000000000","message":"No, we agreed to not leave something in-tree for just out-of-tree needs","commit_id":"7d4243335b96df5f24c3ec3d4118ac558496e4dc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2b5c26c8891d3ebdf2b17ef5db74c3761b2ed375","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @functools.wraps(function)"},{"line_number":62,"context_line":"    def decorated_host_passes(self, host_state, filter_properties):"},{"line_number":63,"context_line":"        if isinstance(filter_properties, objects.RequestSpec):"},{"line_number":64,"context_line":"            legacy_props \u003d filter_properties.to_legacy_filter_properties_dict()"},{"line_number":65,"context_line":"            legacy_props.update({\u0027request_spec\u0027: ("},{"line_number":66,"context_line":"                filter_properties.to_legacy_request_spec_dict()),"},{"line_number":67,"context_line":"                \u0027instance_type\u0027: filter_properties.flavor})"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa80f949_520c5442","line":64,"updated":"2015-11-03 10:01:07.000000000","message":"This is a little confuse when we know it is RequestSpec, but we still call it as filter_properties. But anyway this decorator will be removed soon","commit_id":"6acb2975e243b5c71575b5bd9761839df6e0c89a"}],"nova/tests/unit/scheduler/test_filters.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b9e66bb615765a39530190e9611c887d6d1bddde","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.mox.ReplayAll()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        result \u003d base_filter.filter_all(filter_obj_list, filter_properties)"},{"line_number":62,"context_line":"        self.assertTrue(inspect.isgenerator(result))"},{"line_number":63,"context_line":"        self.assertEqual([\u0027obj1\u0027, \u0027obj3\u0027], list(result))"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"da20952f_21881622","line":61,"updated":"2015-09-02 15:17:57.000000000","message":"Since the BaseFilter class has been changed to accept spec_obj instead of filter_properties, there are no methods in that module that use \u0027filter_properties\u0027. All references in this test of filters.pu should be updated accordingly to only refer to \u0027spec_obj\u0027.","commit_id":"07098940eb766582790220e1243ae3c5343d0d09"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7cdc51fc7891f63ce4044b1000692b1abd7eb239","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.mox.ReplayAll()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        result \u003d base_filter.filter_all(filter_obj_list, filter_properties)"},{"line_number":62,"context_line":"        self.assertTrue(inspect.isgenerator(result))"},{"line_number":63,"context_line":"        self.assertEqual([\u0027obj1\u0027, \u0027obj3\u0027], list(result))"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"da20952f_a7951641","line":61,"in_reply_to":"da20952f_21881622","updated":"2015-09-02 15:54:14.000000000","message":"Yeah, makes sense","commit_id":"07098940eb766582790220e1243ae3c5343d0d09"}]}
