)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e021346ff06c2340f4a7fcda7354583618b088dd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michael Still \u003cmikal@stillhq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-29 15:21:13 +1100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Convert build_and_run_instance to objects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change involved refactoring a number of test helpers so they know"},{"line_number":10,"context_line":"whether to create stubs for an object version or a traditional version of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAT3%2F%2F1F4%3D","line":7,"updated":"2013-12-30 15:32:18.000000000","message":"build_and_run_instance is already set up for objects.  It\u0027s _spawn that\u0027s being converted mainly.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4507164984455adf39baa1e6ed7eb8c105368c12","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michael Still \u003cmikal@stillhq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-29 15:21:13 +1100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Convert build_and_run_instance to objects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change involved refactoring a number of test helpers so they know"},{"line_number":10,"context_line":"whether to create stubs for an object version or a traditional version of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAT3%2F%2Fzu4%3D","line":7,"in_reply_to":"AAAAT3%2F%2F1F4%3D","updated":"2013-12-31 05:04:47.000000000","message":"Ahhh sorry, this is because I merged two patches. I\u0027ll fix.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"}],"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a141a2c6f675690a73a7c8b3e8bbef2452b64cd4","unresolved":false,"context_lines":[{"line_number":1439,"context_line":"                LOG.exception(_(\u0027Instance failed block device setup\u0027),"},{"line_number":1440,"context_line":"                              instance\u003dinstance)"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"    @object_compat"},{"line_number":1443,"context_line":"    def _spawn(self, context, instance, image_meta, network_info,"},{"line_number":1444,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1445,"context_line":"               set_access_ip\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8qRA%3D","line":1442,"updated":"2013-12-23 15:32:31.000000000","message":"This needs to be added to the entry point method, IMHO. Adding it to an inner method like this means that we start with a instance dict and then convert to an object for just this, which seems wrong. What we have been doing elsewhere is only putting this on the top-level method (i.e. build_and_run_instance() in this case I think) and making sure all the plumbing below it can handle objects.","commit_id":"0ec0dda93a73ec2f9e7ba6aeef6cd1efda53fb11"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"9b5848527b5ffc52c433eececf44cc5e52252f1b","unresolved":false,"context_lines":[{"line_number":1439,"context_line":"                LOG.exception(_(\u0027Instance failed block device setup\u0027),"},{"line_number":1440,"context_line":"                              instance\u003dinstance)"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"    @object_compat"},{"line_number":1443,"context_line":"    def _spawn(self, context, instance, image_meta, network_info,"},{"line_number":1444,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1445,"context_line":"               set_access_ip\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8pT8%3D","line":1442,"in_reply_to":"AAAATn%2F8qRA%3D","updated":"2013-12-23 19:29:55.000000000","message":"The other option would be to have the scheduler create the object when it pulls the instance from the db and pass it all the way from the top.\n\nThis is where the (sort of)overlap with my work comes in.  When https://blueprints.launchpad.net/nova/+spec/remove-cast-to-schedule-run-instance is complete the conductor manager will send an object to build_and_run_instance in this manager and this code path will no longer be in use.","commit_id":"0ec0dda93a73ec2f9e7ba6aeef6cd1efda53fb11"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8b22012168cbb305eb7bbb343e35ad4a3874d06e","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1445,"context_line":"               set_access_ip\u003dFalse):"},{"line_number":1446,"context_line":"        \"\"\"Spawn an instance with error logging and update its power state.\"\"\""},{"line_number":1447,"context_line":"        instance[\u0027vm_state\u0027] \u003d vm_states.BUILDING"},{"line_number":1448,"context_line":"        instance[\u0027task_state\u0027] \u003d task_states.SPAWNING"},{"line_number":1449,"context_line":"        instance[\u0027expected_task_state\u0027] \u003d task_states.BLOCK_DEVICE_MAPPING"},{"line_number":1450,"context_line":"        instance.save()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8tPA%3D","line":1447,"updated":"2013-12-22 07:46:38.000000000","message":"I think that the convention is instance.vm_state. Can you please use that in all of the cases here","commit_id":"0ec0dda93a73ec2f9e7ba6aeef6cd1efda53fb11"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a141a2c6f675690a73a7c8b3e8bbef2452b64cd4","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1445,"context_line":"               set_access_ip\u003dFalse):"},{"line_number":1446,"context_line":"        \"\"\"Spawn an instance with error logging and update its power state.\"\"\""},{"line_number":1447,"context_line":"        instance[\u0027vm_state\u0027] \u003d vm_states.BUILDING"},{"line_number":1448,"context_line":"        instance[\u0027task_state\u0027] \u003d task_states.SPAWNING"},{"line_number":1449,"context_line":"        instance[\u0027expected_task_state\u0027] \u003d task_states.BLOCK_DEVICE_MAPPING"},{"line_number":1450,"context_line":"        instance.save()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8qTY%3D","line":1447,"in_reply_to":"AAAATn%2F8tPA%3D","updated":"2013-12-23 15:32:31.000000000","message":"Yes, for new objects-using code, we should be using attribute syntax. We have *not* been universally sanitizing existing code that uses dict syntax when converting to objects just because it adds noise to the patch.","commit_id":"0ec0dda93a73ec2f9e7ba6aeef6cd1efda53fb11"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1b4a69bc0c58eab6d07e8a314720a18a08eb551a","unresolved":false,"context_lines":[{"line_number":1462,"context_line":"        instance.task_state \u003d None"},{"line_number":1463,"context_line":"        instance.launched_at \u003d timeutils.utcnow()"},{"line_number":1464,"context_line":""},{"line_number":1465,"context_line":"        def _set_access_ip_values():"},{"line_number":1466,"context_line":"            \"\"\"Add access ip values for a given instance."},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"            If CONF.default_access_ip_network_name is set, this method will"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F3jg%3D","line":1465,"updated":"2013-12-29 11:57:38.000000000","message":"should this also have the decorator @object_compat","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e021346ff06c2340f4a7fcda7354583618b088dd","unresolved":false,"context_lines":[{"line_number":1462,"context_line":"        instance.task_state \u003d None"},{"line_number":1463,"context_line":"        instance.launched_at \u003d timeutils.utcnow()"},{"line_number":1464,"context_line":""},{"line_number":1465,"context_line":"        def _set_access_ip_values():"},{"line_number":1466,"context_line":"            \"\"\"Add access ip values for a given instance."},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"            If CONF.default_access_ip_network_name is set, this method will"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F1Fo%3D","line":1465,"in_reply_to":"AAAAT3%2F%2F3jg%3D","updated":"2013-12-30 15:32:18.000000000","message":"iirc this is only called in one place, so it\u0027s handled by the decorator on _spawn.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1b4a69bc0c58eab6d07e8a314720a18a08eb551a","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"                if vif[\u0027network\u0027][\u0027label\u0027] \u003d\u003d network_name:"},{"line_number":1480,"context_line":"                    for ip in vif.fixed_ips():"},{"line_number":1481,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":1482,"context_line":"                            instance[\u0027access_ip_v4\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1483,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 6:"},{"line_number":1484,"context_line":"                            instance[\u0027access_ip_v6\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1485,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F3jo%3D","line":1482,"updated":"2013-12-29 11:57:38.000000000","message":"why is this not instance.access_ip_v4?","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4507164984455adf39baa1e6ed7eb8c105368c12","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"                if vif[\u0027network\u0027][\u0027label\u0027] \u003d\u003d network_name:"},{"line_number":1480,"context_line":"                    for ip in vif.fixed_ips():"},{"line_number":1481,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":1482,"context_line":"                            instance[\u0027access_ip_v4\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1483,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 6:"},{"line_number":1484,"context_line":"                            instance[\u0027access_ip_v6\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1485,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2FzuM%3D","line":1482,"in_reply_to":"AAAAT3%2F%2F3jo%3D","updated":"2013-12-31 05:04:47.000000000","message":"Done","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1b4a69bc0c58eab6d07e8a314720a18a08eb551a","unresolved":false,"context_lines":[{"line_number":1481,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":1482,"context_line":"                            instance[\u0027access_ip_v4\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1483,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 6:"},{"line_number":1484,"context_line":"                            instance[\u0027access_ip_v6\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1485,"context_line":"                    return"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        if set_access_ip:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F3jk%3D","line":1484,"updated":"2013-12-29 11:57:38.000000000","message":"ditto?","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4507164984455adf39baa1e6ed7eb8c105368c12","unresolved":false,"context_lines":[{"line_number":1481,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":1482,"context_line":"                            instance[\u0027access_ip_v4\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1483,"context_line":"                        if ip[\u0027version\u0027] \u003d\u003d 6:"},{"line_number":1484,"context_line":"                            instance[\u0027access_ip_v6\u0027] \u003d ip[\u0027address\u0027]"},{"line_number":1485,"context_line":"                    return"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        if set_access_ip:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2FzuI%3D","line":1484,"in_reply_to":"AAAAT3%2F%2F3jk%3D","updated":"2013-12-31 05:04:47.000000000","message":"Done","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e021346ff06c2340f4a7fcda7354583618b088dd","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F1GI%3D","line":1568,"updated":"2013-12-30 15:32:18.000000000","message":"This won\u0027t be necessary since objects will be passed from conductor to here when this method starts being used.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4507164984455adf39baa1e6ed7eb8c105368c12","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2Fzt8%3D","line":1568,"in_reply_to":"AAAAT3%2F%2F1GI%3D","updated":"2013-12-31 05:04:47.000000000","message":"Do you think its unsafe? I figure there\u0027s no harm in having this until the whole world is converted? Or am I missing something?","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"86a46487e772ef80a74a0d44c5d5dd3be72d38b3","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2Fyp0%3D","line":1568,"in_reply_to":"AAAAT3%2F%2Fzt8%3D","updated":"2013-12-31 14:09:57.000000000","message":"I agree that this would be a safe change.  My objection is just that it implies that this method may receive a non object instance, which it shouldn\u0027t.  But since this is only a temporary measure during conversion I don\u0027t feel strongly about keeping the decorator off.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"095691c6f4e06d88dc8986a68faa7cc07d50ab9b","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                LOG.exception(_(\u0027Instance failed block device setup\u0027),"},{"line_number":1438,"context_line":"                              instance\u003dinstance)"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    @object_compat"},{"line_number":1441,"context_line":"    def _spawn(self, context, instance, image_meta, network_info,"},{"line_number":1442,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1443,"context_line":"               set_access_ip\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FzmQ%3D","line":1440,"updated":"2013-12-31 06:01:46.000000000","message":"I wonder if we should just put this on \u0027_run_instance\u0027.  The only place _spawn is called is in _build_instance().  And _build_instance() is called from build_and_run_instance() (which already accepts an object) and from _run_instance().  If we put this decorator on _run_instance(), then you should have objects all of the way down.\n\nI would normally ask to add it to run_instance(), but that call path  should be going away in favor of build_and_run_instance() after alaski finishes his conductor/scheduler work.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"fc4851e6825c1830a092f8ebd54b90c39a481be4","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                LOG.exception(_(\u0027Instance failed block device setup\u0027),"},{"line_number":1438,"context_line":"                              instance\u003dinstance)"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    @object_compat"},{"line_number":1441,"context_line":"    def _spawn(self, context, instance, image_meta, network_info,"},{"line_number":1442,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1443,"context_line":"               set_access_ip\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FzMo%3D","line":1440,"in_reply_to":"AAAAT3%2F%2FzaU%3D","updated":"2013-12-31 08:27:50.000000000","message":"I wasn\u0027t proposing the move as an optimization... just that it be moved a level up to _run_instance().   But, it\u0027s not a big deal to me.  We can do that later when we\u0027re sure _run_instance() is okay with objects itself.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"87d6c928eafe16ee57c181de79ffff4d3272be8e","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                LOG.exception(_(\u0027Instance failed block device setup\u0027),"},{"line_number":1438,"context_line":"                              instance\u003dinstance)"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    @object_compat"},{"line_number":1441,"context_line":"    def _spawn(self, context, instance, image_meta, network_info,"},{"line_number":1442,"context_line":"               block_device_info, injected_files, admin_password,"},{"line_number":1443,"context_line":"               set_access_ip\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FzaU%3D","line":1440,"in_reply_to":"AAAAT3%2F%2FzmQ%3D","updated":"2013-12-31 06:30:16.000000000","message":"This patch is one of a series which puts this decorator on all methods which called instance_update. The idea is once that\u0027s done and everything here is using objects I can start working down into the driver.\n\nTo be honest, its not a very costly operation to add the decorator to be safe. I\u0027m not sure what we\u0027re saving by optimizing here?","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"095691c6f4e06d88dc8986a68faa7cc07d50ab9b","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2Fzmc%3D","line":1568,"updated":"2013-12-31 06:01:46.000000000","message":"Not needed because this call is not used yet.  alaski already converted this method to accept objects so that it\u0027s ready when he finishes up this call path.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c1c6b556979c43bc37d252f7e23642dac67c9610","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2Fu0k%3D","line":1568,"in_reply_to":"AAAAT3%2F%2FwG0%3D","updated":"2014-01-02 18:41:53.000000000","message":"Thnx!","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"484739e1a82be52df3b61ebb266e7325cee00cff","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FwG0%3D","line":1568,"in_reply_to":"AAAAT3%2F%2Fypg%3D","updated":"2014-01-02 11:37:36.000000000","message":"I\u0027ve replaced the decorator with a NOTE instead.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"69b9f0e0eab6ca5c498fb0226cb289a3181316e1","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2Fypg%3D","line":1568,"in_reply_to":"AAAAT3%2F%2FzNA%3D","updated":"2013-12-31 14:13:15.000000000","message":"Hah, as I just added on my PS2 comment this is my feeling as well.  But I don\u0027t expect anyone to start calling this method except for my own patches, and I\u0027m assuming @object_compat will go away at some point, so I don\u0027t feel to strongly either way.  Though I would prefer it to be left off so that calling it without an object would result in an error almost immediately on line #1588.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"fc4851e6825c1830a092f8ebd54b90c39a481be4","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FzNA%3D","line":1568,"in_reply_to":"AAAAT3%2F%2FzaQ%3D","updated":"2013-12-31 08:27:50.000000000","message":"Yes, that\u0027s true, but you could also look at it another way: It implies that it\u0027s possible for this method to receive a dict version, which it will not.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"87d6c928eafe16ee57c181de79ffff4d3272be8e","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"                block_device_mapping)"},{"line_number":1566,"context_line":"        return {\u0027block_device_mapping\u0027: block_device_mapping}"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    @object_compat"},{"line_number":1569,"context_line":"    @wrap_exception()"},{"line_number":1570,"context_line":"    @reverts_task_state"},{"line_number":1571,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FzaQ%3D","line":1568,"in_reply_to":"AAAAT3%2F%2Fzmc%3D","updated":"2013-12-31 06:30:16.000000000","message":"As discussed in the previous patchset, I don\u0027t see the harm in having this here though. It makes it clearer to other developers that an object is intended here.","commit_id":"30b5e05ee73f174e4f23afb06c2ba269a3a55251"}],"nova/tests/compute/test_compute_mgr.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e021346ff06c2340f4a7fcda7354583618b088dd","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"        self.mox.StubOutWithMock(self.compute, \u0027_build_networks_for_instance\u0027)"},{"line_number":1104,"context_line":"        self.compute._build_networks_for_instance("},{"line_number":1105,"context_line":"                self.context, self.instance, self.requested_networks,"},{"line_number":1106,"context_line":"                self.security_groups).AndReturn(self.network_info)"},{"line_number":1107,"context_line":"        self._notify_about_instance_usage(\u0027create.start\u0027,"},{"line_number":1108,"context_line":"            extra_usage_info\u003d{\u0027image_name\u0027: self.image.get(\u0027name\u0027)})"},{"line_number":1109,"context_line":"        self._build_and_run_instance_update()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F1Eg%3D","line":1106,"updated":"2013-12-30 15:32:18.000000000","message":"Unless my eyes are deceiving me this is just a formatting change and should be left out.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4507164984455adf39baa1e6ed7eb8c105368c12","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"        self.mox.StubOutWithMock(self.compute, \u0027_build_networks_for_instance\u0027)"},{"line_number":1104,"context_line":"        self.compute._build_networks_for_instance("},{"line_number":1105,"context_line":"                self.context, self.instance, self.requested_networks,"},{"line_number":1106,"context_line":"                self.security_groups).AndReturn(self.network_info)"},{"line_number":1107,"context_line":"        self._notify_about_instance_usage(\u0027create.start\u0027,"},{"line_number":1108,"context_line":"            extra_usage_info\u003d{\u0027image_name\u0027: self.image.get(\u0027name\u0027)})"},{"line_number":1109,"context_line":"        self._build_and_run_instance_update()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2Fzt4%3D","line":1106,"in_reply_to":"AAAAT3%2F%2F1Eg%3D","updated":"2013-12-31 05:04:47.000000000","message":"Ahh yeah, sorry. I was more complicated before the rebase and I missed changing it back.","commit_id":"bbb26706515af50f6f5c6bfdf77ae8ab1ee8959f"}]}
