)]}'
{"nova/conductor/manager.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"722064e63183f9d6fa5381178c6b192a68dd7810","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        #                 2.0 of the RPC API."},{"line_number":597,"context_line":"        request_spec \u003d scheduler_utils.build_request_spec(context, image,"},{"line_number":598,"context_line":"                                                          instances)"},{"line_number":599,"context_line":"        scheduler_utils.setup_instance_group(context, filter_properties)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        # TODO(danms): Remove this in version 2.0 of the RPC API"},{"line_number":602,"context_line":"        if (requested_networks and"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_2a610905","line":599,"updated":"2014-10-07 21:19:47.000000000","message":"I don\u0027t want to hold up this patch on what is purely a pet peeve of mine, but I really dislike dicts being used for pass by reference style updates.  There\u0027s nothing in Python to indicate it\u0027s happening so this method gives no real indication of what it\u0027s changing by the signature.  I would much prefer an explicit return here.","commit_id":"76cb0c7e35dc47310e7e865bd0d9322007971240"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9c6c05835d1ae0715f9cee8f6e6c5dc5e9d2ab38","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        #                 2.0 of the RPC API."},{"line_number":597,"context_line":"        request_spec \u003d scheduler_utils.build_request_spec(context, image,"},{"line_number":598,"context_line":"                                                          instances)"},{"line_number":599,"context_line":"        scheduler_utils.setup_instance_group(context, filter_properties)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        # TODO(danms): Remove this in version 2.0 of the RPC API"},{"line_number":602,"context_line":"        if (requested_networks and"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_0a732f16","line":599,"in_reply_to":"baa201ad_2a610905","updated":"2014-10-09 14:19:03.000000000","message":"Fair enough, will provide a change","commit_id":"76cb0c7e35dc47310e7e865bd0d9322007971240"}],"nova/scheduler/utils.py":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"548335d944dcb38cb9a046832b5506fac5fbce06","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \u0027ServerGroupAntiAffinityFilter\u0027)"},{"line_number":251,"context_line":"    update_group_hosts \u003d False"},{"line_number":252,"context_line":"    scheduler_hints \u003d filter_properties.get(\u0027scheduler_hints\u0027) or {}"},{"line_number":253,"context_line":"    group_hint \u003d scheduler_hints.get(\u0027group\u0027, None)"},{"line_number":254,"context_line":"    if group_hint:"},{"line_number":255,"context_line":"        group \u003d objects.InstanceGroup.get_by_hint(context, group_hint)"},{"line_number":256,"context_line":"        policies \u003d set((\u0027anti-affinity\u0027, \u0027affinity\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_2b4544b3","line":253,"updated":"2014-08-25 09:32:24.000000000","message":"default value of get() is None","commit_id":"c04e7c444e220a42fdd314a396b0b4a141b32282"},{"author":{"_account_id":10614,"name":"Alex Frolov","email":"afrolov@mirantis.com","username":"afrolov"},"change_message_id":"bdbe4322184bbd60f0c7764764a92c3218405055","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        policies \u003d set((\u0027anti-affinity\u0027, \u0027affinity\u0027))"},{"line_number":257,"context_line":"        if any((policy in policies) for policy in group.policies):"},{"line_number":258,"context_line":"            if (\u0027affinity\u0027 in group.policies and"},{"line_number":259,"context_line":"                    not _supports_affinity):"},{"line_number":260,"context_line":"                    msg \u003d _(\"ServerGroupAffinityFilter not configured\")"},{"line_number":261,"context_line":"                    LOG.error(msg)"},{"line_number":262,"context_line":"                    raise exception.NoValidHost(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_a9f19c02","line":259,"updated":"2014-09-04 08:52:32.000000000","message":"Why is here double indent? Please delete one.\nDo the same for all such cases","commit_id":"e0d43339f56af395cafdb208180d6cbf35924b43"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"cc5368dcd9c1a0ec753bcab5c4dcd397d2c4909e","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        policies \u003d set((\u0027anti-affinity\u0027, \u0027affinity\u0027))"},{"line_number":257,"context_line":"        if any((policy in policies) for policy in group.policies):"},{"line_number":258,"context_line":"            if (\u0027affinity\u0027 in group.policies and"},{"line_number":259,"context_line":"                    not _supports_affinity):"},{"line_number":260,"context_line":"                    msg \u003d _(\"ServerGroupAffinityFilter not configured\")"},{"line_number":261,"context_line":"                    LOG.error(msg)"},{"line_number":262,"context_line":"                    raise exception.NoValidHost(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_c70fa786","line":259,"in_reply_to":"fa98f980_a9f19c02","updated":"2014-09-04 10:03:23.000000000","message":"That\u0027s just copy/paste from https://review.openstack.org/#/c/110043/5/nova/scheduler/filter_scheduler.py but I can handle the fix here.","commit_id":"e0d43339f56af395cafdb208180d6cbf35924b43"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"9175a0ab5c0b3da16d2fd531346c241237cfc914","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        policies \u003d set((\u0027anti-affinity\u0027, \u0027affinity\u0027))"},{"line_number":257,"context_line":"        if any((policy in policies) for policy in group.policies):"},{"line_number":258,"context_line":"            if (\u0027affinity\u0027 in group.policies and not _supports_affinity):"},{"line_number":259,"context_line":"                msg \u003d _(\"ServerGroupAffinityFilter not configured\")"},{"line_number":260,"context_line":"                LOG.error(msg)"},{"line_number":261,"context_line":"                raise exception.NoValidHost(reason\u003dmsg)"},{"line_number":262,"context_line":"            if (\u0027anti-affinity\u0027 in group.policies and"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_0a7fcf15","line":259,"updated":"2014-09-05 10:19:03.000000000","message":"nit: I know that this is just a copy, but it would be great if you add here _LE( instead of _(","commit_id":"7a248e79c8386d97de6404560ff74c7819b4bead"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ce97a21a4f43af892fff4b0be2eec9627984ceca","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"def setup_instance_group(context, filter_properties):"},{"line_number":247,"context_line":"    _supports_affinity \u003d validate_filter("},{"line_number":248,"context_line":"        \u0027ServerGroupAffinityFilter\u0027)"},{"line_number":249,"context_line":"    _supports_anti_affinity \u003d validate_filter("},{"line_number":250,"context_line":"        \u0027ServerGroupAntiAffinityFilter\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_9da100ac","line":247,"updated":"2014-09-30 14:35:36.000000000","message":"this means that we are validating the filter each time that a schedule takes place. this is really a waiste as this only needs to be done once. prior to this it was done when the class was started and a var from then on. Now it is done each time. Consider a global variable or adidng a parameter to the method indicating if it exists or not.","commit_id":"eba5cf5fadab9725aeea9e3cc3256d4de248b19e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ce97a21a4f43af892fff4b0be2eec9627984ceca","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \u0027ServerGroupAntiAffinityFilter\u0027)"},{"line_number":251,"context_line":"    update_group_hosts \u003d False"},{"line_number":252,"context_line":"    scheduler_hints \u003d filter_properties.get(\u0027scheduler_hints\u0027) or {}"},{"line_number":253,"context_line":"    group_hint \u003d scheduler_hints.get(\u0027group\u0027, None)"},{"line_number":254,"context_line":"    if group_hint:"},{"line_number":255,"context_line":"        group \u003d objects.InstanceGroup.get_by_hint(context, group_hint)"},{"line_number":256,"context_line":"        policies \u003d set((\u0027anti-affinity\u0027, \u0027affinity\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_7d17fced","line":253,"updated":"2014-09-30 14:35:36.000000000","message":"you do not need the None here - this is returned by default","commit_id":"eba5cf5fadab9725aeea9e3cc3256d4de248b19e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e593a7dd56dd607a54f4f2be20df1cc20e87b88f","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    return filter in CONF.scheduler_default_filters"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"_supports_affinity \u003d None"},{"line_number":247,"context_line":"_supports_anti_affinity \u003d None"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_e6908d97","line":246,"updated":"2014-10-02 09:04:30.000000000","message":"thanks for addressing my commets. can you please change this variable to upper case.","commit_id":"b5df4a821753dab30172ac92447abf8383adad6a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"204da5fd01b9f29e834558212b458de2c70b6d01","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    return filter in CONF.scheduler_default_filters"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"_supports_affinity \u003d None"},{"line_number":247,"context_line":"_supports_anti_affinity \u003d None"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_27f530ee","line":246,"in_reply_to":"baa201ad_e6908d97","updated":"2014-10-02 10:59:18.000000000","message":"Done","commit_id":"b5df4a821753dab30172ac92447abf8383adad6a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a26b14f57d877d85da46ec1fbfb05646e7599f04","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    global _supports_affinity"},{"line_number":252,"context_line":"    if _supports_affinity is None:"},{"line_number":253,"context_line":"        _supports_affinity \u003d validate_filter("},{"line_number":254,"context_line":"            \u0027ServerGroupAffinityFilter\u0027)"},{"line_number":255,"context_line":"    global _supports_anti_affinity"},{"line_number":256,"context_line":"    if _supports_anti_affinity is None:"},{"line_number":257,"context_line":"        _supports_anti_affinity \u003d validate_filter("}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_01f2e3d1","line":254,"updated":"2014-10-01 23:52:42.000000000","message":"Do we need scheduler api to get what filters supported by scheduler? Or we will add that api when split the scheduler?","commit_id":"b5df4a821753dab30172ac92447abf8383adad6a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"204da5fd01b9f29e834558212b458de2c70b6d01","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    global _supports_affinity"},{"line_number":252,"context_line":"    if _supports_affinity is None:"},{"line_number":253,"context_line":"        _supports_affinity \u003d validate_filter("},{"line_number":254,"context_line":"            \u0027ServerGroupAffinityFilter\u0027)"},{"line_number":255,"context_line":"    global _supports_anti_affinity"},{"line_number":256,"context_line":"    if _supports_anti_affinity is None:"},{"line_number":257,"context_line":"        _supports_anti_affinity \u003d validate_filter("}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_67b01844","line":254,"in_reply_to":"baa201ad_01f2e3d1","updated":"2014-10-02 10:59:18.000000000","message":"No, scheduler.utils is an helper library for other Nova components and will still be considered reasonably OK for being imported in other Nova bits.","commit_id":"b5df4a821753dab30172ac92447abf8383adad6a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a26b14f57d877d85da46ec1fbfb05646e7599f04","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            group_hosts \u003d set(group.get_hosts(context))"},{"line_number":279,"context_line":"            filter_properties[\u0027group_hosts\u0027] \u003d user_hosts | group_hosts"},{"line_number":280,"context_line":"            filter_properties[\u0027group_policies\u0027] \u003d group.policies"},{"line_number":281,"context_line":"    filter_properties[\u0027group_updated\u0027] \u003d update_group_hosts"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_41d4eb1f","line":281,"updated":"2014-10-01 23:52:42.000000000","message":"Looks like we needn\u0027t this parameter. We just check \"filter_properties.get(\u0027group_hosts\u0027) !\u003d None\" at line 214 in https://review.openstack.org/#/c/110043/9/nova/scheduler/filter_scheduler.py","commit_id":"b5df4a821753dab30172ac92447abf8383adad6a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"204da5fd01b9f29e834558212b458de2c70b6d01","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            group_hosts \u003d set(group.get_hosts(context))"},{"line_number":279,"context_line":"            filter_properties[\u0027group_hosts\u0027] \u003d user_hosts | group_hosts"},{"line_number":280,"context_line":"            filter_properties[\u0027group_policies\u0027] \u003d group.policies"},{"line_number":281,"context_line":"    filter_properties[\u0027group_updated\u0027] \u003d update_group_hosts"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_07ee6c22","line":281,"in_reply_to":"baa201ad_41d4eb1f","updated":"2014-10-02 10:59:18.000000000","message":"I don\u0027t understand what the hell happened with this commit but indeed filter_scheduler should look at group_updated and not group_hosts","commit_id":"b5df4a821753dab30172ac92447abf8383adad6a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fd6b4549d2ef59c813e6d39cc2fb7b6bfa2bd403","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            group_hosts \u003d set(group.get_hosts(context))"},{"line_number":287,"context_line":"            filter_properties[\u0027group_hosts\u0027] \u003d user_hosts | group_hosts"},{"line_number":288,"context_line":"            filter_properties[\u0027group_policies\u0027] \u003d group.policies"},{"line_number":289,"context_line":"    return update_group_hosts"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_b4aa3618","line":289,"updated":"2014-10-13 17:44:15.000000000","message":"I would expect filter_properties to be returned here.  Although looking at this a bit closer, why is filter_properties even passed into this method.  You could just pass in filter_properties.get(\u0027scheduler_hints\u0027, {}).get(group, {}) and make this method not reliant on the internal structure of filter_properties.  Then just return the group information and add it to filter_properties elsewhere.","commit_id":"1ebda2874d54e8e026b30237db68769dc3b575cd"}],"nova/tests/conductor/test_conductor.py":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"548335d944dcb38cb9a046832b5506fac5fbce06","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                self.context,"},{"line_number":1230,"context_line":"                instance_type[\u0027flavorid\u0027]).AndReturn(\u0027fake-specs\u0027)"},{"line_number":1231,"context_line":"        scheduler_utils.setup_instance_group("},{"line_number":1232,"context_line":"            self.context, {})"},{"line_number":1233,"context_line":"        self.conductor_manager.scheduler_rpcapi.select_destinations("},{"line_number":1234,"context_line":"                self.context, {\u0027image\u0027: {\u0027fake_data\u0027: \u0027should_pass_silently\u0027},"},{"line_number":1235,"context_line":"                    \u0027instance_properties\u0027: jsonutils.to_primitive("}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_cb24d010","line":1232,"updated":"2014-08-25 09:32:24.000000000","message":"this can be put in one line","commit_id":"c04e7c444e220a42fdd314a396b0b4a141b32282"}]}
