)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"288b08b70f72aaac26ec389bb24d9780491598d0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The unit test test_connection_to_primitive fails many times due to"},{"line_number":10,"context_line":"\"virConnect instance has no attribute \u0027registerCloseCallback\u0027\"."},{"line_number":11,"context_line":"This patch adds the existence check for avoiding this problem."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@cloudwatt.com\u003e"},{"line_number":14,"context_line":"Closes-Bug: #1266711"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"AAAAUH%2F%2FkXI%3D","line":11,"updated":"2014-01-10 23:22:27.000000000","message":"I was unable to reproduce this with libvirt 1.1.1 what version is the bug for?","commit_id":"0872d2afd342f1cae2509193045807a85dcc97b3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"327a5262dfa20ab65b5627afc4c35fcde07f6aaf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The unit test test_connection_to_primitive fails many times due to"},{"line_number":10,"context_line":"\"virConnect instance has no attribute \u0027registerCloseCallback\u0027\"."},{"line_number":11,"context_line":"This patch adds the existence check for avoiding this problem."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@cloudwatt.com\u003e"},{"line_number":14,"context_line":"Closes-Bug: #1266711"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"AAAAUH%2F%2FiOg%3D","line":11,"in_reply_to":"AAAAUH%2F%2FkXI%3D","updated":"2014-01-12 09:25:43.000000000","message":"Yes, you are right.\nWe cannot reproduce this bug original(community\u0027s) python-libvirt library.\nThis problem happens on ubuntu cloud\u0027s python-libvirt 1.0.1 which does not contain registerCloseCallback. I don\u0027t know why ubuntu removes this method.\n\nAnyway, that is important information. We need to write that on the commit message.","commit_id":"0872d2afd342f1cae2509193045807a85dcc97b3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"289435477fb1c7fde79d1bfa7f090d853c015306","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"registerCloseCallback has been added since original(community\u0027s)"},{"line_number":13,"context_line":"python-libvirt v1.0.0, and v1.2.0 also contains the method."},{"line_number":14,"context_line":"However ubuntu cloud\u0027s v1.0.1 does not contain the method, and current"},{"line_number":15,"context_line":"version check of python-libvirt does not work."},{"line_number":16,"context_line":"This patch tries to operate the method and catch TypeError exception if"},{"line_number":17,"context_line":"the method does not exist instead of the version check."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":32,"id":"AAAAUH%2F%2FQlw%3D","line":14,"updated":"2014-01-15 19:23:12.000000000","message":"thanks, that explains why  I couldn\u0027t reproduce this I was using  libvirt 1.1.1.","commit_id":"722df5d26046c2cb5e0daa791881147cb2d049aa"}],"nova/tests/virt/libvirt/test_libvirt.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fa547728469dc9488fbb8b8e7010f6ece4269ccc","unresolved":false,"context_lines":[{"line_number":775,"context_line":"        conn.set_host_enabled(\u0027fake-mini\u0027, True)"},{"line_number":776,"context_line":"        conn._conn.registerCloseCallback("},{"line_number":777,"context_line":"            mox.IgnoreArg(), mox.IgnoreArg()"},{"line_number":778,"context_line":"        ).AndRaise(TypeError)"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"        self.mox.ReplayAll()"},{"line_number":781,"context_line":"        conn._get_new_connection()"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FphM%3D","line":778,"updated":"2014-01-10 04:22:37.000000000","message":"Hi Sahid,\n\nNow I feel this test is unnecessary because we cannot make TypeError exception if defining registerCloseCallback() with 4 arguments using mox.\n\nAndRaise() of mox makes AttributeError not TypeError if lack of necessary argument:\nhttp://logs.openstack.org/67/65267/16/check/gate-nova-python27/b769cac/testr_results.html.gz\n\nIn addition, it is definite that TypeError happens if lack of the method arguments.\n\nalso test_close_callback_not_defined seems unnecessary because of not using registerCloseCallback().","commit_id":"5666678e93258422387e2cf2a436bef1eb560eed"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":708,"context_line":"    def test_close_callback(self):"},{"line_number":709,"context_line":"        class FakeConn(object):"},{"line_number":710,"context_line":"            def getLibVersion(self):"},{"line_number":711,"context_line":"                return (0 * 1000 * 1000) + (9 * 1000) + 11"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":714,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnHQ%3D","line":711,"updated":"2014-01-10 14:30:20.000000000","message":"better to change here to\n\n return (1 * 1000 * 1000) + (0 * 1000) +1\n\nfor representing 1.0.1.\n\nThat would be easy to understand this case purpose.\n\nHow about https://review.openstack.org/#/c/65267/15/nova/tests/virt/libvirt/test_libvirt.py ?","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":708,"context_line":"    def test_close_callback(self):"},{"line_number":709,"context_line":"        class FakeConn(object):"},{"line_number":710,"context_line":"            def getLibVersion(self):"},{"line_number":711,"context_line":"                return (0 * 1000 * 1000) + (9 * 1000) + 11"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":714,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm5A%3D","line":711,"in_reply_to":"AAAAUH%2F%2FnHQ%3D","updated":"2014-01-10 14:52:51.000000000","message":"Done","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":752,"context_line":"    def test_close_callback_bad_signature(self):"},{"line_number":753,"context_line":"        class FakeConn(object):"},{"line_number":754,"context_line":"            def getLibVersion(self):"},{"line_number":755,"context_line":"                return (0 * 1000 * 1000) + (9 * 1000) + 11"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":758,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnGs%3D","line":755,"updated":"2014-01-10 14:30:20.000000000","message":"dito\n\n return (1 * 1000 * 1000) + (0 * 1000) + 0","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":752,"context_line":"    def test_close_callback_bad_signature(self):"},{"line_number":753,"context_line":"        class FakeConn(object):"},{"line_number":754,"context_line":"            def getLibVersion(self):"},{"line_number":755,"context_line":"                return (0 * 1000 * 1000) + (9 * 1000) + 11"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":758,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm5Q%3D","line":755,"in_reply_to":"AAAAUH%2F%2FnGs%3D","updated":"2014-01-10 14:52:51.000000000","message":"Done","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":757,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":758,"context_line":"                pass"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"            def registerCloseCallback(self, cb, opaque, **args):"},{"line_number":761,"context_line":"                pass"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm6I%3D","line":760,"updated":"2014-01-10 14:52:51.000000000","message":"Actually I use this signature to deal with mox. Like that it does not raise an AttributeError.\n\nI will update the code to use: *args, **kwargs","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":757,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":758,"context_line":"                pass"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"            def registerCloseCallback(self, cb, opaque, **args):"},{"line_number":761,"context_line":"                pass"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnGI%3D","line":760,"updated":"2014-01-10 14:30:20.000000000","message":"s/**args/freecb/ because of the method of v1.0.0.","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        conn._connect(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(conn._conn)"},{"line_number":771,"context_line":"        conn.set_host_enabled(\u0027fake-mini\u0027, True)"},{"line_number":772,"context_line":"        conn._conn.registerCloseCallback("},{"line_number":773,"context_line":"            mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(TypeError)"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"        self.mox.ReplayAll()"},{"line_number":776,"context_line":"        conn._get_new_connection()"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnFM%3D","line":773,"updated":"2014-01-10 14:30:20.000000000","message":"TypeError does not happen because mox raises AttributeError, I guess.","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":778,"context_line":"    def test_close_callback_not_defined(self):"},{"line_number":779,"context_line":"        class FakeConn():"},{"line_number":780,"context_line":"            def getLibVersion(self):"},{"line_number":781,"context_line":"                return (0 * 1000 * 1000) + (9 * 1000) + 11"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":784,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnGA%3D","line":781,"updated":"2014-01-10 14:30:20.000000000","message":"ditto","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":778,"context_line":"    def test_close_callback_not_defined(self):"},{"line_number":779,"context_line":"        class FakeConn():"},{"line_number":780,"context_line":"            def getLibVersion(self):"},{"line_number":781,"context_line":"                return (0 * 1000 * 1000) + (9 * 1000) + 11"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"            def domainEventRegisterAny(self, *args, **kwargs):"},{"line_number":784,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm5M%3D","line":781,"in_reply_to":"AAAAUH%2F%2FnGA%3D","updated":"2014-01-10 14:52:51.000000000","message":"Done","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"931a62b1bd001cf9593b4d514e5a1a6524eb7c1e","unresolved":false,"context_lines":[{"line_number":7668,"context_line":"            libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE,"},{"line_number":7669,"context_line":"            mox.IgnoreArg(),"},{"line_number":7670,"context_line":"            mox.IgnoreArg())"},{"line_number":7671,"context_line":"        if hasattr(libvirt.virConnect, \u0027registerCloseCallback\u0027):"},{"line_number":7672,"context_line":"            eventlet.tpool.execute("},{"line_number":7673,"context_line":"                conn.registerCloseCallback,"},{"line_number":7674,"context_line":"                mox.IgnoreArg(),"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUH%2F%2FRjY%3D","line":7671,"updated":"2014-01-15 15:56:50.000000000","message":"actually we have to fix virConnect to a fake object because the method registerCloseCallback can have several signatures or be not defined.","commit_id":"722df5d26046c2cb5e0daa791881147cb2d049aa"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ea0abaf11b70ca635c08835fbf1ce70a709f9dd5","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support events: %(error)s\"),"},{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if \u0027registerCloseCallback\u0027 in wrapped_conn:"},{"line_number":647,"context_line":"            try:"},{"line_number":648,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":649,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F2xw%3D","line":646,"updated":"2014-01-07 16:18:35.000000000","message":"It\u0027s possible to add an info log message to inform the user this version of libvirt does not support this feature?","commit_id":"498145e13df9dcbf229eece092f372342893e33d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3e80d82a4b643a9621d6e051059312914cd44285","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support events: %(error)s\"),"},{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if \u0027registerCloseCallback\u0027 in wrapped_conn:"},{"line_number":647,"context_line":"            try:"},{"line_number":648,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":649,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F2us%3D","line":646,"in_reply_to":"AAAAUH%2F%2F2xw%3D","updated":"2014-01-07 16:33:15.000000000","message":"My concern is that version info misleads users.\n\nAs Sean said on launchpad, ubuntu\u0027s libvirt 1.1.1 does not contain the interface, but original(community)\u0027s libvirt 1.1.4 contain the interface. I guess the distro removes it by itself.\n\nIf we write the libvirt version, that\u0027d better to mean original libvirt. but people who use ubuntu will confuse.\n\nI have seen this kind of changes on other linux software, it seems difficult issue..","commit_id":"498145e13df9dcbf229eece092f372342893e33d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"eca1fa23c531431bf3116da9d14effcaba5f7e06","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":653,"context_line":"                         \" events: %(error)s\"),"},{"line_number":654,"context_line":"                         {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":655,"context_line":"            except Exception as e:"},{"line_number":656,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":657,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":658,"context_line":"                         {\u0027version\u0027: wrapped_conn.getLibVersion(), \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FzZQ%3D","line":655,"updated":"2014-01-08 09:19:38.000000000","message":"Why did you add this part?\nIf it is required you need to add new test.","commit_id":"27616c0ba252c705dd72c75e63fc51644afb75f7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"63e68a522ce20d25a71ae40bc39d8222fa568d8a","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":653,"context_line":"                         \" events: %(error)s\"),"},{"line_number":654,"context_line":"                         {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":655,"context_line":"            except Exception as e:"},{"line_number":656,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":657,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":658,"context_line":"                         {\u0027version\u0027: wrapped_conn.getLibVersion(), \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Fx5o%3D","line":655,"in_reply_to":"AAAAUH%2F%2FyBw%3D","updated":"2014-01-08 15:18:22.000000000","message":"ok sorry for that :)\n\n\nkind of difficult bug to correct.","commit_id":"27616c0ba252c705dd72c75e63fc51644afb75f7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d9a2a6ce715f3d486472d7d29518e81ca9cee521","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":653,"context_line":"                         \" events: %(error)s\"),"},{"line_number":654,"context_line":"                         {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":655,"context_line":"            except Exception as e:"},{"line_number":656,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":657,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":658,"context_line":"                         {\u0027version\u0027: wrapped_conn.getLibVersion(), \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FyBw%3D","line":655,"in_reply_to":"AAAAUH%2F%2FzZQ%3D","updated":"2014-01-08 14:55:31.000000000","message":"Hi sahid,\n\nThis change is just for investigating the failure of python2.6 unit test.\nOn the unit test of patchset5, test_connection_to_primitive failed due to invalid argument number:\n\n TypeError: registerCloseCallback() takes exactly 4 arguments (3 given)\n\nI guess libvirt of python2.6 environment is older than 1.0.1 but it contains registerCloseCallback() and the argument number is different from 1.0.1. That is just my idea, and I\u0027d like to check this with this debugging message.\n\nHowever, now Jenkins is not good and we need to wait for him.\n\nhttp://logs.openstack.org/67/65267/5/check/gate-nova-python26/21c800a/testr_results.html.gz","commit_id":"27616c0ba252c705dd72c75e63fc51644afb75f7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9effe34323fe0177dda8c8047c574095a6568586","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            except Exception as e:"},{"line_number":656,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":657,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":658,"context_line":"                         {\u0027version\u0027: wrapped_conn.getLibVersion(), \u0027error\u0027: e})"},{"line_number":659,"context_line":"                raise"},{"line_number":660,"context_line":"        else:"},{"line_number":661,"context_line":"            LOG.warn(_(\"This version \u0027%s\u0027 of python libvirt does not support \""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FvVA%3D","line":658,"updated":"2014-01-09 00:44:33.000000000","message":"Sorry, this debugging message does not work.\n\nhere should be:\n\n import libvirt\n [..]\n {\u0027version\u0027: libvirt.getVersion(), ..}","commit_id":"27616c0ba252c705dd72c75e63fc51644afb75f7"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"36af32094f673e60667edfadc254831ea5199bcd","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                import libvirt as tmp_libvirt"},{"line_number":657,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":658,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":659,"context_line":"                         {\u0027version\u0027: tmp_libvirt.getLibVersion(), \u0027error\u0027: e})"},{"line_number":660,"context_line":"                raise e"},{"line_number":661,"context_line":"        else:"},{"line_number":662,"context_line":"            LOG.warn(_(\"This version \u0027%s\u0027 of python libvirt does not support \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FucU%3D","line":659,"updated":"2014-01-09 06:08:03.000000000","message":"I would just change all of this log to something like:\nLOG.warn(_(\u0027Cannot register registerCloseCallback\u0027, exc_info\u003dTrue))\nThis will log the trace as well.\n\nAlso, what is wrong with using wrapped_conn.getLibVersion() (However, IMHO, logging the version here is helpful)","commit_id":"3b585788a507369f12e49b9b95bcb31c6df87f2b"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"36af32094f673e60667edfadc254831ea5199bcd","unresolved":false,"context_lines":[{"line_number":657,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":658,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":659,"context_line":"                         {\u0027version\u0027: tmp_libvirt.getLibVersion(), \u0027error\u0027: e})"},{"line_number":660,"context_line":"                raise e"},{"line_number":661,"context_line":"        else:"},{"line_number":662,"context_line":"            LOG.warn(_(\"This version \u0027%s\u0027 of python libvirt does not support \""},{"line_number":663,"context_line":"                       \"\u0027registerCloseCallback\u0027 event.\"),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Fufs%3D","line":660,"updated":"2014-01-09 06:08:03.000000000","message":"I don`t think you should raise here. IMHO\nThe connection should be established, even without registerCloseCallback registered.","commit_id":"3b585788a507369f12e49b9b95bcb31c6df87f2b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f8764a6bca1592cefbd2d32bce3535b0b6c1f783","unresolved":false,"context_lines":[{"line_number":657,"context_line":"                LOG.warn(_(\"On this version %(version)s, an exception %(err)s \""},{"line_number":658,"context_line":"                           \"happens when \u0027registerCloseCallback\u0027 event.\"),"},{"line_number":659,"context_line":"                         {\u0027version\u0027: tmp_libvirt.getLibVersion(), \u0027error\u0027: e})"},{"line_number":660,"context_line":"                raise e"},{"line_number":661,"context_line":"        else:"},{"line_number":662,"context_line":"            LOG.warn(_(\"This version \u0027%s\u0027 of python libvirt does not support \""},{"line_number":663,"context_line":"                       \"\u0027registerCloseCallback\u0027 event.\"),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Fuac%3D","line":660,"in_reply_to":"AAAAUH%2F%2Fufs%3D","updated":"2014-01-09 06:14:56.000000000","message":"I know, this part is just for digging python2.6 unittest failure.\nPlease see patchset7 comment.\n\nhttps://review.openstack.org/#/c/65267/7/nova/virt/libvirt/driver.py","commit_id":"3b585788a507369f12e49b9b95bcb31c6df87f2b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6ab583ff7e0b5d0ef6cb448344e3d3b41df7a64e","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":654,"context_line":"                        self._close_callback, None)"},{"line_number":655,"context_line":"                except TypeError:"},{"line_number":656,"context_line":"                    LOG.warn(_(\"2agrs invalid signature.\"))"},{"line_number":657,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":658,"context_line":"                        self._close_callback, None, None)"},{"line_number":659,"context_line":"            except libvirt.libvirtError as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FscU%3D","line":656,"updated":"2014-01-09 14:52:13.000000000","message":"This warn seems unnecessary for avoiding noise of log.\n\nAlso some comment would be helpful for maintenance.\nex.\n # NOTE: The registerCloseCallback of python-libvirt 1.0.1+ contains\n # 3 arguments and the above registerCloseCallback would succeed.\n # However, the one of python-libvirt 1.0.0 contains 4 arguments and\n # This TypeError happens.\n\nSorry for my previous comment, because I said version info is unnecessary.\nBut I think better to write it for explaining it as you said.","commit_id":"35b9e4d35cd52a93dff202389486e424936f63e6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ae78172acf3429955c057c32a6010aa67e657740","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":654,"context_line":"                        self._close_callback, None)"},{"line_number":655,"context_line":"                except TypeError:"},{"line_number":656,"context_line":"                    LOG.warn(_(\"2agrs invalid signature.\"))"},{"line_number":657,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":658,"context_line":"                        self._close_callback, None, None)"},{"line_number":659,"context_line":"            except libvirt.libvirtError as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Frjc%3D","line":656,"in_reply_to":"AAAAUH%2F%2FscU%3D","updated":"2014-01-09 17:22:00.000000000","message":"Done","commit_id":"35b9e4d35cd52a93dff202389486e424936f63e6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6ab583ff7e0b5d0ef6cb448344e3d3b41df7a64e","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                except TypeError:"},{"line_number":656,"context_line":"                    LOG.warn(_(\"2agrs invalid signature.\"))"},{"line_number":657,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":658,"context_line":"                        self._close_callback, None, None)"},{"line_number":659,"context_line":"            except libvirt.libvirtError as e:"},{"line_number":660,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":661,"context_line":"                         \" events: %(error)s\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Fsa8%3D","line":658,"updated":"2014-01-09 14:52:13.000000000","message":"This regiterCloseCallback() would be good idea, but I am not sure that this is necessary now because we have not called this method(v1.0.0). I\u0027m a worrywart now..","commit_id":"35b9e4d35cd52a93dff202389486e424936f63e6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ae78172acf3429955c057c32a6010aa67e657740","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                except TypeError:"},{"line_number":656,"context_line":"                    LOG.warn(_(\"2agrs invalid signature.\"))"},{"line_number":657,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":658,"context_line":"                        self._close_callback, None, None)"},{"line_number":659,"context_line":"            except libvirt.libvirtError as e:"},{"line_number":660,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":661,"context_line":"                         \" events: %(error)s\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Friw%3D","line":658,"in_reply_to":"AAAAUH%2F%2Fsa8%3D","updated":"2014-01-09 17:22:00.000000000","message":"Done","commit_id":"35b9e4d35cd52a93dff202389486e424936f63e6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6ab583ff7e0b5d0ef6cb448344e3d3b41df7a64e","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        else:"},{"line_number":664,"context_line":"            LOG.warn(_(\"This version \u0027%s\u0027 of python libvirt does not support \""},{"line_number":665,"context_line":"                       \"\u0027registerCloseCallback\u0027 event.\"),"},{"line_number":666,"context_line":"                     wrapped_conn.getLibVersion())"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        return wrapped_conn"},{"line_number":669,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FsfQ%3D","line":666,"updated":"2014-01-09 14:52:13.000000000","message":"I feel better to remove this else block because if there is not registerCloseCallback method, many warning log are output to log file. That log would be noise for production environment, because many current environments don\u0027t have this method.\n\nFor example, default python-libvirt version of unbuntu12.04 is 0.9.8. That does not contain the method.","commit_id":"35b9e4d35cd52a93dff202389486e424936f63e6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ae78172acf3429955c057c32a6010aa67e657740","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        else:"},{"line_number":664,"context_line":"            LOG.warn(_(\"This version \u0027%s\u0027 of python libvirt does not support \""},{"line_number":665,"context_line":"                       \"\u0027registerCloseCallback\u0027 event.\"),"},{"line_number":666,"context_line":"                     wrapped_conn.getLibVersion())"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        return wrapped_conn"},{"line_number":669,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Fri0%3D","line":666,"in_reply_to":"AAAAUH%2F%2FsfQ%3D","updated":"2014-01-09 17:22:00.000000000","message":"Done","commit_id":"35b9e4d35cd52a93dff202389486e424936f63e6"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f57dea1887186ca6be3097e49dd9c43fe5c50a5c","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE,"},{"line_number":640,"context_line":"                self._event_lifecycle_callback,"},{"line_number":641,"context_line":"                self)"},{"line_number":642,"context_line":"        except libvirt.libvirtError as e:"},{"line_number":643,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support events: %(error)s\"),"},{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FrUc%3D","line":642,"updated":"2014-01-09 18:10:36.000000000","message":"I\u0027m not sure why is this has to be changed?\nI don\u0027t think that this is a requirement to to fail the connection if events cannot be registered.","commit_id":"dba620dcd94ff9510469026b37cc0b8faa009979"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f60d02c8fcf8b7f7da1591a43e73c4be2c653e9e","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE,"},{"line_number":640,"context_line":"                self._event_lifecycle_callback,"},{"line_number":641,"context_line":"                self)"},{"line_number":642,"context_line":"        except libvirt.libvirtError as e:"},{"line_number":643,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support events: %(error)s\"),"},{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FrTc%3D","line":642,"in_reply_to":"AAAAUH%2F%2FrUc%3D","updated":"2014-01-09 18:16:27.000000000","message":"Done","commit_id":"dba620dcd94ff9510469026b37cc0b8faa009979"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f57dea1887186ca6be3097e49dd9c43fe5c50a5c","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                    # contains 4 arguments and This TypeError happens."},{"line_number":655,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":656,"context_line":"                        self._close_callback, None)"},{"line_number":657,"context_line":"                except TypeError:"},{"line_number":658,"context_line":"                    pass"},{"line_number":659,"context_line":"            except libvirt.libvirtError as e:"},{"line_number":660,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FrUM%3D","line":657,"updated":"2014-01-09 18:10:36.000000000","message":"There is no need for additional try..except here..\nYou can just use \ntry:\n    code\n\nexcept TypeError:\n...\nexcept libvirt.libvirtError as e:\n...\n\nHowever, as per my comment on line 642, I would just change except libvirt.libvirtError to catch all exception and remove the TypeError\nThis is IMHO\n\nAlso, please remove the trailing space on line 651","commit_id":"dba620dcd94ff9510469026b37cc0b8faa009979"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f60d02c8fcf8b7f7da1591a43e73c4be2c653e9e","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                    # contains 4 arguments and This TypeError happens."},{"line_number":655,"context_line":"                    wrapped_conn.registerCloseCallback("},{"line_number":656,"context_line":"                        self._close_callback, None)"},{"line_number":657,"context_line":"                except TypeError:"},{"line_number":658,"context_line":"                    pass"},{"line_number":659,"context_line":"            except libvirt.libvirtError as e:"},{"line_number":660,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FrTI%3D","line":657,"in_reply_to":"AAAAUH%2F%2FrUM%3D","updated":"2014-01-09 18:16:27.000000000","message":"Done","commit_id":"dba620dcd94ff9510469026b37cc0b8faa009979"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"08012ef224c9f525827e62eb92c204931c5de156","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                # contains 4 arguments and This TypeError happens."},{"line_number":655,"context_line":"                wrapped_conn.registerCloseCallback("},{"line_number":656,"context_line":"                    self._close_callback, None)"},{"line_number":657,"context_line":"            except Exception as e:"},{"line_number":658,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":659,"context_line":"                           \" events: %(error)s\"),"},{"line_number":660,"context_line":"                         {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FqcA%3D","line":657,"updated":"2014-01-09 22:48:10.000000000","message":"seems too large for catching exceptions.\n\nThis catching causes a lot of the following LOG.warn() in some environments which is like python2.6 unittest environment.\n\nI think we need to revert here to original code and add\n\n except TypeError:\n     pass","commit_id":"13a81e7d9bb68d8905fd98edf94188e1db354ebb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"10aad64594ae36abb2c43e09c2e8e728c4d3c012","unresolved":false,"context_lines":[{"line_number":659,"context_line":"                # Callback succeeds. However, the one of python-libvirt 1.0.0"},{"line_number":660,"context_line":"                # is defined with 4 arguments and this TypeError happens."},{"line_number":661,"context_line":"                # This code does not support python-libvirt 1.0.0."},{"line_number":662,"context_line":"                pass"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        return wrapped_conn"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Fosw%3D","line":662,"updated":"2014-01-10 08:45:04.000000000","message":"mox catches this TypeError exception and raises UnexpectedMethodCallError.\n\nThis except does not work on py2.6 unittest...","commit_id":"6644231a1cb9a5298dbd1ee530c517f37ca0e672"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b1df6dbc915e6c7c9bb6e3db99a43ee98a6b27f6","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support events: %(error)s\"),"},{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if hasattr(wrapped_conn, \u0027registerCloseCallback\u0027):"},{"line_number":647,"context_line":"            try:"},{"line_number":648,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":649,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FoO8%3D","line":646,"updated":"2014-01-10 10:33:03.000000000","message":"Would it not be more pythonic and just call the method, especially given we have to catch type error anyways?","commit_id":"02dd81cf72ac3e966ef9192b9df7c829cadae955"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f9d7e43523121b2a0782feeb174fe0eb1d2da745","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support events: %(error)s\"),"},{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if hasattr(wrapped_conn, \u0027registerCloseCallback\u0027):"},{"line_number":647,"context_line":"            try:"},{"line_number":648,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":649,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2Fnhg%3D","line":646,"in_reply_to":"AAAAUH%2F%2FoO8%3D","updated":"2014-01-10 12:56:28.000000000","message":"You are completely right.","commit_id":"02dd81cf72ac3e966ef9192b9df7c829cadae955"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b1df6dbc915e6c7c9bb6e3db99a43ee98a6b27f6","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":654,"context_line":"                         \" events: %(error)s\"),"},{"line_number":655,"context_line":"                         {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":656,"context_line":"            except Exception:"},{"line_number":657,"context_line":"                # NOTE: The registerCloseCallback of python-libvirt 1.0.1+"},{"line_number":658,"context_line":"                # is defined with 3 arguments, and the above registerClose-"},{"line_number":659,"context_line":"                # Callback succeeds. However, the one of python-libvirt 1.0.0"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FoPQ%3D","line":656,"updated":"2014-01-10 10:33:03.000000000","message":"I would rather we caught the TypeError and logged a warning, or debug, then add the generic catch with a TODO to fix the unit tests so we don\u0027t need it.\n\nDo we have unit tests to catch this new code path? I don\u0027t see any obvious ones.","commit_id":"02dd81cf72ac3e966ef9192b9df7c829cadae955"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f9d7e43523121b2a0782feeb174fe0eb1d2da745","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":654,"context_line":"                         \" events: %(error)s\"),"},{"line_number":655,"context_line":"                         {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":656,"context_line":"            except Exception:"},{"line_number":657,"context_line":"                # NOTE: The registerCloseCallback of python-libvirt 1.0.1+"},{"line_number":658,"context_line":"                # is defined with 3 arguments, and the above registerClose-"},{"line_number":659,"context_line":"                # Callback succeeds. However, the one of python-libvirt 1.0.0"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2Fnhc%3D","line":656,"in_reply_to":"AAAAUH%2F%2FoPQ%3D","updated":"2014-01-10 12:56:28.000000000","message":"Done","commit_id":"02dd81cf72ac3e966ef9192b9df7c829cadae955"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":648,"context_line":"                      str(self))"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"            wrapped_conn.registerCloseCallback("},{"line_number":651,"context_line":"                self._close_callback, None)"},{"line_number":652,"context_line":"        except (TypeError, AttributeError) as e:"},{"line_number":653,"context_line":"            # NOTE: The registerCloseCallback of python-libvirt 1.0.1+"},{"line_number":654,"context_line":"            # is defined with 3 arguments, and the above registerClose-"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnB8%3D","line":651,"updated":"2014-01-10 14:30:20.000000000","message":"Can we write this call in one line?","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":648,"context_line":"                      str(self))"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"            wrapped_conn.registerCloseCallback("},{"line_number":651,"context_line":"                self._close_callback, None)"},{"line_number":652,"context_line":"        except (TypeError, AttributeError) as e:"},{"line_number":653,"context_line":"            # NOTE: The registerCloseCallback of python-libvirt 1.0.1+"},{"line_number":654,"context_line":"            # is defined with 3 arguments, and the above registerClose-"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm44%3D","line":651,"in_reply_to":"AAAAUH%2F%2FnB8%3D","updated":"2014-01-10 14:52:51.000000000","message":"Done","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":649,"context_line":""},{"line_number":650,"context_line":"            wrapped_conn.registerCloseCallback("},{"line_number":651,"context_line":"                self._close_callback, None)"},{"line_number":652,"context_line":"        except (TypeError, AttributeError) as e:"},{"line_number":653,"context_line":"            # NOTE: The registerCloseCallback of python-libvirt 1.0.1+"},{"line_number":654,"context_line":"            # is defined with 3 arguments, and the above registerClose-"},{"line_number":655,"context_line":"            # Callback succeeds. However, the one of python-libvirt 1.0.0"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnDU%3D","line":652,"updated":"2014-01-10 14:30:20.000000000","message":"mox library contains AttributeError class.\nWe cannot use AttributeError without importing mox.\n\nbut I think it is not good to import mox library here because mox is development tool and production environments don\u0027t need to contain it.\n\nI think AttributeError should be removed from here, and catch AttributeError at line 661.","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":649,"context_line":""},{"line_number":650,"context_line":"            wrapped_conn.registerCloseCallback("},{"line_number":651,"context_line":"                self._close_callback, None)"},{"line_number":652,"context_line":"        except (TypeError, AttributeError) as e:"},{"line_number":653,"context_line":"            # NOTE: The registerCloseCallback of python-libvirt 1.0.1+"},{"line_number":654,"context_line":"            # is defined with 3 arguments, and the above registerClose-"},{"line_number":655,"context_line":"            # Callback succeeds. However, the one of python-libvirt 1.0.0"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm4s%3D","line":652,"in_reply_to":"AAAAUH%2F%2FnDU%3D","updated":"2014-01-10 14:52:51.000000000","message":"Please read my comment on test_libvirt. does it works for you?","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0fe0f42abed2753e2a536cc0aa1aa8fe77902ce","unresolved":false,"context_lines":[{"line_number":654,"context_line":"            # is defined with 3 arguments, and the above registerClose-"},{"line_number":655,"context_line":"            # Callback succeeds. However, the one of python-libvirt 1.0.0"},{"line_number":656,"context_line":"            # is defined with 4 arguments and TypeError happens here."},{"line_number":657,"context_line":"            # Then python-libvirt 0.9 does not defined a method register-"},{"line_number":658,"context_line":"            # CloseCallback."},{"line_number":659,"context_line":"            LOG.debug(_(\"The version of python-libvirt does not support \""},{"line_number":660,"context_line":"                        \"registerCloseCallback or is to old: %s\"), e)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FnCc%3D","line":657,"updated":"2014-01-10 14:30:20.000000000","message":"s/defined/define/","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6ad0a342e2e0f344db926b4420ba8ec3ba111de9","unresolved":false,"context_lines":[{"line_number":654,"context_line":"            # is defined with 3 arguments, and the above registerClose-"},{"line_number":655,"context_line":"            # Callback succeeds. However, the one of python-libvirt 1.0.0"},{"line_number":656,"context_line":"            # is defined with 4 arguments and TypeError happens here."},{"line_number":657,"context_line":"            # Then python-libvirt 0.9 does not defined a method register-"},{"line_number":658,"context_line":"            # CloseCallback."},{"line_number":659,"context_line":"            LOG.debug(_(\"The version of python-libvirt does not support \""},{"line_number":660,"context_line":"                        \"registerCloseCallback or is to old: %s\"), e)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Fm4k%3D","line":657,"in_reply_to":"AAAAUH%2F%2FnCc%3D","updated":"2014-01-10 14:52:51.000000000","message":"Done","commit_id":"d297426ba5f6a5741069059c6ff96e82531af96e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"91ab055e24c09a040e44107f381d7e4701d4c072","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            # Then python-libvirt 0.9 does not define a method register-"},{"line_number":656,"context_line":"            # CloseCallback."},{"line_number":657,"context_line":"            LOG.debug(_(\"The version of python-libvirt does not support \""},{"line_number":658,"context_line":"                        \"registerCloseCallback or is to old: %s\"), e)"},{"line_number":659,"context_line":"        except Exception as e:"},{"line_number":660,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":661,"context_line":"                       \" events: %(error)s\"),"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F%2FkzM%3D","line":658,"updated":"2014-01-10 21:25:37.000000000","message":"s/to/too/","commit_id":"edfc4b66c8f5f52744e2df8785c4924b5e8d0dd1"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"e2d4ae2cfe1509bf9eb6004dc871a06437d92c3f","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        if self._has_min_version(wrapped_conn,"},{"line_number":648,"context_line":"                                 MIN_LIBVIRT_CLOSE_CALLBACK_VERSION):"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":651,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FkhE%3D","side":"PARENT","line":648,"updated":"2014-01-10 22:24:37.000000000","message":"Since this was checking the version properly before, Is the issue that this was checking the libvirt version, and not the python-libvirt version and we may run with them out of sync?","commit_id":"4dd294160ceb3b433f50ad66572a424a43377583"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"327a5262dfa20ab65b5627afc4c35fcde07f6aaf","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        if self._has_min_version(wrapped_conn,"},{"line_number":648,"context_line":"                                 MIN_LIBVIRT_CLOSE_CALLBACK_VERSION):"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":651,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FiOw%3D","side":"PARENT","line":648,"in_reply_to":"AAAAUH%2F%2FkWI%3D","updated":"2014-01-12 09:25:43.000000000","message":"Vladik is right.\n\nregisterCloseCallback has been added since original(community\u0027s) python-libvirt v1.0.0, and v1.2.0 also contains the method.\nHowever ubuntu cloud\u0027s v1.0.1 does not contain this method.\nand this check does not work.\n\nThe latest patch tries to operate the method and catch TypeError exception if the method does not exist instead of this version check.","commit_id":"4dd294160ceb3b433f50ad66572a424a43377583"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"869edcae71b5817d8121908bc321735da6b6a10e","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        if self._has_min_version(wrapped_conn,"},{"line_number":648,"context_line":"                                 MIN_LIBVIRT_CLOSE_CALLBACK_VERSION):"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":651,"context_line":"                          str(self))"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FkWI%3D","side":"PARENT","line":648,"in_reply_to":"AAAAUH%2F%2FkhE%3D","updated":"2014-01-10 23:37:58.000000000","message":"I think this is exactly the problem.\niirc, the problem occur on ubuntu cloud that had libvirt package 1.0.1, however, it was missing the registerCloseCallback method","commit_id":"4dd294160ceb3b433f50ad66572a424a43377583"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6adff66962160f52937957da4a9181d696b70ce8","unresolved":false,"context_lines":[{"line_number":656,"context_line":"            # CloseCallback."},{"line_number":657,"context_line":"            LOG.debug(_(\"The version of python-libvirt does not support \""},{"line_number":658,"context_line":"                        \"registerCloseCallback or is too old: %s\"), e)"},{"line_number":659,"context_line":"        except Exception as e:"},{"line_number":660,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":661,"context_line":"                       \" events: %(error)s\"),"},{"line_number":662,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2Fkhk%3D","line":659,"updated":"2014-01-10 22:23:29.000000000","message":"why not libvirt.libvirtError like before?","commit_id":"0872d2afd342f1cae2509193045807a85dcc97b3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"327a5262dfa20ab65b5627afc4c35fcde07f6aaf","unresolved":false,"context_lines":[{"line_number":656,"context_line":"            # CloseCallback."},{"line_number":657,"context_line":"            LOG.debug(_(\"The version of python-libvirt does not support \""},{"line_number":658,"context_line":"                        \"registerCloseCallback or is too old: %s\"), e)"},{"line_number":659,"context_line":"        except Exception as e:"},{"line_number":660,"context_line":"            LOG.warn(_(\"URI %(uri)s does not support connection\""},{"line_number":661,"context_line":"                       \" events: %(error)s\"),"},{"line_number":662,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FiOs%3D","line":659,"in_reply_to":"AAAAUH%2F%2Fkhk%3D","updated":"2014-01-12 09:25:43.000000000","message":"I feel this change is not necessary as Russell said.","commit_id":"0872d2afd342f1cae2509193045807a85dcc97b3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dc9a6e0177861f08478a9342bde5821eb82887d7","unresolved":false,"context_lines":[{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        try:"},{"line_number":647,"context_line":"            LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":648,"context_line":"                      str(self))"},{"line_number":649,"context_line":"            wrapped_conn.registerCloseCallback(self._close_callback, None)"},{"line_number":650,"context_line":"        except (TypeError, AttributeError) as e:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUH%2F%2FfYw%3D","line":647,"updated":"2014-01-13 11:36:12.000000000","message":"please use a , instead of the %","commit_id":"aaf2f7b334758ab9c0dd03deaf618734cd7bf5f2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6844ff41ed065fa1adf5a06ad0f9c998d8e0d908","unresolved":false,"context_lines":[{"line_number":644,"context_line":"                     {\u0027uri\u0027: self.uri(), \u0027error\u0027: e})"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        try:"},{"line_number":647,"context_line":"            LOG.debug(_(\"Registering for connection events: %s\") %"},{"line_number":648,"context_line":"                      str(self))"},{"line_number":649,"context_line":"            wrapped_conn.registerCloseCallback(self._close_callback, None)"},{"line_number":650,"context_line":"        except (TypeError, AttributeError) as e:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUH%2F%2FfWY%3D","line":647,"in_reply_to":"AAAAUH%2F%2FfYw%3D","updated":"2014-01-13 11:43:29.000000000","message":"Done","commit_id":"aaf2f7b334758ab9c0dd03deaf618734cd7bf5f2"}]}
