)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"307546864ea165b176519bc791b4c4fa209d8b99","unresolved":false,"context_lines":[{"line_number":16,"context_line":"to nova api."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0688134eecb0628b680c8ed01741f00f80eec53f"},{"line_number":19,"context_line":"Closes-Bug: # 1251589"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2B%2B%2B4%3D","line":19,"updated":"2013-11-16 13:39:30.000000000","message":"extra space caused it hasn\u0027t been linked with LP bug.","commit_id":"c7a15473265cbb7ec2219b524bdedeeb3d8db115"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"11a26679eca3b5ec532f0c833f520d3b0502b871","unresolved":false,"context_lines":[{"line_number":16,"context_line":"to nova api."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0688134eecb0628b680c8ed01741f00f80eec53f"},{"line_number":19,"context_line":"Closes-Bug: # 1251589"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2B%2B9w%3D","line":19,"in_reply_to":"AAAATn%2F%2B%2B%2B4%3D","updated":"2013-11-16 14:19:15.000000000","message":"Done","commit_id":"c7a15473265cbb7ec2219b524bdedeeb3d8db115"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"307546864ea165b176519bc791b4c4fa209d8b99","unresolved":false,"context_lines":[{"line_number":688,"context_line":"    def set_host_enabled(self, ctxt, enabled, host):"},{"line_number":689,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhost)"},{"line_number":690,"context_line":"        return cctxt.call(ctxt, \u0027set_host_enabled\u0027, host\u003dhost,"},{"line_number":691,"context_line":"                          enabled\u003denabled)"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    def swap_volume(self, ctxt, instance, old_volume_id, new_volume_id):"},{"line_number":694,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B%2B%2FU%3D","line":691,"updated":"2013-11-16 13:39:30.000000000","message":"nit: one more space indentation","commit_id":"c7a15473265cbb7ec2219b524bdedeeb3d8db115"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"11a26679eca3b5ec532f0c833f520d3b0502b871","unresolved":false,"context_lines":[{"line_number":688,"context_line":"    def set_host_enabled(self, ctxt, enabled, host):"},{"line_number":689,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhost)"},{"line_number":690,"context_line":"        return cctxt.call(ctxt, \u0027set_host_enabled\u0027, host\u003dhost,"},{"line_number":691,"context_line":"                          enabled\u003denabled)"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    def swap_volume(self, ctxt, instance, old_volume_id, new_volume_id):"},{"line_number":694,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B%2B90%3D","line":691,"in_reply_to":"AAAATn%2F%2B%2B%2FU%3D","updated":"2013-11-16 14:19:15.000000000","message":"ctxt is now align with enabled. ;-)","commit_id":"c7a15473265cbb7ec2219b524bdedeeb3d8db115"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"dac00f3c0f9fdaee9ec3f53993ce0180b08f9985","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    def set_host_enabled(self, ctxt, enabled, host):"},{"line_number":689,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhost)"},{"line_number":690,"context_line":"        return cctxt.call(ctxt, \u0027set_host_enabled\u0027, host\u003dhost,"},{"line_number":691,"context_line":"                          enabled\u003denabled)"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    def swap_volume(self, ctxt, instance, old_volume_id, new_volume_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2B%2B3k%3D","line":690,"updated":"2013-11-16 18:48:22.000000000","message":"Is this change really needed? Please see my comment in libvirt/driver.py.","commit_id":"0c51d4e7cc092707304e1506a2ddc280a8e820a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"2af40568077b44bd224bc46de3d5e56dbf9c55da","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    def set_host_enabled(self, ctxt, enabled, host):"},{"line_number":689,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhost)"},{"line_number":690,"context_line":"        return cctxt.call(ctxt, \u0027set_host_enabled\u0027, host\u003dhost,"},{"line_number":691,"context_line":"                          enabled\u003denabled)"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    def swap_volume(self, ctxt, instance, old_volume_id, new_volume_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2B%2Br0%3D","line":690,"in_reply_to":"AAAATn%2F%2B%2B3k%3D","updated":"2013-11-17 00:59:49.000000000","message":"Yes, this is not a MUST for this patch, but it does fixed some potential issues for XenServer as XenServer need host as parameter when disable/enable a host.\n\nOK, I will left this part as it is and fix this in another patch.","commit_id":"0c51d4e7cc092707304e1506a2ddc280a8e820a1"}],"nova/tests/virt/libvirt/test_libvirt.py":[{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"dac00f3c0f9fdaee9ec3f53993ce0180b08f9985","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        self.assertThat(expected, matchers.DictMatches(result))"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    def _create_service_entries(self, context, disabled\u003dFalse, values\u003d{}):"},{"line_number":660,"context_line":"        for avail_zone, hosts in values.iteritems():"},{"line_number":661,"context_line":"            for host in hosts:"},{"line_number":662,"context_line":"                db.service_create(context,"},{"line_number":663,"context_line":"                                  {\u0027host\u0027: host,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2B%2B5I%3D","line":660,"updated":"2013-11-16 18:48:22.000000000","message":"As avali_zone is not used, can you simplify \"values\" to [host] rather than {zone: [host]}?","commit_id":"0c51d4e7cc092707304e1506a2ddc280a8e820a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"2af40568077b44bd224bc46de3d5e56dbf9c55da","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        self.assertThat(expected, matchers.DictMatches(result))"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    def _create_service_entries(self, context, disabled\u003dFalse, values\u003d{}):"},{"line_number":660,"context_line":"        for avail_zone, hosts in values.iteritems():"},{"line_number":661,"context_line":"            for host in hosts:"},{"line_number":662,"context_line":"                db.service_create(context,"},{"line_number":663,"context_line":"                                  {\u0027host\u0027: host,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2B%2Br8%3D","line":660,"in_reply_to":"AAAATn%2F%2B%2B5I%3D","updated":"2013-11-17 00:59:49.000000000","message":"Done","commit_id":"0c51d4e7cc092707304e1506a2ddc280a8e820a1"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"58daecdfd957dd73c3aab30abda55cde01994050","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":669,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":670,"context_line":"        values \u003d self._create_service_entries(self.context,"},{"line_number":671,"context_line":"                                              host_list\u003d[\u0027fake-mini\u0027])"},{"line_number":672,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":673,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2B%2Bmc%3D","line":670,"updated":"2013-11-17 04:28:30.000000000","message":"Please remove \"values \u003d \". This is not referenced (and now always None)","commit_id":"aa8e283ff936e3bb106d32c485cf8309da4aff87"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"01d59036c4f025d1585a872e880a9279ffe04423","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":669,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":670,"context_line":"        values \u003d self._create_service_entries(self.context,"},{"line_number":671,"context_line":"                                              host_list\u003d[\u0027fake-mini\u0027])"},{"line_number":672,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":673,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2B%2BkM%3D","line":670,"in_reply_to":"AAAATn%2F%2B%2Bmc%3D","updated":"2013-11-17 05:23:28.000000000","message":"Done","commit_id":"aa8e283ff936e3bb106d32c485cf8309da4aff87"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"58daecdfd957dd73c3aab30abda55cde01994050","unresolved":false,"context_lines":[{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":675,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":676,"context_line":"        values \u003d self._create_service_entries(self.context, disabled\u003dTrue,"},{"line_number":677,"context_line":"                                              host_list\u003d[\u0027fake-mini\u0027])"},{"line_number":678,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2B%2BmY%3D","line":676,"updated":"2013-11-17 04:28:30.000000000","message":"same","commit_id":"aa8e283ff936e3bb106d32c485cf8309da4aff87"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"01d59036c4f025d1585a872e880a9279ffe04423","unresolved":false,"context_lines":[{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":675,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":676,"context_line":"        values \u003d self._create_service_entries(self.context, disabled\u003dTrue,"},{"line_number":677,"context_line":"                                              host_list\u003d[\u0027fake-mini\u0027])"},{"line_number":678,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2B%2BkI%3D","line":676,"in_reply_to":"AAAATn%2F%2B%2BmY%3D","updated":"2013-11-17 05:23:28.000000000","message":"Done","commit_id":"aa8e283ff936e3bb106d32c485cf8309da4aff87"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"c7ffdb02357ee3a69e85e612851f51ae88b19a9e","unresolved":false,"context_lines":[{"line_number":648,"context_line":"        result \u003d conn.get_volume_connector(volume)"},{"line_number":649,"context_line":"        self.assertThat(expected, matchers.DictMatches(result))"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _create_service_entries(self, context, **kwargs):"},{"line_number":652,"context_line":"        service_ref \u003d {\u0027host\u0027: kwargs.get(\u0027host\u0027, \u0027fake-mini\u0027),"},{"line_number":653,"context_line":"                       \u0027disabled\u0027: kwargs.get(\u0027disabled\u0027, False),"},{"line_number":654,"context_line":"                       \u0027binary\u0027: \u0027nova-compute\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2B8Xo%3D","line":651,"updated":"2013-11-18 10:02:18.000000000","message":"This method create only one service, so should be named _create_service_entry. However, I would like you to simply extend create_service (i.e. handle kwargs[\u0027disabled\u0027]) rather than replace it with a new method.","commit_id":"8ea39694d3d1d11b5c3799e981947a9a36465055"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"42ec69f0e4435e3466a2fdfa12e044dace24219c","unresolved":false,"context_lines":[{"line_number":648,"context_line":"        result \u003d conn.get_volume_connector(volume)"},{"line_number":649,"context_line":"        self.assertThat(expected, matchers.DictMatches(result))"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _create_service_entries(self, context, **kwargs):"},{"line_number":652,"context_line":"        service_ref \u003d {\u0027host\u0027: kwargs.get(\u0027host\u0027, \u0027fake-mini\u0027),"},{"line_number":653,"context_line":"                       \u0027disabled\u0027: kwargs.get(\u0027disabled\u0027, False),"},{"line_number":654,"context_line":"                       \u0027binary\u0027: \u0027nova-compute\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2B8R0%3D","line":651,"in_reply_to":"AAAATn%2F%2B8Xo%3D","updated":"2013-11-18 10:24:18.000000000","message":"Done, but I rename it to _create_service() as it only used in this file.","commit_id":"8ea39694d3d1d11b5c3799e981947a9a36465055"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"c7ffdb02357ee3a69e85e612851f51ae88b19a9e","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":661,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":662,"context_line":"        self._create_service_entries(self.context, host_list\u003d\u0027fake-mini\u0027)"},{"line_number":663,"context_line":"        self.assertEqual(\u0027disabled\u0027,"},{"line_number":664,"context_line":"                         conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2B8Y0%3D","line":662,"updated":"2013-11-18 10:02:18.000000000","message":"\"host_list\" should be \"host\". And, as I mentioned above, can you use self.create_service()?","commit_id":"8ea39694d3d1d11b5c3799e981947a9a36465055"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"42ec69f0e4435e3466a2fdfa12e044dace24219c","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":661,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":662,"context_line":"        self._create_service_entries(self.context, host_list\u003d\u0027fake-mini\u0027)"},{"line_number":663,"context_line":"        self.assertEqual(\u0027disabled\u0027,"},{"line_number":664,"context_line":"                         conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2B8Rw%3D","line":662,"in_reply_to":"AAAATn%2F%2B8Y0%3D","updated":"2013-11-18 10:24:18.000000000","message":"Done","commit_id":"8ea39694d3d1d11b5c3799e981947a9a36465055"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"c7ffdb02357ee3a69e85e612851f51ae88b19a9e","unresolved":false,"context_lines":[{"line_number":666,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":667,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":668,"context_line":"        self._create_service_entries(self.context, disabled\u003dTrue,"},{"line_number":669,"context_line":"                                     host_list\u003d\u0027fake-mini\u0027)"},{"line_number":670,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    def test_close_callback(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2B8XM%3D","line":669,"updated":"2013-11-18 10:02:18.000000000","message":"same","commit_id":"8ea39694d3d1d11b5c3799e981947a9a36465055"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"42ec69f0e4435e3466a2fdfa12e044dace24219c","unresolved":false,"context_lines":[{"line_number":666,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":667,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":668,"context_line":"        self._create_service_entries(self.context, disabled\u003dTrue,"},{"line_number":669,"context_line":"                                     host_list\u003d\u0027fake-mini\u0027)"},{"line_number":670,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    def test_close_callback(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2B8Rs%3D","line":669,"in_reply_to":"AAAATn%2F%2B8XM%3D","updated":"2013-11-18 10:24:18.000000000","message":"Done","commit_id":"8ea39694d3d1d11b5c3799e981947a9a36465055"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6c838c1ecaee26f544d92be95d88fa56faa37d5","unresolved":false,"context_lines":[{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        return db.service_create(context.get_admin_context(), service_ref)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":497,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":498,"context_line":"        self._create_service(host\u003d\u0027fake-mini\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(\u0027disabled\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BMAY%3D","line":496,"updated":"2013-11-29 13:50:10.000000000","message":"nit: would be nice to have a comment for each test permutation since the logic is kind of backwards, i.e. \"Tests disabling an enabled host.\"","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"d9c02daa355a62107b15cd3464ba4530fbbac902","unresolved":false,"context_lines":[{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        return db.service_create(context.get_admin_context(), service_ref)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":497,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":498,"context_line":"        self._create_service(host\u003d\u0027fake-mini\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(\u0027disabled\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BK0k%3D","line":496,"in_reply_to":"AAAATn%2F%2BMAY%3D","updated":"2013-11-30 00:14:05.000000000","message":"Done","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6c838c1ecaee26f544d92be95d88fa56faa37d5","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":498,"context_line":"        self._create_service(host\u003d\u0027fake-mini\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(\u0027disabled\u0027,"},{"line_number":500,"context_line":"                         conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":503,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BMBA%3D","line":500,"updated":"2013-11-29 13:50:10.000000000","message":"nit: Can this go on one line like line 515?","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"d9c02daa355a62107b15cd3464ba4530fbbac902","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":498,"context_line":"        self._create_service(host\u003d\u0027fake-mini\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(\u0027disabled\u0027,"},{"line_number":500,"context_line":"                         conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":503,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BK0g%3D","line":500,"in_reply_to":"AAAATn%2F%2BMBA%3D","updated":"2013-11-30 00:14:05.000000000","message":"Done","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6c838c1ecaee26f544d92be95d88fa56faa37d5","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        self._create_service(disabled\u003dFalse, host\u003d\u0027fake-mini\u0027)"},{"line_number":510,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_set_host_enabled_with_disable_state_disabled(self):"},{"line_number":513,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":514,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":515,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BMAA%3D","line":512,"updated":"2013-11-29 13:50:10.000000000","message":"Could all four tests be combined into one test that covers all 4 permutations with a loop?","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44e018592e7e9b7480e0fab8def52e1a592ae79a","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        self._create_service(disabled\u003dFalse, host\u003d\u0027fake-mini\u0027)"},{"line_number":510,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_set_host_enabled_with_disable_state_disabled(self):"},{"line_number":513,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":514,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":515,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BKOU%3D","line":512,"in_reply_to":"AAAATn%2F%2BK0Y%3D","updated":"2013-11-30 14:59:29.000000000","message":"I\u0027m OK with that.","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"d9c02daa355a62107b15cd3464ba4530fbbac902","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        self._create_service(disabled\u003dFalse, host\u003d\u0027fake-mini\u0027)"},{"line_number":510,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_set_host_enabled_with_disable_state_disabled(self):"},{"line_number":513,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":514,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":515,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BK0Y%3D","line":512,"in_reply_to":"AAAATn%2F%2BMAA%3D","updated":"2013-11-30 00:14:05.000000000","message":"I think that it might be better that we use 4 test cases here as this seems more clear ;-)","commit_id":"510bebf7684f638a897faff4dc5d5b18b0c1624c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5d4227d703cde2bf5769aa852995a8e559f34226","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        return db.service_create(context.get_admin_context(), service_ref)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":497,"context_line":"        \"\"\"Tests disabling an enabled host.\"\"\""},{"line_number":498,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":499,"context_line":"        self._create_service(host\u003d\u0027fake-mini\u0027)"},{"line_number":500,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BKN4%3D","line":497,"updated":"2013-11-30 15:03:10.000000000","message":"I don\u0027t think this is documented anywhere (we need to), but we shouldn\u0027t use doc strings for test cases since apparently it messes up the formatting if the test fails and makes it harder to debug.  So just make it a comment.  See hacking bug 1249612.","commit_id":"4e18d48ce2ac0141b8c4b62e4f026042a518380e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"7f982ac7f4cbb1b85ed5d55bb73dbec74d58d1d2","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        return db.service_create(context.get_admin_context(), service_ref)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def test_set_host_enabled_with_disable(self):"},{"line_number":497,"context_line":"        \"\"\"Tests disabling an enabled host.\"\"\""},{"line_number":498,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":499,"context_line":"        self._create_service(host\u003d\u0027fake-mini\u0027)"},{"line_number":500,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BKAU%3D","line":497,"in_reply_to":"AAAATn%2F%2BKN4%3D","updated":"2013-12-01 00:47:37.000000000","message":"Done","commit_id":"4e18d48ce2ac0141b8c4b62e4f026042a518380e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5d4227d703cde2bf5769aa852995a8e559f34226","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":503,"context_line":"        \"\"\"Tests enabling an disabled host.\"\"\""},{"line_number":504,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":505,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":506,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BKOI%3D","line":503,"updated":"2013-11-30 15:03:10.000000000","message":"s/an/a/","commit_id":"4e18d48ce2ac0141b8c4b62e4f026042a518380e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"7f982ac7f4cbb1b85ed5d55bb73dbec74d58d1d2","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_set_host_enabled_with_enable(self):"},{"line_number":503,"context_line":"        \"\"\"Tests enabling an disabled host.\"\"\""},{"line_number":504,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":505,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":506,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BKAQ%3D","line":503,"in_reply_to":"AAAATn%2F%2BKOI%3D","updated":"2013-12-01 00:47:37.000000000","message":"Done","commit_id":"4e18d48ce2ac0141b8c4b62e4f026042a518380e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5d4227d703cde2bf5769aa852995a8e559f34226","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    def test_set_host_enabled_with_disable_state_disabled(self):"},{"line_number":515,"context_line":"        \"\"\"Tests disabling an disabled host.\"\"\""},{"line_number":516,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":517,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":518,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BKN8%3D","line":515,"updated":"2013-11-30 15:03:10.000000000","message":"s/an/a/","commit_id":"4e18d48ce2ac0141b8c4b62e4f026042a518380e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"7f982ac7f4cbb1b85ed5d55bb73dbec74d58d1d2","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        self.assertEqual(\u0027enabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, True))"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    def test_set_host_enabled_with_disable_state_disabled(self):"},{"line_number":515,"context_line":"        \"\"\"Tests disabling an disabled host.\"\"\""},{"line_number":516,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":517,"context_line":"        self._create_service(disabled\u003dTrue, host\u003d\u0027fake-mini\u0027)"},{"line_number":518,"context_line":"        self.assertEqual(\u0027disabled\u0027, conn.set_host_enabled(\u0027fake-mini\u0027, False))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BKAM%3D","line":515,"in_reply_to":"AAAATn%2F%2BKN8%3D","updated":"2013-12-01 00:47:37.000000000","message":"Done","commit_id":"4e18d48ce2ac0141b8c4b62e4f026042a518380e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"dac00f3c0f9fdaee9ec3f53993ce0180b08f9985","unresolved":false,"context_lines":[{"line_number":2617,"context_line":""},{"line_number":2618,"context_line":"        ctx \u003d nova_context.get_admin_context()"},{"line_number":2619,"context_line":"        try:"},{"line_number":2620,"context_line":"            service \u003d service_obj.Service.get_by_compute_host(ctx, host)"},{"line_number":2621,"context_line":""},{"line_number":2622,"context_line":"            if service.disabled !\u003d disable_service:"},{"line_number":2623,"context_line":"                service.disabled \u003d disable_service"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2B%2B2k%3D","line":2620,"updated":"2013-11-16 18:48:22.000000000","message":"Using \"CONF.host\" ensures this method affects only to the service on this host, while using \"host\" potentially affects to other hosts. So I prefer using \"CONF.host\".\n\n(This is not a problem of this patch, )Firstly, I cannot understand why the \"host\" parameter is needed if \"host\" means a service[\u0027host\u0027]. If \"host\" means compute_node[\u0027hypervisor_hostname\u0027], it makes sense. However apparently API code uses \"host\" as service[\u0027host\u0027].\n\nAnyway, libvirt driver can use CONF.host since its service and compute_node is in one-to-one relation.","commit_id":"0c51d4e7cc092707304e1506a2ddc280a8e820a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"2af40568077b44bd224bc46de3d5e56dbf9c55da","unresolved":false,"context_lines":[{"line_number":2617,"context_line":""},{"line_number":2618,"context_line":"        ctx \u003d nova_context.get_admin_context()"},{"line_number":2619,"context_line":"        try:"},{"line_number":2620,"context_line":"            service \u003d service_obj.Service.get_by_compute_host(ctx, host)"},{"line_number":2621,"context_line":""},{"line_number":2622,"context_line":"            if service.disabled !\u003d disable_service:"},{"line_number":2623,"context_line":"                service.disabled \u003d disable_service"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2B%2BsA%3D","line":2620,"in_reply_to":"AAAATn%2F%2B%2B2k%3D","updated":"2013-11-17 00:59:49.000000000","message":"OK, agree, I will use CONF.host instead for kvm. Thanks.","commit_id":"0c51d4e7cc092707304e1506a2ddc280a8e820a1"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"a5ffe570ab9adb5fc8c5b2b3322db077feb5662f","unresolved":false,"context_lines":[{"line_number":2625,"context_line":"                service.save()"},{"line_number":2626,"context_line":"                LOG.debug(_(\u0027Updating compute service status to %s\u0027),"},{"line_number":2627,"context_line":"                             status_name[disable_service])"},{"line_number":2628,"context_line":"                return status_name[disable_service]"},{"line_number":2629,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2630,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2631,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Bz%2F4%3D","line":2628,"updated":"2013-11-19 20:05:23.000000000","message":"So you will not return if service.disabled \u003d\u003d disable_service?","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6b38631fc2d55cac1be831249587b52be63f3450","unresolved":false,"context_lines":[{"line_number":2625,"context_line":"                service.save()"},{"line_number":2626,"context_line":"                LOG.debug(_(\u0027Updating compute service status to %s\u0027),"},{"line_number":2627,"context_line":"                             status_name[disable_service])"},{"line_number":2628,"context_line":"                return status_name[disable_service]"},{"line_number":2629,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2630,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2631,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Bz5o%3D","line":2628,"in_reply_to":"AAAATn%2F%2Bz%2F4%3D","updated":"2013-11-19 20:37:00.000000000","message":"If they are the same, the service is already in the requested state.  But you make a good point, if it changes, then a status value is returned, if there isn\u0027t a change, None is returned, so you\u0027d still have the bug in that case.  Very nice catch.","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"9032508196dfe934de5d9b777d38eead636832a8","unresolved":false,"context_lines":[{"line_number":2625,"context_line":"                service.save()"},{"line_number":2626,"context_line":"                LOG.debug(_(\u0027Updating compute service status to %s\u0027),"},{"line_number":2627,"context_line":"                             status_name[disable_service])"},{"line_number":2628,"context_line":"                return status_name[disable_service]"},{"line_number":2629,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2630,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2631,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2BziE%3D","line":2628,"in_reply_to":"AAAATn%2F%2Bz5E%3D","updated":"2013-11-19 22:45:00.000000000","message":"If we just consider this issue as virt driver interface, several options for this code:\n\na) ALWAYS return the latest status \n\n\nb) ALWAYS return None. If failed, an exception raised.\n\n\nc) ALWAYS return None and no exception if fail. It assumes either it will never fail, or caller has to check the result \n\n\nd) Return latest status if anything changed, or None if nothing changed or if failed.\n\n\nI\u0027d assume current libvirt driver implementation w/o this patch in fact is c) , this patch changes it to d), which IMHO is quite strange and inconsistent.\n\nAlso if we check how other hyper-visors handle this call, seems VMWare simply pass, I assume that\u0027s in fact None, i..e option d, ) and Xen API seems is a) IIUC.","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aecce13c4d49a1050d4a6205076d703096a3dfae","unresolved":false,"context_lines":[{"line_number":2625,"context_line":"                service.save()"},{"line_number":2626,"context_line":"                LOG.debug(_(\u0027Updating compute service status to %s\u0027),"},{"line_number":2627,"context_line":"                             status_name[disable_service])"},{"line_number":2628,"context_line":"                return status_name[disable_service]"},{"line_number":2629,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2630,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2631,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Bz5E%3D","line":2628,"in_reply_to":"AAAATn%2F%2Bz5o%3D","updated":"2013-11-19 20:42:17.000000000","message":"Well, maybe it depends on the expected result of the API in a request like this - should it be a 400 in that case for a bad request if you\u0027re trying to set the state to it\u0027s current status? Or should it just ignore it and avoid the 400?\n\nLooking at the API docs, the response expects a status value so I\u0027d say even if the state doesn\u0027t change, the status should be returned from this method to avoid the 400.","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e68f30648bd0df9339aa6f24a07bb31555364f81","unresolved":false,"context_lines":[{"line_number":2625,"context_line":"                service.save()"},{"line_number":2626,"context_line":"                LOG.debug(_(\u0027Updating compute service status to %s\u0027),"},{"line_number":2627,"context_line":"                             status_name[disable_service])"},{"line_number":2628,"context_line":"                return status_name[disable_service]"},{"line_number":2629,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2630,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2631,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2BzYo%3D","line":2628,"in_reply_to":"AAAATn%2F%2BziE%3D","updated":"2013-11-19 23:36:08.000000000","message":"Please take a look https://review.openstack.org/#/c/56759/8/nova/virt/libvirt/driver.py\n\nSeems the patch has some problem after rebase, I was always returning \"status_name[disable_service]\", this can make sure API part can always get the value of disable/enable status.","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"8d9d5ac0dc3afac5e7b8631f2f117a88d5e1604e","unresolved":false,"context_lines":[{"line_number":2628,"context_line":"                return status_name[disable_service]"},{"line_number":2629,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2630,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2631,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"},{"line_number":2632,"context_line":"        except Exception:"},{"line_number":2633,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2634,"context_line":"                        \u0027due to an unexpected exception.\u0027) % CONF.host,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B7ss%3D","line":2631,"updated":"2013-11-18 12:47:04.000000000","message":"Should re-raise the exception","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"8d9d5ac0dc3afac5e7b8631f2f117a88d5e1604e","unresolved":false,"context_lines":[{"line_number":2632,"context_line":"        except Exception:"},{"line_number":2633,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2634,"context_line":"                        \u0027due to an unexpected exception.\u0027) % CONF.host,"},{"line_number":2635,"context_line":"                     exc_info\u003dTrue)"},{"line_number":2636,"context_line":""},{"line_number":2637,"context_line":"    def get_host_capabilities(self):"},{"line_number":2638,"context_line":"        \"\"\"Returns an instance of config.LibvirtConfigCaps representing"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B7sc%3D","line":2635,"updated":"2013-11-18 12:47:04.000000000","message":"Should re-raise the exception","commit_id":"85764f6add26503348721f78bab532b60a693b48"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"353265054e20c0adcacb10e8d6f132b9df55787c","unresolved":false,"context_lines":[{"line_number":2714,"context_line":"                    LOG.debug(_(\u0027Not overriding manual compute service \u0027"},{"line_number":2715,"context_line":"                                \u0027status with: %s\u0027),"},{"line_number":2716,"context_line":"                                 status_name[disable_service])"},{"line_number":2717,"context_line":"                return status_name[disable_service]"},{"line_number":2718,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2719,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2720,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BO64%3D","line":2717,"updated":"2013-11-28 14:45:49.000000000","message":"Isn\u0027t this back to failing if line 2696 evaluates to false?  There have been several rebases here so maybe I missed something in one of the previous patch sets, but this problem was pointed out before and I thought you fixed it to always return enabled/disabled in all cases?","commit_id":"9d3b3c6711ea0817a5bf4a5af3fdb14e19f6ed5b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97b0fa447ab66fff07fdffcc1ddd5ae43b4bfeae","unresolved":false,"context_lines":[{"line_number":2714,"context_line":"                    LOG.debug(_(\u0027Not overriding manual compute service \u0027"},{"line_number":2715,"context_line":"                                \u0027status with: %s\u0027),"},{"line_number":2716,"context_line":"                                 status_name[disable_service])"},{"line_number":2717,"context_line":"                return status_name[disable_service]"},{"line_number":2718,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2719,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2720,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BO6Q%3D","line":2717,"in_reply_to":"AAAATn%2F%2BO64%3D","updated":"2013-11-28 14:47:31.000000000","message":"See patch set 9:\n\nhttps://review.openstack.org/#/c/56759/9/nova/virt/libvirt/driver.py\n\nAnd then you fixed it in patch set 10.  I\u0027m guessing one of the rebases in between broke that again.","commit_id":"9d3b3c6711ea0817a5bf4a5af3fdb14e19f6ed5b"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"8311cab7814ec708f27bceb78a520e16686bbd28","unresolved":false,"context_lines":[{"line_number":2714,"context_line":"                    LOG.debug(_(\u0027Not overriding manual compute service \u0027"},{"line_number":2715,"context_line":"                                \u0027status with: %s\u0027),"},{"line_number":2716,"context_line":"                                 status_name[disable_service])"},{"line_number":2717,"context_line":"                return status_name[disable_service]"},{"line_number":2718,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":2719,"context_line":"            LOG.warn(_(\u0027Cannot update service status on host: %s,\u0027"},{"line_number":2720,"context_line":"                        \u0027since it is not registered.\u0027) % CONF.host)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BO5Q%3D","line":2717,"in_reply_to":"AAAATn%2F%2BO6Q%3D","updated":"2013-11-28 14:52:53.000000000","message":"Thanks Matt.","commit_id":"9d3b3c6711ea0817a5bf4a5af3fdb14e19f6ed5b"}]}
