)]}'
{"nova/scheduler/filters/affinity_filter.py":[{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4904deba40e2e5487ccb398a4c45504a0f50bc5f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if affinity_uuids:"},{"line_number":40,"context_line":"            affinity_uuids \u003d set(affinity_uuids)"},{"line_number":41,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":42,"context_line":"                              for instance in host_state.instances])"},{"line_number":43,"context_line":"            return not host_uuids.intersection(affinity_uuids)"},{"line_number":44,"context_line":"        # With no different_host key"},{"line_number":45,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_8a29078c","line":42,"updated":"2015-03-10 01:40:30.000000000","message":"for should align to set(\u003c-here.  right?","commit_id":"d17b400d18efd12f73838d078d6f8c76bbeb7cef"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"712a2f9c35d9bc98b200465b078eff6a60507a4d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if affinity_uuids:"},{"line_number":40,"context_line":"            affinity_uuids \u003d set(affinity_uuids)"},{"line_number":41,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":42,"context_line":"                              for instance in host_state.instances])"},{"line_number":43,"context_line":"            return not host_uuids.intersection(affinity_uuids)"},{"line_number":44,"context_line":"        # With no different_host key"},{"line_number":45,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_eccfc855","line":42,"in_reply_to":"9a80dd14_4af4585a","updated":"2015-03-11 01:28:13.000000000","message":"sorry for this, my browser problem, now fix -:)","commit_id":"d17b400d18efd12f73838d078d6f8c76bbeb7cef"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b71acb2f39b4d166ab4c50cc391e56e30ae264b2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if affinity_uuids:"},{"line_number":40,"context_line":"            affinity_uuids \u003d set(affinity_uuids)"},{"line_number":41,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":42,"context_line":"                              for instance in host_state.instances])"},{"line_number":43,"context_line":"            return not host_uuids.intersection(affinity_uuids)"},{"line_number":44,"context_line":"        # With no different_host key"},{"line_number":45,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_4af4585a","line":42,"in_reply_to":"9a80dd14_8a29078c","updated":"2015-03-10 13:02:06.000000000","message":"No, the visual alignment is for the content inside the [].","commit_id":"d17b400d18efd12f73838d078d6f8c76bbeb7cef"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"4904deba40e2e5487ccb398a4c45504a0f50bc5f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        if affinity_uuids:"},{"line_number":63,"context_line":"            affinity_uuids \u003d set(affinity_uuids)"},{"line_number":64,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":65,"context_line":"                              for instance in host_state.instances])"},{"line_number":66,"context_line":"        if affinity_uuids and host_uuids:"},{"line_number":67,"context_line":"            return bool(host_uuids.intersection(affinity_uuids))"},{"line_number":68,"context_line":"        # With no same_host key or no instances"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_ca1f7f59","line":65,"updated":"2015-03-10 01:40:30.000000000","message":"ditto.","commit_id":"d17b400d18efd12f73838d078d6f8c76bbeb7cef"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a0b80e1cbe7c58131883709fe298e53fe72f4d52","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if affinity_uuids:"},{"line_number":40,"context_line":"            affinity_uuids \u003d set(affinity_uuids)"},{"line_number":41,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":42,"context_line":"                              for instance in host_state.instances])"},{"line_number":43,"context_line":"            return not host_uuids.intersection(affinity_uuids)"},{"line_number":44,"context_line":"        # With no different_host key"},{"line_number":45,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_60a481b9","line":42,"updated":"2015-03-12 03:01:09.000000000","message":"This here directly conflicts with your statement on the dependent patch that the new CONF option was designed to allow these filters to continue to be enabled, but \n\"will revert to the current DB calls\"...\n\nNothing is reverting to use the DB calls here.","commit_id":"2c4653f631c1806a10448737782a6e0f56a9235e"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0ad31c319f39031238986632f5026dbc90e8077c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if affinity_uuids:"},{"line_number":40,"context_line":"            affinity_uuids \u003d set(affinity_uuids)"},{"line_number":41,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":42,"context_line":"                              for instance in host_state.instances])"},{"line_number":43,"context_line":"            return not host_uuids.intersection(affinity_uuids)"},{"line_number":44,"context_line":"        # With no different_host key"},{"line_number":45,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_39ec6e8f","line":42,"in_reply_to":"9a80dd14_60a481b9","updated":"2015-03-12 13:40:22.000000000","message":"The host_state objects are populated with the instance info by HostManager. If the CONF option is turned off, or if the compute node hasn\u0027t updated yet (probably pre-Kilo), the HostManager makes the calls in _add_instance_info(). This way, the filters only have to have one behavior.","commit_id":"2c4653f631c1806a10448737782a6e0f56a9235e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4b50e648cf8cd5cdb2d214e603577b2408c86ce8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            host_uuids \u003d set([instance.uuid"},{"line_number":65,"context_line":"                              for instance in host_state.instances])"},{"line_number":66,"context_line":"        if affinity_uuids and host_uuids:"},{"line_number":67,"context_line":"            return bool(host_uuids.intersection(affinity_uuids))"},{"line_number":68,"context_line":"        # With no same_host key or no instances"},{"line_number":69,"context_line":"        return True"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_ee89e4ca","line":67,"updated":"2015-03-13 17:49:22.000000000","message":"IMHO, you should reproduce the same pattern as for agregates by providing a sched.filters.utils helper which would do that.\n\nThat way you would also only need to mock that helper in the tests and isolate the related tests","commit_id":"812a410d829ac7386423b02f427816074331f234"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1ea466844ddfd61ae02a77c947347e76a7c6c65c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AffinityFilter(filters.BaseHostFilter):"},{"line_number":29,"context_line":"    def __init__(self):"},{"line_number":30,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_6e2ba233","side":"PARENT","line":28,"updated":"2015-03-17 22:07:21.000000000","message":"Yay :)","commit_id":"6b684dcd7625c71391a10b589048ff7e0d22bb47"}],"nova/tests/unit/scheduler/fakes.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4b50e648cf8cd5cdb2d214e603577b2408c86ce8","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class FakeHostState(host_manager.HostState):"},{"line_number":85,"context_line":"    def __init__(self, host, node, attribute_dict, instances\u003dNone):"},{"line_number":86,"context_line":"        super(FakeHostState, self).__init__(host, node)"},{"line_number":87,"context_line":"        self.instances \u003d instances or objects.InstanceList()"},{"line_number":88,"context_line":"        for (key, val) in attribute_dict.iteritems():"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_8e3788fe","line":85,"updated":"2015-03-13 17:49:22.000000000","message":"I don\u0027t think it\u0027s necssary, you have the attribute_dict for updating it below L88","commit_id":"812a410d829ac7386423b02f427816074331f234"}],"nova/tests/unit/scheduler/filters/test_utils.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"039cc25c9787fc73e566d097039c54a96aa40ea9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        host_state.instances \u003d {instance.uuid: instance"},{"line_number":32,"context_line":"                                for instance in instances}"},{"line_number":33,"context_line":"        self.assertTrue(utils.instance_uuids_overlap(host_state, [\u0027aa\u0027]))"},{"line_number":34,"context_line":"        self.assertFalse(utils.instance_uuids_overlap(host_state, [\u0027zz\u0027]))"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_other_types_on_host(self):"},{"line_number":37,"context_line":"        inst1 \u003d objects.Instance(uuid\u003d\u0027aa\u0027, instance_type_id\u003d1)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_aee75aab","line":34,"updated":"2015-03-17 22:16:20.000000000","message":"I think we want some edge tests in here, both when there are no instances in state, and no hosts passed in.","commit_id":"4c0a0468d33b299559cd25706827afa04f9991bc"}]}
