)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":27822,"name":"pengyuesheng","email":"pengyuesheng@gohighsec.com","username":"pengyuesheng"},"change_message_id":"400c647b3f8e729f75f7ab6692a76080595020b9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     daixianmeng \u003cdaixianmeng@yovole.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-05-13 05:39:49 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"access dashboard error:"},{"line_number":8,"context_line":"Closes-bug: #1828768"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ia07192629b4461265566e8a9895bdc31f7cbc7e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_496246b0","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":6},"updated":"2019-05-13 10:01:31.000000000","message":"The first letter should be capitalized","commit_id":"3a9fe477a2b232c23f001d24c4c6d6fcc8e70fe7"},{"author":{"_account_id":26431,"name":"daixianmeng","email":"daixianmeng@yovole.com","username":"daixianmeng"},"change_message_id":"c218b68e8aa515011f85abbf176140ab39587ba1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     daixianmeng \u003cdaixianmeng@yovole.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-05-13 05:39:49 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"access dashboard error:"},{"line_number":8,"context_line":"Closes-bug: #1828768"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ia07192629b4461265566e8a9895bdc31f7cbc7e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_f7ac27ee","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":6},"in_reply_to":"dfbec78f_496246b0","updated":"2019-05-14 02:19:12.000000000","message":"Done. Thanks for review.","commit_id":"3a9fe477a2b232c23f001d24c4c6d6fcc8e70fe7"},{"author":{"_account_id":27822,"name":"pengyuesheng","email":"pengyuesheng@gohighsec.com","username":"pengyuesheng"},"change_message_id":"400c647b3f8e729f75f7ab6692a76080595020b9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-13 05:39:49 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"access dashboard error:"},{"line_number":8,"context_line":"Closes-bug: #1828768"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ia07192629b4461265566e8a9895bdc31f7cbc7e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_e949ba30","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":20},"updated":"2019-05-13 10:01:31.000000000","message":"add a blank line in front","commit_id":"3a9fe477a2b232c23f001d24c4c6d6fcc8e70fe7"},{"author":{"_account_id":26431,"name":"daixianmeng","email":"daixianmeng@yovole.com","username":"daixianmeng"},"change_message_id":"c218b68e8aa515011f85abbf176140ab39587ba1","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-13 05:39:49 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"access dashboard error:"},{"line_number":8,"context_line":"Closes-bug: #1828768"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ia07192629b4461265566e8a9895bdc31f7cbc7e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_d7afa3e0","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":20},"in_reply_to":"dfbec78f_e949ba30","updated":"2019-05-14 02:19:12.000000000","message":"Done. Thanks for review.","commit_id":"3a9fe477a2b232c23f001d24c4c6d6fcc8e70fe7"}],"openstack_dashboard/api/neutron.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8e3d0fe7729f0da30cb2a4fb55ee4746c454b38b","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    @profiler.trace"},{"line_number":471,"context_line":"    def rule_list(self, **params):"},{"line_number":472,"context_line":"        \"\"\"List the specified security group rule.\"\"\""},{"line_number":473,"context_line":"        self.client.list_security_group_rule(**params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    @profiler.trace"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_2347b8be","line":472,"range":{"start_line":472,"start_character":11,"end_line":472,"end_character":50},"updated":"2019-05-16 05:41:23.000000000","message":"This docstring looks incorrect. What is \"the specified security group rule\" in the list operation?","commit_id":"a5b5e763fa71e31c51bfe39099751b3ed17d2254"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8e3d0fe7729f0da30cb2a4fb55ee4746c454b38b","unresolved":false,"context_lines":[{"line_number":470,"context_line":"    @profiler.trace"},{"line_number":471,"context_line":"    def rule_list(self, **params):"},{"line_number":472,"context_line":"        \"\"\"List the specified security group rule.\"\"\""},{"line_number":473,"context_line":"        self.client.list_security_group_rule(**params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    @profiler.trace"},{"line_number":476,"context_line":"    def list_by_instance(self, instance_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_232018f7","line":473,"updated":"2019-05-16 05:41:23.000000000","message":"Could you consider appropriate tenant_id filtering like L.366-370? When Neutron API is called with the admin role, all security group rules from ALL projects will be returned. I don\u0027t think this is what you intend.","commit_id":"a5b5e763fa71e31c51bfe39099751b3ed17d2254"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8e3d0fe7729f0da30cb2a4fb55ee4746c454b38b","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    def rule_list(self, **params):"},{"line_number":472,"context_line":"        \"\"\"List the specified security group rule.\"\"\""},{"line_number":473,"context_line":"        self.client.list_security_group_rule(**params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    @profiler.trace"},{"line_number":476,"context_line":"    def list_by_instance(self, instance_id):"},{"line_number":477,"context_line":"        \"\"\"Gets security groups of an instance."}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_431bccc8","line":474,"updated":"2019-05-16 05:41:23.000000000","message":"In addition to the above comments, unit test coverage is needed. Could you add it?","commit_id":"a5b5e763fa71e31c51bfe39099751b3ed17d2254"}],"openstack_dashboard/dashboards/project/overview/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1269399513eba58cb7da9f606c5aaa84938a74b0","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def test_usage_charts_created(self):"},{"line_number":269,"context_line":"        res \u003d self._test_usage_charts("},{"line_number":270,"context_line":"            quota_usage_overrides\u003d{\u0027floatingip\u0027: {\u0027quota\u0027: -1, \u0027used\u0027: 0}})"},{"line_number":271,"context_line":"        self.assertIn(\u0027charts\u0027, res.context)"},{"line_number":272,"context_line":"        charts \u003d res.context[\u0027charts\u0027]"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_863ed688","line":270,"range":{"start_line":270,"start_character":70,"end_line":270,"end_character":74},"updated":"2019-05-14 10:55:03.000000000","message":"Why did you change the existing test?","commit_id":"db3e60dfded8e9f757af6bf2e5eb7da1dfb97af5"}],"openstack_dashboard/usage/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57a7f0cd3a7897b62a6a2e15e3a0b572efa3b55a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if t.quota_key not in self.usage.limits:"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            key \u003d t.quota_key"},{"line_number":163,"context_line":"            used \u003d self.usage.limits[key][\u0027used\u0027] if \u0027used\u0027 in key else 0"},{"line_number":164,"context_line":"            quota \u003d self.usage.limits[key][\u0027quota\u0027]"},{"line_number":165,"context_line":"            text \u003d t.used_phrase"},{"line_number":166,"context_line":"            if text is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_4da1e045","line":163,"updated":"2019-05-14 07:37:29.000000000","message":"Before adding a fall-back logic like this, I would like to know the condition the reported bug happens.\n\nLooking at the current implementation [1], the only case seems when \"usage\" is None.\n\nThus, I would like to understand when this happens first.\n\n[1] https://opendev.org/openstack/horizon/src/branch/master/openstack_dashboard/usage/quotas.py#L294","commit_id":"533fa419efdd15616c8bfcdca08ba0a16be18130"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d3c1e77626c48649f5734fe0647ecddf4d33e9f1","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if t.quota_key not in self.usage.limits:"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            key \u003d t.quota_key"},{"line_number":163,"context_line":"            used \u003d self.usage.limits[key][\u0027used\u0027] if \u0027used\u0027 in key else 0"},{"line_number":164,"context_line":"            quota \u003d self.usage.limits[key][\u0027quota\u0027]"},{"line_number":165,"context_line":"            text \u003d t.used_phrase"},{"line_number":166,"context_line":"            if text is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_f53968f1","line":163,"in_reply_to":"dfbec78f_152afc2a","updated":"2019-05-15 10:12:13.000000000","message":"So, do you mean that your ocata (N) horizon can talk with rocky  (N+3)backends and rocky (N) horizon can talk with with ocata (N-3) backends? They might work but the upstream team never tests such cases. You need to check their behavior carefully.\n\nAgain, please note that horizon does not provide older release support forever.","commit_id":"533fa419efdd15616c8bfcdca08ba0a16be18130"},{"author":{"_account_id":26431,"name":"daixianmeng","email":"daixianmeng@yovole.com","username":"daixianmeng"},"change_message_id":"f870b41450313082f6f55ec601a471263d051abe","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if t.quota_key not in self.usage.limits:"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            key \u003d t.quota_key"},{"line_number":163,"context_line":"            used \u003d self.usage.limits[key][\u0027used\u0027] if \u0027used\u0027 in key else 0"},{"line_number":164,"context_line":"            quota \u003d self.usage.limits[key][\u0027quota\u0027]"},{"line_number":165,"context_line":"            text \u003d t.used_phrase"},{"line_number":166,"context_line":"            if text is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_a410a458","line":163,"in_reply_to":"dfbec78f_4da1e045","updated":"2019-05-15 07:43:28.000000000","message":"Thanks,Akihiro Motoki\nI hava debug code and find the security_group_rule\u0027used is NULL\ncode:\nopenstack_dashboard/usage/quotas.py line:379\n\nThere\u0027s something strange about my environment\nThere\u0027s a common ocata keystone region\nOcata horizon (region: RegionOne) visit ok\nRocky horizon (region: RegionTwo) access ERROR","commit_id":"533fa419efdd15616c8bfcdca08ba0a16be18130"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fa623b23ddf6d6b3a48d33ee30429b534f562c94","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if t.quota_key not in self.usage.limits:"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            key \u003d t.quota_key"},{"line_number":163,"context_line":"            used \u003d self.usage.limits[key][\u0027used\u0027] if \u0027used\u0027 in key else 0"},{"line_number":164,"context_line":"            quota \u003d self.usage.limits[key][\u0027quota\u0027]"},{"line_number":165,"context_line":"            text \u003d t.used_phrase"},{"line_number":166,"context_line":"            if text is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_c7cefa58","line":163,"in_reply_to":"dfbec78f_a410a458","updated":"2019-05-15 08:40:01.000000000","message":"Hmm..... this is a bit strange.\n\nWhich neutron backend do you use in your rocky environment?\n\nWhat you touched in patch set 6 is part of _get_tenant_network_usages_legacy() and this function is called only when neutron \u0027quota_details\u0027 extension is NOT available. \u0027quota_details\u0027 extension was introduced in Pike release. If you use neutron ML2 plugin _get_tenant_network_usages_legacy() should not be called.\n\nIn your comment, the current code works with ocata and does not with rocky. This looks more strange. What you changed in patch set 6 can solve a problem with ocata if the problem happens for Ocata, but I cannot understand why this solves a problem in Rocky deployment.\n\nStrange enough.....","commit_id":"533fa419efdd15616c8bfcdca08ba0a16be18130"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8b72a452f2dab195633e2f51f96c899058fb7fb7","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if t.quota_key not in self.usage.limits:"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            key \u003d t.quota_key"},{"line_number":163,"context_line":"            used \u003d self.usage.limits[key][\u0027used\u0027] if \u0027used\u0027 in key else 0"},{"line_number":164,"context_line":"            quota \u003d self.usage.limits[key][\u0027quota\u0027]"},{"line_number":165,"context_line":"            text \u003d t.used_phrase"},{"line_number":166,"context_line":"            if text is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_4a668fc3","line":163,"in_reply_to":"dfbec78f_c7cefa58","updated":"2019-05-15 08:51:45.000000000","message":"Do you use Rocky horizon with ocata neutron? If so, that could happen. The version information is important.\n\nHorizon development team just checks N and N-1 releases. Older version support is just provided as best-effort. There is no surprise if some feature does not work. We accept fixes but the upstream team does not check it works (mainly because of development resources).","commit_id":"533fa419efdd15616c8bfcdca08ba0a16be18130"},{"author":{"_account_id":26431,"name":"daixianmeng","email":"daixianmeng@yovole.com","username":"daixianmeng"},"change_message_id":"ad96aafaa705daea6d5fe79b0d3c44d9203ac428","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if t.quota_key not in self.usage.limits:"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            key \u003d t.quota_key"},{"line_number":163,"context_line":"            used \u003d self.usage.limits[key][\u0027used\u0027] if \u0027used\u0027 in key else 0"},{"line_number":164,"context_line":"            quota \u003d self.usage.limits[key][\u0027quota\u0027]"},{"line_number":165,"context_line":"            text \u003d t.used_phrase"},{"line_number":166,"context_line":"            if text is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_152afc2a","line":163,"in_reply_to":"dfbec78f_c7cefa58","updated":"2019-05-15 09:41:15.000000000","message":"One of the same keystone\nAn ocata environment (RegionOne) has nova, neutron, glance, horizon (all ocata versions)\nA rocky environment (RegionTwo) is ironic that nova, glance, neutron, or horizon (all rocky versions) is ironic.","commit_id":"533fa419efdd15616c8bfcdca08ba0a16be18130"}]}
