)]}'
{"nova/scheduler/chance.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"82784fe61197cdc6e31ec0b2700db4a1558922c5","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":71,"context_line":"        \"\"\"Selects random destinations.\"\"\""},{"line_number":72,"context_line":"        num_instances \u003d request_spec[\u0027num_instances\u0027]"},{"line_number":73,"context_line":"        # NOTE(alaski): Returns a tuple for compatibility with filter_scheduler"},{"line_number":74,"context_line":"        return [(self._schedule(context, CONF.compute_topic, request_spec,"},{"line_number":75,"context_line":"                filter_properties), None) for i in range(num_instances)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm7g%3D","line":72,"updated":"2013-06-26 20:43:12.000000000","message":"I don\u0027t think num_instances is in request_spec anymore. How about iterating over instance_uuids like how it is done in select_hosts() or schedule_run_instance()?","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"6303149358cd99007488adf56d5596a74bbb13e3","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":71,"context_line":"        \"\"\"Selects random destinations.\"\"\""},{"line_number":72,"context_line":"        num_instances \u003d request_spec[\u0027num_instances\u0027]"},{"line_number":73,"context_line":"        # NOTE(alaski): Returns a tuple for compatibility with filter_scheduler"},{"line_number":74,"context_line":"        return [(self._schedule(context, CONF.compute_topic, request_spec,"},{"line_number":75,"context_line":"                filter_properties), None) for i in range(num_instances)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm1c%3D","line":72,"in_reply_to":"AAAAPn%2F%2Fm7g%3D","updated":"2013-06-26 21:01:50.000000000","message":"Good catch, thanks.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d67e4885702b1174841526eb7aef42ba37a120bf","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        # filter_scheduler"},{"line_number":80,"context_line":"        dests \u003d [(self._schedule(context, CONF.compute_topic, request_spec,"},{"line_number":81,"context_line":"                filter_properties), None) for i in range(num_instances)]"},{"line_number":82,"context_line":"        if len(dests) \u003c num_instances:"},{"line_number":83,"context_line":"            raise exception.NoValidHost(reason\u003d\u0027\u0027)"},{"line_number":84,"context_line":"        return dests"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2Ff5s%3D","line":82,"updated":"2013-06-29 06:17:26.000000000","message":"Minor nit but I am not sure that len(dests) will ever be \u003c num_instances. The chance scheduler will have an exception if there is no valid host.","commit_id":"4f3c5411d92d488b78f06212912fc7ae6d225b79"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"081e52a1b4c9045e79d526ae7fd49d42abaee461","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        # filter_scheduler"},{"line_number":80,"context_line":"        dests \u003d [(self._schedule(context, CONF.compute_topic, request_spec,"},{"line_number":81,"context_line":"                filter_properties), None) for i in range(num_instances)]"},{"line_number":82,"context_line":"        if len(dests) \u003c num_instances:"},{"line_number":83,"context_line":"            raise exception.NoValidHost(reason\u003d\u0027\u0027)"},{"line_number":84,"context_line":"        return dests"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FdaU%3D","line":82,"in_reply_to":"AAAAPn%2F%2Ff5s%3D","updated":"2013-07-01 14:33:13.000000000","message":"True.  I suppose it just makes it clear that there\u0027s a guarantee on length, but it\u0027s not necessary.  I will change this if I push another patchset.","commit_id":"4f3c5411d92d488b78f06212912fc7ae6d225b79"}],"nova/scheduler/driver.py":[{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"77f56d486944cc795915420dca3b637c0642a4c5","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        msg \u003d _(\"Driver must implement schedule_run_instance\")"},{"line_number":165,"context_line":"        raise NotImplementedError(msg)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":168,"context_line":"        \"\"\"Must override select_destinations method."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :return: A list of (host, node) tuples that satisifies the request_spec"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F4cg%3D","line":167,"updated":"2013-06-19 03:32:59.000000000","message":"It needs a test for checking unimplemented method just like we do for the others on nova.tests.scheduler.test_scheduler.SchedulerDriverBaseTestCase","commit_id":"0f9a262863dec8953f8eb8787c659a5664be85c6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f1811bc21a8a54f3901f13801e28652084a48f70","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        msg \u003d _(\"Driver must implement schedule_run_instance\")"},{"line_number":165,"context_line":"        raise NotImplementedError(msg)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":168,"context_line":"        \"\"\"Must override select_destinations method."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :return: A list of (host, node) tuples that satisifies the request_spec"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F3bU%3D","line":167,"in_reply_to":"AAAAPn%2F%2F4cg%3D","updated":"2013-06-19 14:18:54.000000000","message":"Good call, thanks.","commit_id":"0f9a262863dec8953f8eb8787c659a5664be85c6"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"a6b00b0e9472b167eb811fa26be65793eb81794e","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        msg \u003d _(\"Driver must implement schedule_run_instance\")"},{"line_number":165,"context_line":"        raise NotImplementedError(msg)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":168,"context_line":"        \"\"\"Must override select_destinations method."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :return: A list of (host, node) tuples that satisifies the request_spec"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FnCo%3D","line":167,"updated":"2013-06-26 19:46:05.000000000","message":"How does this fit in with select_hosts?  Are you aiming to replace it with this one?","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"39a1fd90c6b0c634a0f1c0a9816f5e6e07e5d3d2","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        msg \u003d _(\"Driver must implement schedule_run_instance\")"},{"line_number":165,"context_line":"        raise NotImplementedError(msg)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":168,"context_line":"        \"\"\"Must override select_destinations method."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :return: A list of (host, node) tuples that satisifies the request_spec"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm8I%3D","line":167,"in_reply_to":"AAAAPn%2F%2FnCo%3D","updated":"2013-06-26 20:12:52.000000000","message":"At some point it may be replaceable.  Baremetal makes this issue a bit fuzzy.  select_hosts does what I want but doesn\u0027t return the node for the selected host object.  select_destinations is basically exactly the same as select_hosts but returns (host, node) tuples.  But, while spawning an instance needs the node, resizes, rebuilds, and other concepts that don\u0027t fit into baremetal don\u0027t.\n\ntl;dr it doesn\u0027t necessarily need to replace select_hosts, but could.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"}],"nova/scheduler/filter_scheduler.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"82784fe61197cdc6e31ec0b2700db4a1558922c5","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm6M%3D","line":166,"updated":"2013-06-26 20:43:12.000000000","message":"Should throw a NoValidHost exception if the call to _schedule() returns an empty list.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"30efd6eaf7c582542e592b2fe8c6c12976b934d6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FkjY%3D","line":166,"in_reply_to":"AAAAPn%2F%2Fk%2FU%3D","updated":"2013-06-27 15:44:14.000000000","message":"Ok, maybe a bad example with 5+5. If I understand you correctly you mean that all 10 are put into ERROR status, right?\n\nThis is not how it currently works. I just verified this on my local devstack install and the ones that pass filtering end up as ACTIVE and the rest as ERROR.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"411bf650f7c2704d11db63a417ba3757fac2c0a3","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FkP0%3D","line":166,"in_reply_to":"AAAAPn%2F%2FkgM%3D","updated":"2013-06-27 17:06:55.000000000","message":"No, maybe you are right. As long as the instances are created identically I can to some degree see the point of just getting part of what I request. When VM ensembles comes in to play, then I definitely would want everything to fail.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"29647f68118166b4f616d10d8dca44a3d6f1bfd2","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FkgM%3D","line":166,"in_reply_to":"AAAAPn%2F%2FkjY%3D","updated":"2013-06-27 15:58:04.000000000","message":"It seems I\u0027ve misunderstood that code, and should have read through it again.  You\u0027re correct that it will build some and set the rest to ERROR.  Is that desirable though?  If I have a request_spec and part of it can\u0027t be met shouldn\u0027t the build fail?  Why would number of instances be different than other properties?","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"6303149358cd99007488adf56d5596a74bbb13e3","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FmzU%3D","line":166,"in_reply_to":"AAAAPn%2F%2Fm6M%3D","updated":"2013-06-26 21:01:50.000000000","message":"I\u0027m not sure I totally agree, but it does offer consistency with select_hosts.  If it\u0027s going to raise an exception I do think it should go a step further and raise if len(selected_hosts) \u003c len(instance_uuids).","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4cb83b66ead99fbb41f1b20e1d7d0fbfb1bf1506","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fk%2FI%3D","line":166,"in_reply_to":"AAAAPn%2F%2FmjY%3D","updated":"2013-06-27 13:29:17.000000000","message":"That\u0027s fair, but easily changeable.  I\u0027m fine with changing it here though.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"b4d990c587a1fe8ca275f711996aaf6bd2acb61a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FmjY%3D","line":166,"in_reply_to":"AAAAPn%2F%2FmuQ%3D","updated":"2013-06-26 22:10:20.000000000","message":"Another note on consistency. The corresponding method in chance will throw NoValidHost exceptions if raised within its schedule() method.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4cb83b66ead99fbb41f1b20e1d7d0fbfb1bf1506","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fk%2FU%3D","line":166,"in_reply_to":"AAAAPn%2F%2FmuQ%3D","updated":"2013-06-27 13:29:17.000000000","message":"In schedule_run_instance if only 5 are spawned out of 10 then those 5 will be put into ERROR status, effectively killing the entire group.  I would rather fail fast if we know the request can\u0027t be fulfilled.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"31535410c81571c617782000bb3de89eb353ba65","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        dests \u003d []"},{"line_number":164,"context_line":"        instance_uuids \u003d request_spec.get(\u0027instance_uuids\u0027)"},{"line_number":165,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":166,"context_line":"                                        filter_properties, instance_uuids)"},{"line_number":167,"context_line":"        for host in selected_hosts:"},{"line_number":168,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":169,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FmuQ%3D","line":166,"in_reply_to":"AAAAPn%2F%2FmzU%3D","updated":"2013-06-26 21:20:36.000000000","message":"The current behavior in schedule_run_instance() is if a request is for 10 instances and _schedule() only returns a list of 5, then those 5 are spawned before throwing a NoValidHost to alert the user.\n\nMaybe you are right in that the calling function should handle this instead of throwing here. Just looked at the existing code.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d67e4885702b1174841526eb7aef42ba37a120bf","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        if len(selected_hosts) \u003c num_instances:"},{"line_number":173,"context_line":"            raise exception.NoValidHost(reason\u003d\u0027\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        dests \u003d []"},{"line_number":176,"context_line":"        for host in selected_hosts:"},{"line_number":177,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":178,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2Ff5c%3D","line":175,"updated":"2013-06-29 06:17:26.000000000","message":"consider instead of line 175-179:\nreturn dests[(host.obj.host, host.obj.nodename) for host in selected_hosts]","commit_id":"4f3c5411d92d488b78f06212912fc7ae6d225b79"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"081e52a1b4c9045e79d526ae7fd49d42abaee461","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        if len(selected_hosts) \u003c num_instances:"},{"line_number":173,"context_line":"            raise exception.NoValidHost(reason\u003d\u0027\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        dests \u003d []"},{"line_number":176,"context_line":"        for host in selected_hosts:"},{"line_number":177,"context_line":"            dests.append((host.obj.host, host.obj.nodename))"},{"line_number":178,"context_line":"        return dests"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FdZs%3D","line":175,"in_reply_to":"AAAAPn%2F%2Ff5c%3D","updated":"2013-07-01 14:33:13.000000000","message":"Good call.  I will change this if I push another patchset.","commit_id":"4f3c5411d92d488b78f06212912fc7ae6d225b79"}],"nova/scheduler/manager.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"82784fe61197cdc6e31ec0b2700db4a1558922c5","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        hosts \u003d self.driver.select_hosts(context, request_spec,"},{"line_number":316,"context_line":"            filter_properties)"},{"line_number":317,"context_line":"        return jsonutils.to_primitive(hosts)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def select_destinations(self, context, request_spec, filter_properties):"},{"line_number":320,"context_line":"        \"\"\"Returns destinations(s) best suited for this request_spec and"},{"line_number":321,"context_line":"        filter_properties."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm6A%3D","line":318,"updated":"2013-06-26 20:43:12.000000000","message":"Should pass NoValidHost as a client exception over RPC.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"}],"nova/tests/scheduler/test_chance_scheduler.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"82784fe61197cdc6e31ec0b2700db4a1558922c5","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        hosts \u003d self.driver.select_hosts(ctxt, request_spec, {})"},{"line_number":198,"context_line":"        self.assertEquals([\u0027host3\u0027, \u0027host1\u0027], hosts)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def test_select_hosts_no_valid_host(self):"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        def _return_no_host(*args, **kwargs):"},{"line_number":203,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm4k%3D","line":200,"updated":"2013-06-26 20:43:12.000000000","message":"Add a test like this for the no valid host case.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"}],"nova/tests/scheduler/test_filter_scheduler.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"82784fe61197cdc6e31ec0b2700db4a1558922c5","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        self.assertEquals(len(hosts), 10)"},{"line_number":741,"context_line":"        self.assertEquals(hosts, selected_hosts)"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def test_select_hosts_no_valid_host(self):"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        def _return_no_host(*args, **kwargs):"},{"line_number":746,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fm4s%3D","line":743,"updated":"2013-06-26 20:43:12.000000000","message":"Same as for chance.","commit_id":"a353a1a9d2b1aed551fd10361a3e1573b22780bf"}]}
