)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"db73b7602a998435bf7ddec9faadc52b07f04d8e","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"And a small change to the Ironic driver to load cache information from"},{"line_number":12,"context_line":"hosts, if present."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ic3f6be60b09fc6ea02ccc6a7c36254d108c84c5e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9af37de9_0d9e7656","line":13,"updated":"2015-05-11 13:10:27.000000000","message":"This is a feature, please can we have a blueprint for this.","commit_id":"4270389169c885def181732029bd64484deff314"}],"nova/scheduler/weights/ironic_cached_image.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"db73b7602a998435bf7ddec9faadc52b07f04d8e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class IronicCachedImageWeigher(weights.BaseHostWeigher):"},{"line_number":40,"context_line":"    # If we find a node that has the correct image cached, then we want"},{"line_number":41,"context_line":"    # to schedule to that node the most."},{"line_number":42,"context_line":"    cached_right_image_weight \u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"9af37de9_0db0b6f3","line":39,"updated":"2015-05-11 13:10:27.000000000","message":"why is this specific to ironic, surely any driver *could* report their cached images.","commit_id":"4270389169c885def181732029bd64484deff314"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"93bc5b08cd1d1c2eda5ad9023b3aa2694d97ce63","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # we would like to give the caching operation a chance to complete."},{"line_number":57,"context_line":"    caching_weight \u003d 0"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # These must be set for compatabiltiy with the weigher interface."},{"line_number":60,"context_line":"    minval \u003d caching_weight"},{"line_number":61,"context_line":"    maxval \u003d cached_right_image_weight"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_5f3c0893","line":59,"updated":"2015-04-13 13:18:52.000000000","message":"Nit if you push another: s/compatabiltiy/compatibility","commit_id":"4270389169c885def181732029bd64484deff314"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7b48335a051fe9b4324745b0fea5ff02ff2a8c82","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        request_image_id \u003d obj"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # Nodes in the midst of a caching operation get the caching weight."},{"line_number":87,"context_line":"        if stats.get(\u0027cache_status\u0027, None) \u003d\u003d \u0027caching\u0027:"},{"line_number":88,"context_line":"            return self.caching_weight"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        # Return the proper weight depending on whether the cached image"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_27fd22b4","line":87,"updated":"2015-04-10 13:40:37.000000000","message":"here is an example of why it\u0027s bad to pass arbitrary blobs to the scheduler... Provided that the semantics of cache_status is changing on the compute side (because of a rolling upgrade by example), you\u0027ll have to end up with something inconsistent with your filter. That\u0027s why we\u0027re trying to version all the data we write on the DB by using NovaObjects, so the scheduler can rehydrate the corresponding NovaObjects on its side and call the appropriate methods.","commit_id":"4270389169c885def181732029bd64484deff314"}],"nova/tests/unit/scheduler/weights/test_weights_cached_image.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"aff4eba7a1fed3d9072e06955e0377c2b84adf2d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                         weighed_host.weight)"},{"line_number":92,"context_line":"        self.assertEqual(\u0027host1\u0027, weighed_host.obj.host)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_unrelated_image_has_no_extra_weight(self):"},{"line_number":95,"context_line":"        hosts \u003d self._get_all_hosts()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        weighed_objects \u003d self.weight_handler.get_weighed_objects("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_3845826f","line":94,"updated":"2015-04-08 23:42:39.000000000","message":"Do we want to weigh these down somehow, to try to avoid blowing the cache more often than we should?\n\nThinking something between minval and the default.","commit_id":"51e66eaa74f801761d865c8780de999766b5d205"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"7e4ff14159ab5950966f90406786f22fe1113a36","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                         weighed_host.weight)"},{"line_number":92,"context_line":"        self.assertEqual(\u0027host1\u0027, weighed_host.obj.host)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_unrelated_image_has_no_extra_weight(self):"},{"line_number":95,"context_line":"        hosts \u003d self._get_all_hosts()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        weighed_objects \u003d self.weight_handler.get_weighed_objects("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_ce06af1b","line":94,"in_reply_to":"9aa53dc9_3845826f","updated":"2015-04-09 19:26:18.000000000","message":"Good idea. I will add some functionality related to this.","commit_id":"51e66eaa74f801761d865c8780de999766b5d205"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7b48335a051fe9b4324745b0fea5ff02ff2a8c82","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        if cache_status:"},{"line_number":291,"context_line":"            nodes_extra_specs[\u0027cache_image_id\u0027] \u003d ("},{"line_number":292,"context_line":"                    node.driver_info.get(\u0027cache_image_id\u0027, \u0027\u0027))"},{"line_number":293,"context_line":"            nodes_extra_specs[\u0027cache_status\u0027] \u003d cache_status"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        dic \u003d {"},{"line_number":296,"context_line":"            \u0027hypervisor_hostname\u0027: str(node.uuid),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_27e1a22d","line":293,"updated":"2015-04-10 13:40:37.000000000","message":"Ergh, I understand that\u0027s correct to add more details into a non-versioned nor typed dict, but the stats field below is just a placeholder for raw data at the moment, and we really don\u0027t like it.","commit_id":"4270389169c885def181732029bd64484deff314"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"93bc5b08cd1d1c2eda5ad9023b3aa2694d97ce63","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        if cache_status:"},{"line_number":291,"context_line":"            nodes_extra_specs[\u0027cache_image_id\u0027] \u003d ("},{"line_number":292,"context_line":"                    node.driver_info.get(\u0027cache_image_id\u0027, \u0027\u0027))"},{"line_number":293,"context_line":"            nodes_extra_specs[\u0027cache_status\u0027] \u003d cache_status"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        dic \u003d {"},{"line_number":296,"context_line":"            \u0027hypervisor_hostname\u0027: str(node.uuid),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_ffaf54e1","line":293,"in_reply_to":"9aa53dc9_27e1a22d","updated":"2015-04-13 13:18:52.000000000","message":"Is this a problem that a driver author can reasonably solve? Seems more like an architecture thing that needs to be solved globally.","commit_id":"4270389169c885def181732029bd64484deff314"}]}
