)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"46f85767769d79322197c60a84ede82a4a28cb8f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"required to enable live migration in the xenapi driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This changes ensure that checks that driver specific checks"},{"line_number":13,"context_line":"are only performed when that driver is enabled."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The complication is that some of these checks require"},{"line_number":16,"context_line":"information to be passed between the source and destination"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"AAAAKX%2F%2F73Q%3D","line":13,"updated":"2012-07-13 19:00:43.000000000","message":"femtonit: This paragraph just doesn\u0027t track…","commit_id":"11c5fff83b39b3ab4ae9610aaa7a1878304916e7"}],"nova/compute/api.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4727b136698498315a81febec888082603b87963","unresolved":false,"context_lines":[{"line_number":1636,"context_line":"        self.scheduler_rpcapi.live_migration(context,"},{"line_number":1637,"context_line":"                block_migration,"},{"line_number":1638,"context_line":"                disk_over_commit,"},{"line_number":1639,"context_line":"                instance[\u0027uuid\u0027],"},{"line_number":1640,"context_line":"                host,"},{"line_number":1641,"context_line":"                topic\u003dFLAGS.compute_topic)"},{"line_number":1642,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F7Jo%3D","line":1639,"updated":"2012-06-27 20:03:58.000000000","message":"Should this change be part of a separate patch?","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2285d59cbee77ce7c8e6baf8c6e23746673a1668","unresolved":false,"context_lines":[{"line_number":1636,"context_line":"        self.scheduler_rpcapi.live_migration(context,"},{"line_number":1637,"context_line":"                block_migration,"},{"line_number":1638,"context_line":"                disk_over_commit,"},{"line_number":1639,"context_line":"                instance[\u0027uuid\u0027],"},{"line_number":1640,"context_line":"                host,"},{"line_number":1641,"context_line":"                topic\u003dFLAGS.compute_topic)"},{"line_number":1642,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F6%2FU%3D","line":1639,"in_reply_to":"AAAAI3%2F%2F7Jo%3D","updated":"2012-06-27 21:48:34.000000000","message":"I added this due to the merge with the rpcapi changes. I agree, with that approach, but I was following the approach of working in a feature branch, stabilising the code, then squashing the changes and submitting to trunk. I understand the rpcapi now, so I could go through and try to revert that change, and re-test everything?","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"}],"nova/compute/manager.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"b4d2c18eff7ba614ed32611237d6f519d56a9f71","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":235,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8pA%3D","line":236,"updated":"2012-07-12 19:33:29.000000000","message":"This version should be bumped to 1.2.","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"34874c99da86e0f9f9efeeffc4c4bef6a37a99ff","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class ComputeManager(manager.SchedulerDependentManager):"},{"line_number":235,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8PE%3D","line":236,"in_reply_to":"AAAAKX%2F%2F8pA%3D","updated":"2012-07-13 08:58:46.000000000","message":"Done","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"b4d2c18eff7ba614ed32611237d6f519d56a9f71","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    API version history:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        1.0 - Initial version."},{"line_number":57,"context_line":"        1.1 - Adds get_host_uptime()"},{"line_number":58,"context_line":"    \u0027\u0027\u0027"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8o0%3D","line":56,"updated":"2012-07-12 19:33:29.000000000","message":"1.2 should be added here","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"34874c99da86e0f9f9efeeffc4c4bef6a37a99ff","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    API version history:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        1.0 - Initial version."},{"line_number":57,"context_line":"        1.1 - Adds get_host_uptime()"},{"line_number":58,"context_line":"    \u0027\u0027\u0027"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8PA%3D","line":56,"in_reply_to":"AAAAKX%2F%2F8o0%3D","updated":"2012-07-13 08:58:46.000000000","message":"Done","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"b4d2c18eff7ba614ed32611237d6f519d56a9f71","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        1.0 - Initial version."},{"line_number":57,"context_line":"        1.1 - Adds get_host_uptime()"},{"line_number":58,"context_line":"    \u0027\u0027\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8ow%3D","line":59,"updated":"2012-07-12 19:33:29.000000000","message":"This actually should have been left at 1.0, but I\u0027m going to address and clarify that in another patch.","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"b4d2c18eff7ba614ed32611237d6f519d56a9f71","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance, destination,"},{"line_number":91,"context_line":"            block_migration, disk_over_commit):"},{"line_number":92,"context_line":"        self.call(ctxt, self.make_msg(\u0027check_can_live_migrate_destination\u0027,"},{"line_number":93,"context_line":"                           instance_id\u003dinstance[\u0027id\u0027],"},{"line_number":94,"context_line":"                           block_migration\u003dblock_migration,"},{"line_number":95,"context_line":"                           disk_over_commit\u003ddisk_over_commit),"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8oc%3D","line":92,"updated":"2012-07-12 19:33:29.000000000","message":"In all of these new functions, you should set the version to 1.2 to indicate that these require that the manager be at least version 1.2 for this to work.","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"34874c99da86e0f9f9efeeffc4c4bef6a37a99ff","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance, destination,"},{"line_number":91,"context_line":"            block_migration, disk_over_commit):"},{"line_number":92,"context_line":"        self.call(ctxt, self.make_msg(\u0027check_can_live_migrate_destination\u0027,"},{"line_number":93,"context_line":"                           instance_id\u003dinstance[\u0027id\u0027],"},{"line_number":94,"context_line":"                           block_migration\u003dblock_migration,"},{"line_number":95,"context_line":"                           disk_over_commit\u003ddisk_over_commit),"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8O8%3D","line":92,"in_reply_to":"AAAAKX%2F%2F8oc%3D","updated":"2012-07-13 08:58:46.000000000","message":"Done","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"}],"nova/virt/driver.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"3e7dc2b73c177c1eb1eee7ca610abdcbb2737f7f","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            nova.db.sqlalchemy.models.Instance object"},{"line_number":369,"context_line":"            instance object that is migrated."},{"line_number":370,"context_line":"        :params dest: destination host"},{"line_number":371,"context_line":"        :params block_migration: destination host"},{"line_number":372,"context_line":"        :params post_method:"},{"line_number":373,"context_line":"            post operation method."},{"line_number":374,"context_line":"            expected nova.compute.manager.post_live_migration."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAI3%2F%2F%2Bnc%3D","line":371,"updated":"2012-06-21 21:17:09.000000000","message":"This comment doesn\u0027t appear to make sense, since the variable is a boolean","commit_id":"faf35c08e4f779926554482363285727ac5e0cd2"}],"nova/virt/libvirt/connection.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"3e7dc2b73c177c1eb1eee7ca610abdcbb2737f7f","unresolved":false,"context_lines":[{"line_number":2420,"context_line":"        # since bridge is not set up, ensure_filtering_rules_for instance"},{"line_number":2421,"context_line":"        # fails."},{"line_number":2422,"context_line":"        # Retry operation is necessary because continuously request comes,"},{"line_number":2423,"context_line":"        # concorrent request occurs to iptables, then it complains."},{"line_number":2424,"context_line":"        max_retry \u003d FLAGS.live_migration_retry_count"},{"line_number":2425,"context_line":"        for cnt in range(max_retry):"},{"line_number":2426,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAI3%2F%2F%2Bms%3D","line":2423,"updated":"2012-06-21 21:17:09.000000000","message":"Maybe it\u0027s just me, but this comment is really hard to follow. Perhaps reword?","commit_id":"faf35c08e4f779926554482363285727ac5e0cd2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"bead2a524425fa2ae88a6cd3ab83125556ee4743","unresolved":false,"context_lines":[{"line_number":2176,"context_line":"        except exception.InvalidCPUInfo:"},{"line_number":2177,"context_line":"            src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2178,"context_line":"            LOG.exception(_(\"host %(dest)s is not compatible with \""},{"line_number":2179,"context_line":"                                \"original host %(src)s.\") % locals())"},{"line_number":2180,"context_line":"            raise"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"    def _live_migration_storage_check(self, context, instance_ref, dest,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F7Dk%3D","line":2179,"updated":"2012-06-27 21:04:41.000000000","message":"pep8 alignment","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2285d59cbee77ce7c8e6baf8c6e23746673a1668","unresolved":false,"context_lines":[{"line_number":2176,"context_line":"        except exception.InvalidCPUInfo:"},{"line_number":2177,"context_line":"            src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2178,"context_line":"            LOG.exception(_(\"host %(dest)s is not compatible with \""},{"line_number":2179,"context_line":"                                \"original host %(src)s.\") % locals())"},{"line_number":2180,"context_line":"            raise"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"    def _live_migration_storage_check(self, context, instance_ref, dest,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F6%2FM%3D","line":2179,"in_reply_to":"AAAAI3%2F%2F7Dk%3D","updated":"2012-06-27 21:48:34.000000000","message":"sure, will fix that.","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03e8da7b388219b14a780e38e10c375e0b80fac8","unresolved":false,"context_lines":[{"line_number":2223,"context_line":"        # Checking cpuinfo."},{"line_number":2224,"context_line":"        try:"},{"line_number":2225,"context_line":"            self.compute_rpcapi.compare_cpu(context,"},{"line_number":2226,"context_line":"                                            oservice_ref[\u0027cpu_info\u0027], dest)"},{"line_number":2227,"context_line":"        except exception.InvalidCPUInfo:"},{"line_number":2228,"context_line":"            src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2229,"context_line":"            LOG.exception(_(\"host %(dest)s is not compatible with \""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAKH%2F%2F%2BtQ%3D","line":2226,"updated":"2012-07-06 09:20:56.000000000","message":"Same issue here.","commit_id":"934d862a66e7c2531f75900c123de1a19a6450b5"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"e89c57a0e8930de4380a826f233cfa4d4d5d91cd","unresolved":false,"context_lines":[{"line_number":2269,"context_line":"        src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2270,"context_line":""},{"line_number":2271,"context_line":"        # TODO(johngarbutt) - can the two calls not become local calls"},{"line_number":2272,"context_line":"        # then do RPC for just the check?"},{"line_number":2273,"context_line":"        filename \u003d self.compute_rpcapi.\\"},{"line_number":2274,"context_line":"                    create_shared_storage_test_file(context, dest)"},{"line_number":2275,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAKH%2F%2F%2Bys%3D","line":2272,"updated":"2012-07-06 01:33:58.000000000","message":"I really dislike making rpc calls from the driver layer. would be nice if we could move this up to manager somehow.","commit_id":"934d862a66e7c2531f75900c123de1a19a6450b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03e8da7b388219b14a780e38e10c375e0b80fac8","unresolved":false,"context_lines":[{"line_number":2269,"context_line":"        src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2270,"context_line":""},{"line_number":2271,"context_line":"        # TODO(johngarbutt) - can the two calls not become local calls"},{"line_number":2272,"context_line":"        # then do RPC for just the check?"},{"line_number":2273,"context_line":"        filename \u003d self.compute_rpcapi.\\"},{"line_number":2274,"context_line":"                    create_shared_storage_test_file(context, dest)"},{"line_number":2275,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAKH%2F%2F%2BsM%3D","line":2272,"in_reply_to":"AAAAKH%2F%2F%2Bys%3D","updated":"2012-07-06 09:20:56.000000000","message":"I kinda agree, but it this stuff only needs to be done in the libvirt case.\n\nWe already have this issue in XenAPI driver for the case where the compute node is joined to a pool so we need to talk to the master. It is driver specific inter-compute communication.\n\nI could do something like add calls in the driver like \"is_shared_storage_check_required\" and another method for \"is_cpu_check_required\" etc.\n\nBut that seems much less tidy compared to using the driver model, like we have above.","commit_id":"934d862a66e7c2531f75900c123de1a19a6450b5"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"32729a9fb90e3d9f7dd13c4173ec10553d333c8b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from nova import block_device"},{"line_number":58,"context_line":"from nova.compute import instance_types"},{"line_number":59,"context_line":"from nova.compute import power_state"},{"line_number":60,"context_line":"from nova.compute import rpcapi as compute_rpcapi"},{"line_number":61,"context_line":"from nova.compute import utils as compute_utils"},{"line_number":62,"context_line":"from nova import context as nova_context"},{"line_number":63,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8sU%3D","line":60,"updated":"2012-07-12 18:32:22.000000000","message":"unused","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"34874c99da86e0f9f9efeeffc4c4bef6a37a99ff","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from nova import block_device"},{"line_number":58,"context_line":"from nova.compute import instance_types"},{"line_number":59,"context_line":"from nova.compute import power_state"},{"line_number":60,"context_line":"from nova.compute import rpcapi as compute_rpcapi"},{"line_number":61,"context_line":"from nova.compute import utils as compute_utils"},{"line_number":62,"context_line":"from nova import context as nova_context"},{"line_number":63,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8O4%3D","line":60,"in_reply_to":"AAAAKX%2F%2F8sU%3D","updated":"2012-07-13 08:58:46.000000000","message":"oops, thanks.","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"32729a9fb90e3d9f7dd13c4173ec10553d333c8b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"from nova.compute import instance_types"},{"line_number":59,"context_line":"from nova.compute import power_state"},{"line_number":60,"context_line":"from nova.compute import rpcapi as compute_rpcapi"},{"line_number":61,"context_line":"from nova.compute import utils as compute_utils"},{"line_number":62,"context_line":"from nova import context as nova_context"},{"line_number":63,"context_line":"from nova import db"},{"line_number":64,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8sA%3D","line":61,"updated":"2012-07-12 18:32:22.000000000","message":"unused","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"32729a9fb90e3d9f7dd13c4173ec10553d333c8b","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        self.image_cache_manager \u003d imagecache.ImageCacheManager()"},{"line_number":300,"context_line":"        self.image_backend \u003d imagebackend.Backend(FLAGS.use_cow_images)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    @property"},{"line_number":305,"context_line":"    def disk_cachemode(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAKX%2F%2F8sM%3D","line":302,"updated":"2012-07-12 18:32:22.000000000","message":"unused","commit_id":"af4e4e7258ef4e3be9d4434ffd53ec8b023c0d9c"}],"nova/virt/xenapi/connection.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"3e7dc2b73c177c1eb1eee7ca610abdcbb2737f7f","unresolved":false,"context_lines":[{"line_number":447,"context_line":"            nova.db.sqlalchemy.models.Instance object"},{"line_number":448,"context_line":"            instance object that is migrated."},{"line_number":449,"context_line":"        :params dest: destination host"},{"line_number":450,"context_line":"        :params block_migration: destination host"},{"line_number":451,"context_line":"        :params post_method:"},{"line_number":452,"context_line":"            post operation method."},{"line_number":453,"context_line":"            expected nova.compute.manager.post_live_migration."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAI3%2F%2F%2BmI%3D","line":450,"updated":"2012-06-21 21:17:09.000000000","message":"Same deal, comment looks old, or copy pasta","commit_id":"faf35c08e4f779926554482363285727ac5e0cd2"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"bead2a524425fa2ae88a6cd3ab83125556ee4743","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"            return current_aggregate.metadetails[hostname]"},{"line_number":1558,"context_line":"        except KeyError:"},{"line_number":1559,"context_line":"            reason \u003d _(\"Destination host:%(hostname) \""},{"line_number":1560,"context_line":"                              \"must in the same aggregate \""},{"line_number":1561,"context_line":"                              \"as the source server\")"},{"line_number":1562,"context_line":"            raise exception.MigrationError(reason\u003dreason % locals())"},{"line_number":1563,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F7DY%3D","line":1560,"updated":"2012-06-27 21:04:41.000000000","message":"pep8 alignment","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2285d59cbee77ce7c8e6baf8c6e23746673a1668","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"            return current_aggregate.metadetails[hostname]"},{"line_number":1558,"context_line":"        except KeyError:"},{"line_number":1559,"context_line":"            reason \u003d _(\"Destination host:%(hostname) \""},{"line_number":1560,"context_line":"                              \"must in the same aggregate \""},{"line_number":1561,"context_line":"                              \"as the source server\")"},{"line_number":1562,"context_line":"            raise exception.MigrationError(reason\u003dreason % locals())"},{"line_number":1563,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F6%2FI%3D","line":1560,"in_reply_to":"AAAAI3%2F%2F7DY%3D","updated":"2012-06-27 21:48:34.000000000","message":"sure.","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"bead2a524425fa2ae88a6cd3ab83125556ee4743","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"        else:"},{"line_number":1584,"context_line":"            # check destination is in the same aggregate"},{"line_number":1585,"context_line":"            # joining the pool confirms most live migration"},{"line_number":1586,"context_line":"            self._get_host_uuid_from_aggregate(ctxt, dest)"},{"line_number":1587,"context_line":"            # TODO(johngarbutt) we currently assume"},{"line_number":1588,"context_line":"            # instance is on a SR shared with other destination"},{"line_number":1589,"context_line":"            # block migration work will be able to resolve this"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F7Ck%3D","line":1586,"updated":"2012-06-27 21:04:41.000000000","message":"shouldn\u0027t this be more about whether we have room for migrating the instance over? Seems kinda pointless to call _get_host_uuid_from_aggregate, throw the result, and then call it again to get hold of the host info.","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2285d59cbee77ce7c8e6baf8c6e23746673a1668","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"        else:"},{"line_number":1584,"context_line":"            # check destination is in the same aggregate"},{"line_number":1585,"context_line":"            # joining the pool confirms most live migration"},{"line_number":1586,"context_line":"            self._get_host_uuid_from_aggregate(ctxt, dest)"},{"line_number":1587,"context_line":"            # TODO(johngarbutt) we currently assume"},{"line_number":1588,"context_line":"            # instance is on a SR shared with other destination"},{"line_number":1589,"context_line":"            # block migration work will be able to resolve this"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F6%2FE%3D","line":1586,"in_reply_to":"AAAAI3%2F%2F7Ck%3D","updated":"2012-06-27 21:48:34.000000000","message":"sure, seems odd to duplicate the code though, but prehaps that is best?","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"bead2a524425fa2ae88a6cd3ab83125556ee4743","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"                                    post_method, recover_method,"},{"line_number":1599,"context_line":"                                    block_migration)"},{"line_number":1600,"context_line":""},{"line_number":1601,"context_line":"    def _pool_live_migrate(self, context, instance, destination_hostname,"},{"line_number":1602,"context_line":"                           post_method, recover_method, block_migration):"},{"line_number":1603,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1604,"context_line":"        host_ref \u003d self._get_host_opaque_ref(context, destination_hostname)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F7CU%3D","line":1601,"updated":"2012-06-27 21:04:41.000000000","message":"not sure there\u0027s much value in having this separate from live_migrate method; unless you aim to unit test this separately...However, this does not seems to be the intention, mind elaborating?","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2285d59cbee77ce7c8e6baf8c6e23746673a1668","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"                                    post_method, recover_method,"},{"line_number":1599,"context_line":"                                    block_migration)"},{"line_number":1600,"context_line":""},{"line_number":1601,"context_line":"    def _pool_live_migrate(self, context, instance, destination_hostname,"},{"line_number":1602,"context_line":"                           post_method, recover_method, block_migration):"},{"line_number":1603,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1604,"context_line":"        host_ref \u003d self._get_host_opaque_ref(context, destination_hostname)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAI3%2F%2F6%2B4%3D","line":1601,"in_reply_to":"AAAAI3%2F%2F7CU%3D","updated":"2012-06-27 21:48:34.000000000","message":"its just to make it easier to read, and more self documenting. The new non-pool case should be dropping in there soon.","commit_id":"4016475bec86382a0d48b5f9964afa0f667bcc38"}],"tools/test-requires":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"cb90073d5a23220a0a828ea6839ef0da7c8ca183","unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"coverage"},{"line_number":3,"context_line":"mox\u003d\u003d0.5.3"},{"line_number":4,"context_line":"nose"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAI3%2F%2F7dk%3D","line":1,"updated":"2012-06-27 16:29:59.000000000","message":"Any particular reason for the changes to this file?","commit_id":"b50458588f7ec08929162002da895e13766111d9"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"fef54aabbad42d1e14301748803cafa1feb55470","unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"coverage"},{"line_number":3,"context_line":"mox\u003d\u003d0.5.3"},{"line_number":4,"context_line":"nose"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAI3%2F%2F7YQ%3D","line":1,"in_reply_to":"AAAAI3%2F%2F7Yo%3D","updated":"2012-06-27 17:22:20.000000000","message":"The recommended way of using the pip-requires/test-requires is:\n\n    pip install -U -r test-requires\n\nEither way, I agree with Kevin, this is unrelated and if you\u0027d still like to still pursue this change, it should be in a separate patch.","commit_id":"b50458588f7ec08929162002da895e13766111d9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"153804e6afe25d8a6c151713c31e4548952f1133","unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"coverage"},{"line_number":3,"context_line":"mox\u003d\u003d0.5.3"},{"line_number":4,"context_line":"nose"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAI3%2F%2F7Yo%3D","line":1,"in_reply_to":"AAAAI3%2F%2F7Zg%3D","updated":"2012-06-27 17:20:07.000000000","message":"Just wondering.  It does make it easier to do that cat, but it\u0027s probably worth pointing out Daniel Berrange\u0027s email about improving git commit practices :)  Just FYI, though, I\u0027d go ahead and approve even if you didn\u0027t revert this hunk; I just didn\u0027t hit +2 because I knew you were going to need to rebase.","commit_id":"b50458588f7ec08929162002da895e13766111d9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"12b7f34b49c7cbae0ee7e739b6ea7b94bc774ef7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"coverage"},{"line_number":3,"context_line":"mox\u003d\u003d0.5.3"},{"line_number":4,"context_line":"nose"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAI3%2F%2F7Zg%3D","line":1,"in_reply_to":"AAAAI3%2F%2F7dk%3D","updated":"2012-06-27 17:09:46.000000000","message":"I can revert this, it was an accident.\nAlthough it does make it easier to do:\n \"cat test-requires | xargs sudo pip install -U\"\nWhat you think?","commit_id":"b50458588f7ec08929162002da895e13766111d9"}]}
