)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9759d240dcbbb1af939c07a3cb8abb243596efed","unresolved":false,"context_lines":[{"line_number":30,"context_line":"the universe. This change merely records memory transfer progress"},{"line_number":31,"context_line":"and leaves tuning improvements to a later date."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Conflicts:"},{"line_number":34,"context_line":"\tnova/tests/unit/virt/libvirt/test_host.py"},{"line_number":35,"context_line":"\tnova/tests/virt/libvirt/test_driver.py"},{"line_number":36,"context_line":"\tnova/virt/libvirt/driver.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a80dd14_46768cd8","line":33,"updated":"2015-03-06 11:41:11.000000000","message":"host/test_host.py has been imported as suggested by git. The conflict on driver.py is because of the method get_domain i had to change it by lookup_domain. for test_driver.py some changes was done about to create instance from db and using fakelibvirt","commit_id":"b6d4e9ec0d412c575fb690ade3acb824c9fbb47a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9a474061522e4b0b0e53a8f32946cb270c7cf474","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Fixtures for fakelibvirt were not ported back and was removed from"},{"line_number":42,"context_line":"DomainJobInfoTestCase."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Co-Authored-By: Billy Olsen \u003cbilly.olsen@canonical.com\u003e"},{"line_number":45,"context_line":"Closes-bug: #1414065"},{"line_number":46,"context_line":"Change-Id: I6fcbfa31a79c7808c861bb3a84b56bd096882004"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_f13287a6","line":44,"updated":"2015-08-06 08:33:26.000000000","message":"It is really not appropriate to claim co-authorship to code I wrote,  when you are merely resolving merge conflicts with stable.\n\nAlso there needs to be a line with the original commit id, as would be added by \u0027git cherry-pick -x\u0027","commit_id":"cf283e537eb0656e06ef84aefa0e85dcd951c622"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"c5ebd43c4a26f09d18db691be835e5c4ad467557","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Fixtures for fakelibvirt were not ported back and was removed from"},{"line_number":42,"context_line":"DomainJobInfoTestCase."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Co-Authored-By: Billy Olsen \u003cbilly.olsen@canonical.com\u003e"},{"line_number":45,"context_line":"Closes-bug: #1414065"},{"line_number":46,"context_line":"Change-Id: I6fcbfa31a79c7808c861bb3a84b56bd096882004"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_d1e79daa","line":44,"in_reply_to":"1a4dcd0f_f13287a6","updated":"2015-08-10 21:58:24.000000000","message":"Dan, I sincerely apologize for claiming co-authorship, it was not an intention of mine to take credit for work that you had done.","commit_id":"cf283e537eb0656e06ef84aefa0e85dcd951c622"}],"nova/tests/virt/libvirt/test_driver.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"c21dbb00fa5460fc63e82123b14ca78a8f46f17e","unresolved":false,"context_lines":[{"line_number":5695,"context_line":"                                        mock_sleep):"},{"line_number":5696,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":5697,"context_line":"        drvr._wrapped_conn \u003d fakelibvirt.Connection()"},{"line_number":5698,"context_line":"        instance \u003d db.instance_create(self.context, self.test_instance)"},{"line_number":5699,"context_line":"        dom \u003d fakelibvirt.Domain(drvr._get_connection(), \"\u003cdomain/\u003e\", True)"},{"line_number":5700,"context_line":"        finish_event \u003d eventlet.event.Event()"},{"line_number":5701,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_0f2f97f7","line":5698,"updated":"2015-03-17 15:57:24.000000000","message":"Please use objects.Instance(**self.test_instance)","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"c21dbb00fa5460fc63e82123b14ca78a8f46f17e","unresolved":false,"context_lines":[{"line_number":5838,"context_line":"                                 mock_monitor, mock_thread):"},{"line_number":5839,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":5840,"context_line":"        drvr._wrapped_conn \u003d fakelibvirt.Connection()"},{"line_number":5841,"context_line":"        instance \u003d db.instance_create(self.context, self.test_instance)"},{"line_number":5842,"context_line":"        dom \u003d fakelibvirt.Domain(drvr._get_connection(), \"\u003cdomain/\u003e\", True)"},{"line_number":5843,"context_line":"        migrate_data \u003d {}"},{"line_number":5844,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_2f6c5b08","line":5841,"updated":"2015-03-17 15:57:24.000000000","message":"ditto","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a6c4df2058b12f68ef7e49f4f8e2e2d5b2f5fe65","unresolved":false,"context_lines":[{"line_number":5541,"context_line":"                    if info.memory_total !\u003d 0:"},{"line_number":5542,"context_line":"                        progress \u003d round(info.memory_remaining *"},{"line_number":5543,"context_line":"                                          100 / info.memory_total)"},{"line_number":5544,"context_line":"                    instance.progress \u003d 100 - progress"},{"line_number":5545,"context_line":"                    instance.save()"},{"line_number":5546,"context_line":""},{"line_number":5547,"context_line":"                    lg \u003d LOG.debug"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_747f7615","line":5544,"updated":"2015-03-09 12:25:30.000000000","message":"I\u0027m not 100% sure we can rely on \u0027instance\u0027 being an object in the Juno tree ? It might be ok, but would like confirmation you\u0027ve actually tested migration with this change for real, rather than just relied on test cases passing.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"50bea0254bcf082f028bffed1c5da3bbfdb973e2","unresolved":false,"context_lines":[{"line_number":5541,"context_line":"                    if info.memory_total !\u003d 0:"},{"line_number":5542,"context_line":"                        progress \u003d round(info.memory_remaining *"},{"line_number":5543,"context_line":"                                          100 / info.memory_total)"},{"line_number":5544,"context_line":"                    instance.progress \u003d 100 - progress"},{"line_number":5545,"context_line":"                    instance.save()"},{"line_number":5546,"context_line":""},{"line_number":5547,"context_line":"                    lg \u003d LOG.debug"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_8ef7c3f4","line":5544,"in_reply_to":"9a80dd14_747f7615","updated":"2015-04-03 22:36:35.000000000","message":"I\u0027ve rebased and reworked this pick and tested it. The instance here is an object in the juno tree fwict from the code and running the live migration and test cases themselves.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"c21dbb00fa5460fc63e82123b14ca78a8f46f17e","unresolved":false,"context_lines":[{"line_number":5613,"context_line":"        migration and controls its operation"},{"line_number":5614,"context_line":"        \"\"\""},{"line_number":5615,"context_line":""},{"line_number":5616,"context_line":"        dom \u003d self._lookup_by_name(instance[\"name\"])"},{"line_number":5617,"context_line":""},{"line_number":5618,"context_line":"        opthread \u003d greenthread.spawn(self._live_migration_operation,"},{"line_number":5619,"context_line":"                                     context, instance, dest,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_a953ebe0","line":5616,"updated":"2015-03-17 15:57:24.000000000","message":"In _live_migration_monitor() you using `instance` like an object, but here you use it like a dict. If we get object please use `instance` like an object everywhere.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"50bea0254bcf082f028bffed1c5da3bbfdb973e2","unresolved":false,"context_lines":[{"line_number":5613,"context_line":"        migration and controls its operation"},{"line_number":5614,"context_line":"        \"\"\""},{"line_number":5615,"context_line":""},{"line_number":5616,"context_line":"        dom \u003d self._lookup_by_name(instance[\"name\"])"},{"line_number":5617,"context_line":""},{"line_number":5618,"context_line":"        opthread \u003d greenthread.spawn(self._live_migration_operation,"},{"line_number":5619,"context_line":"                                     context, instance, dest,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_6edfdf69","line":5616,"in_reply_to":"9a80dd14_a953ebe0","updated":"2015-04-03 22:36:35.000000000","message":"Done","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"1520ca98979cb32f89ea1d22f339c60fe45bcab6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                cls._have_job_stats \u003d False"},{"line_number":177,"context_line":"                return cls._get_job_stats_compat(dom)"},{"line_number":178,"context_line":"        else:"},{"line_number":179,"context_line":"            return cls._get_job_stats_compat(dom)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class Host(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_d1e4f4e2","line":179,"updated":"2015-03-06 11:56:36.000000000","message":"This class is the only part of the host.py file that we actually need / want for the backport. GIT\u0027s suggestion to import the entire file is just a artifact of the way it deals with the fact that host.py doesn\u0027t exist in this branch.\n\nI think I would either delete everything in host.py except for this one class, or just put this class into driver.py instead.  Either way is more or less equivalent, so just pick one.  The same applies for the test_host.py unit tests - just the tests for this class are desired.","commit_id":"b6d4e9ec0d412c575fb690ade3acb824c9fbb47a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8adc0ff338abc58801f5e31fb5a1e1101e1e057e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                cls._have_job_stats \u003d False"},{"line_number":177,"context_line":"                return cls._get_job_stats_compat(dom)"},{"line_number":178,"context_line":"        else:"},{"line_number":179,"context_line":"            return cls._get_job_stats_compat(dom)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class Host(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_11712ce0","line":179,"in_reply_to":"9a80dd14_d1e4f4e2","updated":"2015-03-06 12:06:04.000000000","message":"Ok, i will do. Thanks for your review.","commit_id":"b6d4e9ec0d412c575fb690ade3acb824c9fbb47a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"426cf8fdc2587bbe155c3be54e815dc608dbc9b1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":17,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":18,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":19,"context_line":"#    under the License."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":"Manages information about the host OS and hypervisor."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5795a186","line":19,"updated":"2015-03-11 14:48:39.000000000","message":"Not sure we should be adding this file just for this. We should proably inline this in the libvirt/driver.py\n\nTho not sure it\u0027s a big deal...","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"05c194a60c88086a0d8087aedaa67803c6cef13b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":17,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":18,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":19,"context_line":"#    under the License."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":"Manages information about the host OS and hypervisor."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_57d041f7","line":19,"in_reply_to":"9a80dd14_5795a186","updated":"2015-03-11 14:54:57.000000000","message":"I don\u0027t really mind one way or the other. If we inline it in driver.py it at least avoids the extra pain of dealing with the libvirt module imports.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"50bea0254bcf082f028bffed1c5da3bbfdb973e2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":17,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":18,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":19,"context_line":"#    under the License."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":"Manages information about the host OS and hypervisor."}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_0ee4d338","line":19,"in_reply_to":"9a80dd14_57d041f7","updated":"2015-04-03 22:36:35.000000000","message":"I inlined it in the latest revision. It was a bit cleaner to inline it for the backport than to just pick a portion of a file imo.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":128,"name":"David Medberry","email":"openstack@medberry.net","username":"med"},"change_message_id":"12ddeb51f621aa0dcdd032df6aceebea558503ff","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from nova.openstack.common import log as logging"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"libvirt \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_bd30ad57","line":32,"updated":"2015-04-02 16:30:46.000000000","message":"Looks like code has omitted the tail end of the host.py from Kilo. \nSomething like:\nclass Host(object): yadda....","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a6c4df2058b12f68ef7e49f4f8e2e2d5b2f5fe65","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from nova.openstack.common import log as logging"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"libvirt \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_34997e6e","line":32,"updated":"2015-03-09 12:25:30.000000000","message":"Where does this ever get set to a non-None value ? The test cases will of course set that correctly, so tests will pass, but I\u0027m not seeing what sets this correctly when running in a real deployment.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"50bea0254bcf082f028bffed1c5da3bbfdb973e2","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from nova.openstack.common import log as logging"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"libvirt \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_8ecea3b2","line":32,"in_reply_to":"baa041b7_bd30ad57","updated":"2015-04-03 22:36:35.000000000","message":"Inlined this code into the libvirt/driver.py so the missing code isn\u0027t as much of an issue since the global being used is properly handled in the driver.py file for juno. The rest of the code is unnecessary for this particular backport.","commit_id":"c513c37385eba42d464e81a324f87d1ca9ceaa83"}]}
