)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"950dbcd9d330864178acaa77052c9818afc814e9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2012-03-02 21:25:25 +0000"},{"line_number":4,"context_line":"Commit:     Mandell Degerness \u003cmdegerne@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-03-26 17:47:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Proposed fix for bug 891756"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cleans up the objectionable exception paths."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAFH%2F%2F%2B6U%3D","line":6,"updated":"2012-03-26 20:04:20.000000000","message":"Ok, I apologize ... but I\u0027m going to be nitpicky about the commit message\n\nThink about how this appears in the git log when it\u0027s merged","commit_id":"60a8a01c4fd08c88a6644d5772c5c37ecbb07c25"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"950dbcd9d330864178acaa77052c9818afc814e9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mandell Degerness \u003cmdegerne@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-03-26 17:47:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Proposed fix for bug 891756"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cleans up the objectionable exception paths."},{"line_number":10,"context_line":"Properly check for Remote Exception."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAFH%2F%2F%2B6Q%3D","line":7,"updated":"2012-03-26 20:04:20.000000000","message":"Once it\u0027s merged, it\u0027s not proposed anymore\n\nAlso, we need something more than \"fix for XXXXXX\" in the first line so that we don\u0027t end up with e.g.\n\n  $\u003e git log --oneline origin/master\n  abcedfg Fix for #123456\n  bcdefga Fix for #234561\n  ...\n\nTry this:\n\n  Clean up the live/block migration shared storage check (#891756)","commit_id":"60a8a01c4fd08c88a6644d5772c5c37ecbb07c25"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"950dbcd9d330864178acaa77052c9818afc814e9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Removed unneeded initializer and changed file removal to a cast per"},{"line_number":13,"context_line":"Chris Behrens\u0027 suggestions."},{"line_number":14,"context_line":"Changes suggested by Mark McLoughlin"},{"line_number":15,"context_line":"Also fixed tests."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I96f354fe41d9ce77c4cc98903f0d5a9de99ac4f6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAFH%2F%2F%2B54%3D","line":15,"updated":"2012-03-26 20:04:20.000000000","message":"This all looks like a changelog of your revisions to the patch. That\u0027s not really interesting in the git history. If you want to explain what\u0027s changed between revisions, just comment in gerrit when you upload a new patch.\n\nTry something like this instead:\n\n  The shared storage check for live and block migration is currently\n  very confusing e.g.\n\n   * The mounted_on_same_shared_storage() method raises FileNotFound\n     for the caller to catch rather than just returning a boolean to indicate\n     whether the hosts share storage\n\n   * mounted_on_same_shared_storage() has a \"filename is not None\" check\n     in its finally clause which doesn\u0027t make sense\n\n  * InvalidSharedStorage is not raised in the live migration case, instead\n    FileNotFound is raised\n\n  Clean all this up by having mounted_on_same_shared_storage() simply return\n  a boolean and have simple logic to raise InvalidSharedStorage for live migration\n  where no shared storage is available or for block migration where shared storage\n  is available.","commit_id":"60a8a01c4fd08c88a6644d5772c5c37ecbb07c25"}],"nova/scheduler/driver.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c4f682709cacdd9ea6c7dbc851f1676bb050dda3","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            if not ret:"},{"line_number":511,"context_line":"                raise exception.FileNotFound(file_path\u003dfilename)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        except exception.FileNotFound:"},{"line_number":514,"context_line":"            raise"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2Fyw4%3D","side":"PARENT","line":513,"updated":"2012-03-03 02:06:49.000000000","message":"one problem i was trying to report in the bug was that you can never catch a FileNotFound exception here because rpc.call() only raises rpc_common.RemoteError().  So, this except: needs to catch rpc_common.RemoteError() and then try to figure out if the exception raised on the remote end was FileNotFound.","commit_id":"d9097f35cd391fcd5a8ec735abd3b53e634bfa14"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"97dfa7390d5565f4e72592bd12f37828f0925fdb","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                            \"same shared storage between %(src)s \""},{"line_number":326,"context_line":"                            \"and %(dest)s.\") % locals())"},{"line_number":327,"context_line":"            raise exception.FileNotFound(ipath)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        # Checking destination host exists."},{"line_number":330,"context_line":"        dservice_refs \u003d db.service_get_all_compute_by_host(context, dest)"},{"line_number":331,"context_line":"        dservice_ref \u003d dservice_refs[0][\u0027compute_node\u0027][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2Fw3I%3D","line":328,"updated":"2012-03-07 11:30:00.000000000","message":"This is all very smelly indeed.\n\nThe basic logic is this:\n\n    shared \u003d self.mounted_on_same_shared_storage(...)\n\n    if block_migration:\n        if shared:\n            raise InvalidSharedStorage(\u0027Block migration can not be used with shared storage\u0027)\n    elif not shared:\n        raise InvalidSharedStorage(\u0027Live migration can not be used without shared storage\u0027)\n\nso, I think we should just make mounted_on_same_shared_storage() return a boolean rather than throwing a FileNotFound() exception\n\ni.e. not having shared storage isn\u0027t always an error, so it\u0027s not appropriate to use an exception IMHO","commit_id":"9c29ab810c34065baa9a21e0a7805cf02344ec16"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"97dfa7390d5565f4e72592bd12f37828f0925fdb","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        except rpc.RemoteError as err:"},{"line_number":515,"context_line":"            if err.exc_type \u003d\u003d \"FileNotFound\":"},{"line_number":516,"context_line":"                raise exception.FileNotFound(file_path\u003dfilename)"},{"line_number":517,"context_line":"            else:"},{"line_number":518,"context_line":"                raise"},{"line_number":519,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2Fw3M%3D","line":516,"updated":"2012-03-07 11:30:00.000000000","message":"I don\u0027t think we need this except clause at all\n\nFileNotFound will only be raised by create_shared_storage_test_file() if instances_path doesn\u0027t exist - that\u0027s a broken installation, so I think it\u0027s valid to just let that pass up to the caller\n\nWe just need:\n\n    try:\n        # create tmpfile at dest host\n        filename \u003d rpc.call(...)\n\n        # make sure existence at src host.\n        return rpc.call(...)\n    finally:\n        ....","commit_id":"9c29ab810c34065baa9a21e0a7805cf02344ec16"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"88ac8a951a839b2d59941ae9cd1df6a37ef633d4","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        # Checking shared storage connectivity"},{"line_number":320,"context_line":"        # if block migration, instances_paths should not be on shared storage."},{"line_number":321,"context_line":"        shared \u003d None"},{"line_number":322,"context_line":"        shared \u003d self.mounted_on_same_shared_storage(context, instance_ref, dest)"},{"line_number":323,"context_line":"        if block_migration:"},{"line_number":324,"context_line":"            if shared:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAE3%2F%2F%2FfQ%3D","line":321,"updated":"2012-03-12 18:37:25.000000000","message":"This line doesn\u0027t seem necessary.","commit_id":"61d68b107eab3ff090b578f8989cb8ece4028f27"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4479366cd3ec02dff633d8ef26c454f4a175cb75","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        filename \u003d None"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        filename \u003d rpc.call(context, dst_t,"},{"line_number":509,"context_line":"                            {\"method\": \u0027create_shared_storage_test_file\u0027})"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        # make sure existence at src host."},{"line_number":512,"context_line":"        ret \u003d rpc.call(context, src_t,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAE3%2F%2F%2FSQ%3D","line":509,"updated":"2012-03-12 22:54:07.000000000","message":"This could raise rpc_common.RemoteError if FLAGS.instances_path doesn\u0027t exist or there\u0027s no permissions to create the file.  Sure you don\u0027t want to catch RemoteError and return False?","commit_id":"61d68b107eab3ff090b578f8989cb8ece4028f27"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"4479366cd3ec02dff633d8ef26c454f4a175cb75","unresolved":false,"context_lines":[{"line_number":514,"context_line":"                       \"args\": {\u0027filename\u0027: filename}})"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        if filename is not None:"},{"line_number":517,"context_line":"            rpc.call(context, dst_t,"},{"line_number":518,"context_line":"                     {\"method\": \u0027cleanup_shared_storage_test_file\u0027,"},{"line_number":519,"context_line":"                      \"args\": {\u0027filename\u0027: filename}})"},{"line_number":520,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAE3%2F%2F%2FSc%3D","line":517,"updated":"2012-03-12 22:54:07.000000000","message":"This could be an rpc.cast.  No need to wait for this to complete.","commit_id":"61d68b107eab3ff090b578f8989cb8ece4028f27"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a362167a1e3e1be408667c9f4d9ec703eb15cf65","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        elif not shared:"},{"line_number":329,"context_line":"            reason \u003d _(\"Live migration can not be used \""},{"line_number":330,"context_line":"                       \"without shared storage.\")"},{"line_number":331,"context_line":"            raise exception.InvalidSharedStorage(reason\u003dreason, path\u003ddest)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        # Checking destination host exists."},{"line_number":334,"context_line":"        dservice_refs \u003d db.service_get_all_compute_by_host(context, dest)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F8MQ%3D","line":331,"updated":"2012-03-20 12:20:01.000000000","message":"The logic is much more obvious now. I like!","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a362167a1e3e1be408667c9f4d9ec703eb15cf65","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        dst_t \u003d db.queue_get_for(context, FLAGS.compute_topic, dest)"},{"line_number":503,"context_line":"        src_t \u003d db.queue_get_for(context, FLAGS.compute_topic, src)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        filename \u003d None"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        filename \u003d rpc.call(context, dst_t,"},{"line_number":508,"context_line":"                            {\"method\": \u0027create_shared_storage_test_file\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F8Mc%3D","line":505,"updated":"2012-03-20 12:20:01.000000000","message":"This line is redundant","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":396,"name":"Mandell","email":"mdegerness@nvidia.com","username":"mdegerne"},"change_message_id":"ccad2d12176794a7e97521a7aa3c76b09e26a92e","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        dst_t \u003d db.queue_get_for(context, FLAGS.compute_topic, dest)"},{"line_number":503,"context_line":"        src_t \u003d db.queue_get_for(context, FLAGS.compute_topic, src)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        filename \u003d None"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        filename \u003d rpc.call(context, dst_t,"},{"line_number":508,"context_line":"                            {\"method\": \u0027create_shared_storage_test_file\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F%2FFY%3D","line":505,"in_reply_to":"AAAAE3%2F%2F8Mc%3D","updated":"2012-03-26 17:48:43.000000000","message":"Done","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"9743d174d65f6430fa31bab038cb43ca13c8ed54","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        filename \u003d None"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        filename \u003d rpc.call(context, dst_t,"},{"line_number":508,"context_line":"                            {\"method\": \u0027create_shared_storage_test_file\u0027})"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        # make sure existence at src host."},{"line_number":511,"context_line":"        ret \u003d rpc.call(context, src_t,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F%2BFQ%3D","line":508,"updated":"2012-03-15 00:28:03.000000000","message":"See question I left in last patch set.  I notice your commit message says \u0027check for Remote exception\u0027, but I\u0027m not seeing it.  Did you mean to have it here?  Seems like it should be based on my question in last patch set..  but let me know!","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":396,"name":"Mandell","email":"mdegerness@nvidia.com","username":"mdegerne"},"change_message_id":"8ffdfb793a887a88e0dfda4ad453659bf9010313","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        filename \u003d None"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        filename \u003d rpc.call(context, dst_t,"},{"line_number":508,"context_line":"                            {\"method\": \u0027create_shared_storage_test_file\u0027})"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        # make sure existence at src host."},{"line_number":511,"context_line":"        ret \u003d rpc.call(context, src_t,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F%2BFE%3D","line":508,"in_reply_to":"AAAAE3%2F%2F%2BFQ%3D","updated":"2012-03-15 00:36:56.000000000","message":"That\u0027s a left over commit message I should have removed.  I disagree that we want to catch an exception here which would imply a configuration problem.  If the source or destination hosts are mis-configured, we can\u0027t say anything for sure about shared storage.","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a362167a1e3e1be408667c9f4d9ec703eb15cf65","unresolved":false,"context_lines":[{"line_number":512,"context_line":"                      {\"method\": \u0027check_shared_storage_test_file\u0027,"},{"line_number":513,"context_line":"                       \"args\": {\u0027filename\u0027: filename}})"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        if filename is not None:"},{"line_number":516,"context_line":"            rpc.cast(context, dst_t,"},{"line_number":517,"context_line":"                     {\"method\": \u0027cleanup_shared_storage_test_file\u0027,"},{"line_number":518,"context_line":"                      \"args\": {\u0027filename\u0027: filename}})"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F8MY%3D","line":515,"updated":"2012-03-20 12:20:01.000000000","message":"This check is redundant too, filename should never be None","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":396,"name":"Mandell","email":"mdegerness@nvidia.com","username":"mdegerne"},"change_message_id":"ccad2d12176794a7e97521a7aa3c76b09e26a92e","unresolved":false,"context_lines":[{"line_number":512,"context_line":"                      {\"method\": \u0027check_shared_storage_test_file\u0027,"},{"line_number":513,"context_line":"                       \"args\": {\u0027filename\u0027: filename}})"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        if filename is not None:"},{"line_number":516,"context_line":"            rpc.cast(context, dst_t,"},{"line_number":517,"context_line":"                     {\"method\": \u0027cleanup_shared_storage_test_file\u0027,"},{"line_number":518,"context_line":"                      \"args\": {\u0027filename\u0027: filename}})"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F%2FFQ%3D","line":515,"in_reply_to":"AAAAE3%2F%2F8MY%3D","updated":"2012-03-26 17:48:43.000000000","message":"Done","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a362167a1e3e1be408667c9f4d9ec703eb15cf65","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            rpc.cast(context, dst_t,"},{"line_number":517,"context_line":"                     {\"method\": \u0027cleanup_shared_storage_test_file\u0027,"},{"line_number":518,"context_line":"                      \"args\": {\u0027filename\u0027: filename}})"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F8MU%3D","line":519,"updated":"2012-03-20 12:20:01.000000000","message":"This should be done in a finally: block to clean up the test file if the check throws an exception","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":396,"name":"Mandell","email":"mdegerness@nvidia.com","username":"mdegerne"},"change_message_id":"ccad2d12176794a7e97521a7aa3c76b09e26a92e","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            rpc.cast(context, dst_t,"},{"line_number":517,"context_line":"                     {\"method\": \u0027cleanup_shared_storage_test_file\u0027,"},{"line_number":518,"context_line":"                      \"args\": {\u0027filename\u0027: filename}})"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F%2FEw%3D","line":519,"in_reply_to":"AAAAE3%2F%2F8MU%3D","updated":"2012-03-26 17:48:43.000000000","message":"Done","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"}],"nova/tests/scheduler/test_scheduler.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a362167a1e3e1be408667c9f4d9ec703eb15cf65","unresolved":false,"context_lines":[{"line_number":800,"context_line":"                 \u0027args\u0027: {\u0027filename\u0027: tmp_filename}})"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"        self.mox.ReplayAll()"},{"line_number":803,"context_line":"        # FIXME(comstud): See LP891756."},{"line_number":804,"context_line":"        self.assertRaises(exception.InvalidSharedStorage,"},{"line_number":805,"context_line":"                self.driver.schedule_live_migration, self.context,"},{"line_number":806,"context_line":"                instance_id\u003dinstance[\u0027id\u0027], dest\u003ddest,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F8MI%3D","line":803,"updated":"2012-03-20 12:20:01.000000000","message":"this FIXME can be removed now","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":396,"name":"Mandell","email":"mdegerness@nvidia.com","username":"mdegerne"},"change_message_id":"ccad2d12176794a7e97521a7aa3c76b09e26a92e","unresolved":false,"context_lines":[{"line_number":800,"context_line":"                 \u0027args\u0027: {\u0027filename\u0027: tmp_filename}})"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"        self.mox.ReplayAll()"},{"line_number":803,"context_line":"        # FIXME(comstud): See LP891756."},{"line_number":804,"context_line":"        self.assertRaises(exception.InvalidSharedStorage,"},{"line_number":805,"context_line":"                self.driver.schedule_live_migration, self.context,"},{"line_number":806,"context_line":"                instance_id\u003dinstance[\u0027id\u0027], dest\u003ddest,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F%2FEk%3D","line":803,"in_reply_to":"AAAAE3%2F%2F8MI%3D","updated":"2012-03-26 17:48:43.000000000","message":"Done","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"a362167a1e3e1be408667c9f4d9ec703eb15cf65","unresolved":false,"context_lines":[{"line_number":843,"context_line":"                 \u0027args\u0027: {\u0027filename\u0027: tmp_filename}})"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"        self.mox.ReplayAll()"},{"line_number":846,"context_line":"        # FIXME(comstud): See LP891756."},{"line_number":847,"context_line":"        self.assertRaises(exception.InvalidSharedStorage,"},{"line_number":848,"context_line":"                self.driver.schedule_live_migration, self.context,"},{"line_number":849,"context_line":"                instance_id\u003dinstance[\u0027id\u0027], dest\u003ddest,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAE3%2F%2F8MM%3D","line":846,"updated":"2012-03-20 12:20:01.000000000","message":"this FIXME can be removed now","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"},{"author":{"_account_id":396,"name":"Mandell","email":"mdegerness@nvidia.com","username":"mdegerne"},"change_message_id":"ccad2d12176794a7e97521a7aa3c76b09e26a92e","unresolved":false,"context_lines":[{"line_number":843,"context_line":"                 \u0027args\u0027: {\u0027filename\u0027: tmp_filename}})"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"        self.mox.ReplayAll()"},{"line_number":846,"context_line":"        # FIXME(comstud): See LP891756."},{"line_number":847,"context_line":"        self.assertRaises(exception.InvalidSharedStorage,"},{"line_number":848,"context_line":"                self.driver.schedule_live_migration, self.context,"},{"line_number":849,"context_line":"                instance_id\u003dinstance[\u0027id\u0027], dest\u003ddest,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAFH%2F%2F%2FEg%3D","line":846,"in_reply_to":"AAAAE3%2F%2F8MM%3D","updated":"2012-03-26 17:48:43.000000000","message":"Done","commit_id":"66f10936db5524196de2c69ea9f70b9fd37fef2a"}]}
