)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1c51928329ce161239f64755736d282823cbde73","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shenjiatong \u003cyshxxsjt715@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-04-02 14:07:31 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix wrong security group choice"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To successfully create a port in a network"},{"line_number":10,"context_line":"belongs to a different tenant id, security group"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f4c43b2_1fd08af7","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":31},"updated":"2020-04-14 06:59:45.000000000","message":"This summary line is a bit confusing. The commit fixes a tenant_id for a new port.","commit_id":"71deb809ecd066b22b112c88af30e83262b3b06c"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"8d249d7956785455649cf9fcf20c873caf0e9ca8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shenjiatong \u003cyshxxsjt715@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-04-02 14:07:31 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix wrong security group choice"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To successfully create a port in a network"},{"line_number":10,"context_line":"belongs to a different tenant id, security group"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f4c43b2_fa6949be","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":31},"in_reply_to":"3f4c43b2_1fd08af7","updated":"2020-04-15 13:48:45.000000000","message":"done","commit_id":"71deb809ecd066b22b112c88af30e83262b3b06c"}],"openstack_dashboard/dashboards/admin/networks/ports/tests.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"15fdf2ed979ec45568fdb3e0c4a4348fa369e429","unresolved":false,"context_lines":[{"line_number":159,"context_line":"             \u0027binding\u0027: 1,"},{"line_number":160,"context_line":"             \u0027port-security\u0027: 1})"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test_port_create_post(self):"},{"line_number":164,"context_line":"        self._test_port_create_post()"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4c43b2_dd5a874e","line":162,"updated":"2020-04-15 15:10:05.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"6245eeea25d00dfd730e9e79d533d20a01e30e43"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2537383c2e7a84f6abdef5c7b12ca834f43d9c2f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":134,"context_line":"                                      \u0027is_extension_supported\u0027,"},{"line_number":135,"context_line":"                                      \u0027security_group_list\u0027,)})"},{"line_number":136,"context_line":"    def test_port_create_different_tenant(self):"},{"line_number":137,"context_line":"        network \u003d self.networks.list()[1]"},{"line_number":138,"context_line":"        self.mock_network_get.return_value \u003d network"},{"line_number":139,"context_line":"        self.mock_security_group_list.return_value \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_61857008","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":41},"updated":"2020-04-17 01:53:16.000000000","message":"See my comment in the test for the project panel.\nThe port is created on a same tenant, so \"different_tenant\" is confusing. \"network_from_different_tenant\" is the correct context.","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"476a73d4fa236c35f10926f17dcb584437cf173f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":134,"context_line":"                                      \u0027is_extension_supported\u0027,"},{"line_number":135,"context_line":"                                      \u0027security_group_list\u0027,)})"},{"line_number":136,"context_line":"    def test_port_create_different_tenant(self):"},{"line_number":137,"context_line":"        network \u003d self.networks.list()[1]"},{"line_number":138,"context_line":"        self.mock_network_get.return_value \u003d network"},{"line_number":139,"context_line":"        self.mock_security_group_list.return_value \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_a1cc986a","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":41},"in_reply_to":"3f4c43b2_61857008","updated":"2020-04-17 01:58:30.000000000","message":"Done","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2537383c2e7a84f6abdef5c7b12ca834f43d9c2f","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            self.mock_network_get, 2,"},{"line_number":154,"context_line":"            mock.call(test.IsHttpRequest(), network.id))"},{"line_number":155,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":156,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00272\u0027)"},{"line_number":157,"context_line":"        self._check_is_extension_supported("},{"line_number":158,"context_line":"            {\u0027mac-learning\u0027: 1,"},{"line_number":159,"context_line":"             \u0027binding\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_c173a44c","line":156,"range":{"start_line":156,"start_character":44,"end_line":156,"end_character":47},"updated":"2020-04-17 01:53:16.000000000","message":"In this case, network.tenant_id would be better as it ensure a tenant_id of the new port is same as that of the network.","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"476a73d4fa236c35f10926f17dcb584437cf173f","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            self.mock_network_get, 2,"},{"line_number":154,"context_line":"            mock.call(test.IsHttpRequest(), network.id))"},{"line_number":155,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":156,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00272\u0027)"},{"line_number":157,"context_line":"        self._check_is_extension_supported("},{"line_number":158,"context_line":"            {\u0027mac-learning\u0027: 1,"},{"line_number":159,"context_line":"             \u0027binding\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_e1c6a048","line":156,"range":{"start_line":156,"start_character":44,"end_line":156,"end_character":47},"in_reply_to":"3f4c43b2_c173a44c","updated":"2020-04-17 01:58:30.000000000","message":"Done","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"}],"openstack_dashboard/dashboards/project/networks/ports/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2537383c2e7a84f6abdef5c7b12ca834f43d9c2f","unresolved":false,"context_lines":[{"line_number":547,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":548,"context_line":"                                      \u0027security_group_list\u0027,"},{"line_number":549,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":550,"context_line":"    def test_port_create_different_tenant(self):"},{"line_number":551,"context_line":"        network \u003d self.networks.list()[1]"},{"line_number":552,"context_line":"        self.mock_network_get.return_value \u003d self.networks.first()"},{"line_number":553,"context_line":"        self._stub_is_extension_supported({\u0027binding\u0027: False,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_41baf4dd","line":550,"range":{"start_line":550,"start_character":8,"end_line":550,"end_character":41},"updated":"2020-04-17 01:53:16.000000000","message":"A better name would be test_port_create_on_network_fromdifferent_tenant.","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"476a73d4fa236c35f10926f17dcb584437cf173f","unresolved":false,"context_lines":[{"line_number":547,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":548,"context_line":"                                      \u0027security_group_list\u0027,"},{"line_number":549,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":550,"context_line":"    def test_port_create_different_tenant(self):"},{"line_number":551,"context_line":"        network \u003d self.networks.list()[1]"},{"line_number":552,"context_line":"        self.mock_network_get.return_value \u003d self.networks.first()"},{"line_number":553,"context_line":"        self._stub_is_extension_supported({\u0027binding\u0027: False,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_c1c1e430","line":550,"range":{"start_line":550,"start_character":8,"end_line":550,"end_character":41},"in_reply_to":"3f4c43b2_41baf4dd","updated":"2020-04-17 01:58:30.000000000","message":"Done","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2537383c2e7a84f6abdef5c7b12ca834f43d9c2f","unresolved":false,"context_lines":[{"line_number":548,"context_line":"                                      \u0027security_group_list\u0027,"},{"line_number":549,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":550,"context_line":"    def test_port_create_different_tenant(self):"},{"line_number":551,"context_line":"        network \u003d self.networks.list()[1]"},{"line_number":552,"context_line":"        self.mock_network_get.return_value \u003d self.networks.first()"},{"line_number":553,"context_line":"        self._stub_is_extension_supported({\u0027binding\u0027: False,"},{"line_number":554,"context_line":"                                           \u0027mac-learning\u0027: False,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_61de1040","line":551,"updated":"2020-04-17 01:53:16.000000000","message":"It is better to ensure the network belongs to a different tenant.","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"476a73d4fa236c35f10926f17dcb584437cf173f","unresolved":false,"context_lines":[{"line_number":548,"context_line":"                                      \u0027security_group_list\u0027,"},{"line_number":549,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":550,"context_line":"    def test_port_create_different_tenant(self):"},{"line_number":551,"context_line":"        network \u003d self.networks.list()[1]"},{"line_number":552,"context_line":"        self.mock_network_get.return_value \u003d self.networks.first()"},{"line_number":553,"context_line":"        self._stub_is_extension_supported({\u0027binding\u0027: False,"},{"line_number":554,"context_line":"                                           \u0027mac-learning\u0027: False,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_21dec810","line":551,"in_reply_to":"3f4c43b2_61de1040","updated":"2020-04-17 01:58:30.000000000","message":"Done","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2537383c2e7a84f6abdef5c7b12ca834f43d9c2f","unresolved":false,"context_lines":[{"line_number":568,"context_line":"                                            \u0027mac-learning\u0027: 1,"},{"line_number":569,"context_line":"                                            \u0027port-security\u0027: 1})"},{"line_number":570,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":571,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00271\u0027)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def test_port_create_post(self):"},{"line_number":574,"context_line":"        self._test_port_create_post()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_61b730f8","line":571,"range":{"start_line":571,"start_character":44,"end_line":571,"end_character":47},"updated":"2020-04-17 01:53:16.000000000","message":"In this case, self.request.user.tenant_id is better. If someone changes the list of sample networks and the second network of the list is changed to a network from tenant_id \u00271\u0027, this test still succeeds but if so this test no longer checks what is expected.","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"476a73d4fa236c35f10926f17dcb584437cf173f","unresolved":false,"context_lines":[{"line_number":568,"context_line":"                                            \u0027mac-learning\u0027: 1,"},{"line_number":569,"context_line":"                                            \u0027port-security\u0027: 1})"},{"line_number":570,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":571,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00271\u0027)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def test_port_create_post(self):"},{"line_number":574,"context_line":"        self._test_port_create_post()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4c43b2_01e10cd1","line":571,"range":{"start_line":571,"start_character":44,"end_line":571,"end_character":47},"in_reply_to":"3f4c43b2_61b730f8","updated":"2020-04-17 01:58:30.000000000","message":"Done","commit_id":"e8d6883a7d94bab9fa547041f341208f91d9ef18"}],"openstack_dashboard/dashboards/project/networks/ports/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1c51928329ce161239f64755736d282823cbde73","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        network \u003d self.get_network()"},{"line_number":56,"context_line":"        return {\"network_id\": self.kwargs[\u0027network_id\u0027],"},{"line_number":57,"context_line":"                \"network_name\": network.name,"},{"line_number":58,"context_line":"                \"target_tenant_id\": self.request.user.project_id}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class DetailView(tabs.TabbedTableView):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4c43b2_ffc79e44","line":58,"updated":"2020-04-14 06:59:45.000000000","message":"This class is inherited by openstack_dashboard.dashboards.admin.networks.ports.views.CreateView. In the admin panel, target_tenant_id should be network.tenant_id. This change works well for the project panel, but it breaks the behavior in the admin panel. Could you keep the behavior in the admin panel?\n\nPrecisely, \u0027target_tennat_id\u0027 was introduced only for the create_port in the admin panel and it is unnecessary for the project panel. My suggestion is to drop target_tennant_id in the project panel and use it only in the admin panel.","commit_id":"71deb809ecd066b22b112c88af30e83262b3b06c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4e08966edf956830b66111b65f6a2b3bdea7c0db","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        network \u003d self.get_network()"},{"line_number":56,"context_line":"        return {\"network_id\": self.kwargs[\u0027network_id\u0027],"},{"line_number":57,"context_line":"                \"network_name\": network.name,"},{"line_number":58,"context_line":"                \"target_tenant_id\": self.request.user.project_id}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class DetailView(tabs.TabbedTableView):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4c43b2_7bbb78c3","line":58,"in_reply_to":"3f4c43b2_daa9eddd","updated":"2020-04-15 18:36:46.000000000","message":".....okay.....\nUnnecessary code introduces another unnecessary code though.... but at least a patch size would be small.","commit_id":"71deb809ecd066b22b112c88af30e83262b3b06c"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"8d249d7956785455649cf9fcf20c873caf0e9ca8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        network \u003d self.get_network()"},{"line_number":56,"context_line":"        return {\"network_id\": self.kwargs[\u0027network_id\u0027],"},{"line_number":57,"context_line":"                \"network_name\": network.name,"},{"line_number":58,"context_line":"                \"target_tenant_id\": self.request.user.project_id}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class DetailView(tabs.TabbedTableView):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4c43b2_daa9eddd","line":58,"in_reply_to":"3f4c43b2_ffc79e44","updated":"2020-04-15 13:48:45.000000000","message":"instead of dropping target tenant id directly, maybe we could simply pass different target tenant ids for admin and regular user?","commit_id":"71deb809ecd066b22b112c88af30e83262b3b06c"}]}
