)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f69579586a4c7395c30e91a4d22418a2e4c4ccb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add regression test for bug 1781880"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In 0df91a7f799060cd2e9b8a0adac1efacb974bcb3 a comparison"},{"line_number":10,"context_line":"between ``update_at`` field from services DB and update time"},{"line_number":11,"context_line":"from memcache was added if the servergroup_driver is set to be"},{"line_number":12,"context_line":"memcached."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_9bf9d681","line":10,"range":{"start_line":10,"start_character":10,"end_line":10,"end_character":19},"updated":"2018-08-07 21:25:34.000000000","message":"updated_at","commit_id":"349a13fd81a2dd8f4cbea51a316da2ff724910ad"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f69579586a4c7395c30e91a4d22418a2e4c4ccb","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This could be problematic if servergroup_driver\u003dmc and"},{"line_number":15,"context_line":"``enable_new_services`` option in /etc/nova/nova.conf"},{"line_number":16,"context_line":"is set to be ``False`` at the same time, as the ``update_at``"},{"line_number":17,"context_line":"field will always be ``Null`` in services DB."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"This patch adds an regression test to show this bug."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_bbf6128f","line":16,"range":{"start_line":16,"start_character":50,"end_line":16,"end_character":59},"updated":"2018-08-07 21:25:34.000000000","message":"updated_at","commit_id":"349a13fd81a2dd8f4cbea51a316da2ff724910ad"}],"nova/tests/functional/regressions/test_bug_1781880.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56d7d3fcca4f7fce1162e54d221b360f5f927a8d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestServiceGet(test.TestCase):"},{"line_number":25,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @mock.patch(\u0027nova.cache_utils.get_memcached_client\u0027)"},{"line_number":28,"context_line":"    def setUp(self, mgc_mock):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_2949bab6","line":25,"updated":"2018-07-20 01:18:30.000000000","message":"Shouldn\u0027t need this.","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3f6279b2fc7e267ca1b33b76565038c99cad7109","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestServiceGet(test.TestCase):"},{"line_number":25,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @mock.patch(\u0027nova.cache_utils.get_memcached_client\u0027)"},{"line_number":28,"context_line":"    def setUp(self, mgc_mock):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_e992e2fb","line":25,"in_reply_to":"5f7c97a3_2949bab6","updated":"2018-07-20 01:21:49.000000000","message":"Done","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56d7d3fcca4f7fce1162e54d221b360f5f927a8d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class TestServiceGet(test.TestCase):"},{"line_number":25,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @mock.patch(\u0027nova.cache_utils.get_memcached_client\u0027)"},{"line_number":28,"context_line":"    def setUp(self, mgc_mock):"},{"line_number":29,"context_line":"        super(TestServiceGet, self).setUp()"},{"line_number":30,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a9070a70","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":56},"updated":"2018-07-20 01:18:30.000000000","message":"We shouldn\u0027t have to mock this out if we use one of the testing backends for oslo.cache:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#cache.backend\n\nMaybe oslo_cache.dict, dogpile.cache.memory or dogpile.cache.null?","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3f6279b2fc7e267ca1b33b76565038c99cad7109","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class TestServiceGet(test.TestCase):"},{"line_number":25,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @mock.patch(\u0027nova.cache_utils.get_memcached_client\u0027)"},{"line_number":28,"context_line":"    def setUp(self, mgc_mock):"},{"line_number":29,"context_line":"        super(TestServiceGet, self).setUp()"},{"line_number":30,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_49f2f66a","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":56},"in_reply_to":"5f7c97a3_a9070a70","updated":"2018-07-20 01:21:49.000000000","message":"I have to learn more about this","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56d7d3fcca4f7fce1162e54d221b360f5f927a8d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    @mock.patch(\u0027nova.cache_utils.get_memcached_client\u0027)"},{"line_number":28,"context_line":"    def setUp(self, mgc_mock):"},{"line_number":29,"context_line":"        super(TestServiceGet, self).setUp()"},{"line_number":30,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"},{"line_number":31,"context_line":"        self.useFixture(nova_fixtures.NeutronFixture(self))"},{"line_number":32,"context_line":"        self.flags(enable_new_services\u003dFalse)"},{"line_number":33,"context_line":"        self.flags(servicegroup_driver\u003d\u0027mc\u0027)"},{"line_number":34,"context_line":"        self.mc_client \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_c97fe6db","line":31,"range":{"start_line":30,"start_character":8,"end_line":31,"end_character":59},"updated":"2018-07-20 01:18:30.000000000","message":"We probably don\u0027t need these if we\u0027re just starting up a service.","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3f6279b2fc7e267ca1b33b76565038c99cad7109","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    @mock.patch(\u0027nova.cache_utils.get_memcached_client\u0027)"},{"line_number":28,"context_line":"    def setUp(self, mgc_mock):"},{"line_number":29,"context_line":"        super(TestServiceGet, self).setUp()"},{"line_number":30,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"},{"line_number":31,"context_line":"        self.useFixture(nova_fixtures.NeutronFixture(self))"},{"line_number":32,"context_line":"        self.flags(enable_new_services\u003dFalse)"},{"line_number":33,"context_line":"        self.flags(servicegroup_driver\u003d\u0027mc\u0027)"},{"line_number":34,"context_line":"        self.mc_client \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_c9e606b0","line":31,"range":{"start_line":30,"start_character":8,"end_line":31,"end_character":59},"in_reply_to":"5f7c97a3_c97fe6db","updated":"2018-07-20 01:21:49.000000000","message":"Done","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56d7d3fcca4f7fce1162e54d221b360f5f927a8d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":37,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # The non-admin API client is fine to stay at 2.1 since it just creates"},{"line_number":40,"context_line":"        # and deletes the server."},{"line_number":41,"context_line":"        self.api \u003d api_fixture.api"},{"line_number":42,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_e95f4272","line":40,"range":{"start_line":39,"start_character":58,"end_line":40,"end_character":33},"updated":"2018-07-20 01:18:30.000000000","message":"we aren\u0027t creating or deleting a server","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3f6279b2fc7e267ca1b33b76565038c99cad7109","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":37,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # The non-admin API client is fine to stay at 2.1 since it just creates"},{"line_number":40,"context_line":"        # and deletes the server."},{"line_number":41,"context_line":"        self.api \u003d api_fixture.api"},{"line_number":42,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_09963ef0","line":40,"range":{"start_line":39,"start_character":58,"end_line":40,"end_character":33},"in_reply_to":"5f7c97a3_e95f4272","updated":"2018-07-20 01:21:49.000000000","message":"Done","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56d7d3fcca4f7fce1162e54d221b360f5f927a8d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.api \u003d api_fixture.api"},{"line_number":42,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.start_service(\u0027compute\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.retval \u003d timeutils.utcnow()"},{"line_number":47,"context_line":"        self.mc_client.get.return_value \u003d self.retval"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_2970da08","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":37},"updated":"2018-07-20 01:18:30.000000000","message":"Doesn\u0027t it blow up when we start the service?","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3f6279b2fc7e267ca1b33b76565038c99cad7109","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.api \u003d api_fixture.api"},{"line_number":42,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.start_service(\u0027compute\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.retval \u003d timeutils.utcnow()"},{"line_number":47,"context_line":"        self.mc_client.get.return_value \u003d self.retval"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_8981eea2","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":37},"in_reply_to":"5f7c97a3_2970da08","updated":"2018-07-20 01:21:49.000000000","message":"No... it seems worked.","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56d7d3fcca4f7fce1162e54d221b360f5f927a8d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.retval \u003d timeutils.utcnow()"},{"line_number":47,"context_line":"        self.mc_client.get.return_value \u003d self.retval"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.useFixture(cast_as_call.CastAsCall(self))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_list_services(self):"},{"line_number":52,"context_line":"        \"\"\"Regression test for bug #1781880."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_09639e42","line":49,"updated":"2018-07-20 01:18:30.000000000","message":"Shouldn\u0027t need this.","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3f6279b2fc7e267ca1b33b76565038c99cad7109","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.retval \u003d timeutils.utcnow()"},{"line_number":47,"context_line":"        self.mc_client.get.return_value \u003d self.retval"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.useFixture(cast_as_call.CastAsCall(self))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_list_services(self):"},{"line_number":52,"context_line":"        \"\"\"Regression test for bug #1781880."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_298c5ad6","line":49,"in_reply_to":"5f7c97a3_09639e42","updated":"2018-07-20 01:21:49.000000000","message":"Done","commit_id":"e71ff70197ec7919b4ae7c27f287abffb23b361c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f69579586a4c7395c30e91a4d22418a2e4c4ccb","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from nova.tests.functional.api import client"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class TestServiceGet(test.TestCase):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestServiceGet, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_9b3eb627","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":20},"updated":"2018-08-07 21:25:34.000000000","message":"Need a more descriptive name, like TestServiceListDisabledComputeCacheDriver","commit_id":"349a13fd81a2dd8f4cbea51a316da2ff724910ad"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9b75a321a2d22f9b27cf30fc62f7e2474ca56305","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestServiceGet, self).setUp()"},{"line_number":22,"context_line":"        self.flags(enabled\u003dTrue, backend\u003d\u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":23,"context_line":"        self.flags(enable_new_services\u003dFalse, servicegroup_driver\u003d\u0027mc\u0027)"},{"line_number":24,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":25,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_fe6270da","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":44},"updated":"2018-07-23 04:37:27.000000000","message":"looks like this option lead to \nhttps://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L536\nand in turn return error for get_services below?","commit_id":"349a13fd81a2dd8f4cbea51a316da2ff724910ad"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f69579586a4c7395c30e91a4d22418a2e4c4ccb","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestServiceGet, self).setUp()"},{"line_number":22,"context_line":"        self.flags(enabled\u003dTrue, backend\u003d\u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":23,"context_line":"        self.flags(enable_new_services\u003dFalse, servicegroup_driver\u003d\u0027mc\u0027)"},{"line_number":24,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":25,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f626dfb7","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":44},"in_reply_to":"5f7c97a3_fe6270da","updated":"2018-08-07 21:25:34.000000000","message":"That\u0027s the idea. This test is meant to reproduce the issue described in the bug.","commit_id":"349a13fd81a2dd8f4cbea51a316da2ff724910ad"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f69579586a4c7395c30e91a4d22418a2e4c4ccb","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        TypeError will be raised as NoneType cannot be compared with"},{"line_number":44,"context_line":"        Datetime type."},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        self.assertRaises(client.OpenStackApiException,"},{"line_number":47,"context_line":"                          self.admin_api.get_services)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_7632cff3","line":46,"updated":"2018-08-07 21:25:34.000000000","message":"Should catch the exception and assert it\u0027s a TypeError like described in the bug:\n\nex \u003d self.assertRaises(client.OpenStackApiException, ...)\nself.assertIn(\u0027TypeError\u0027, six.text_type(ex))\n\nAlso, add a FIXME(Kevin_Zheng) note to change this once bug 1781880 is fixed.","commit_id":"349a13fd81a2dd8f4cbea51a316da2ff724910ad"}]}
