)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ee618cbfc282fc2d11858c491a270d61f35aedb0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     pengyuesheng \u003cpengyuesheng@gohighsec.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-01-14 09:33:04 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Required fields are not filled and no error is reported"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic91220cfc19d408d7361d716a3ed9309b394e158"},{"line_number":10,"context_line":"Closes-Bug: #1810909"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bfdaf3ff_ead03253","line":7,"updated":"2019-01-14 20:50:37.000000000","message":"The summary line can be improved. The summary line is not a place to describe what is wrong. It should explain how it is changed.\n\n  Show error if required fields are not filled when creating a port","commit_id":"cb8829e24cfc3f467da0d6771f5759949299f5e0"}],"openstack_dashboard/dashboards/project/networks/ports/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5795132b0ea077c21f0bca10566a6148506b1a3","unresolved":false,"context_lines":[{"line_number":505,"context_line":"                                      \u0027port_create\u0027,"},{"line_number":506,"context_line":"                                      \u0027security_group_list\u0027,"},{"line_number":507,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":508,"context_line":"    def _test_port_create_post_Designated_subnet(self, mac_learning\u003dFalse,"},{"line_number":509,"context_line":"                                                 binding\u003dFalse,"},{"line_number":510,"context_line":"                                                 port_security\u003dFalse):"},{"line_number":511,"context_line":"        network \u003d self.networks.first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_40e61a47","line":508,"range":{"start_line":508,"start_character":8,"end_line":508,"end_character":49},"updated":"2019-01-12 18:23:17.000000000","message":"Test name must start with \"test\" instead of \"_test\". If a prefix is _test, such test is not run and this method is not called from anywhere.\n\n\"Desginated\" does not need to be capitalized: \"desginated\".","commit_id":"1a09ae5509188d0fa7460ef095465945489dc8c7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5795132b0ea077c21f0bca10566a6148506b1a3","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":508,"context_line":"    def _test_port_create_post_Designated_subnet(self, mac_learning\u003dFalse,"},{"line_number":509,"context_line":"                                                 binding\u003dFalse,"},{"line_number":510,"context_line":"                                                 port_security\u003dFalse):"},{"line_number":511,"context_line":"        network \u003d self.networks.first()"},{"line_number":512,"context_line":"        port \u003d self.ports.first()"},{"line_number":513,"context_line":"        self.mock_network_get.return_value \u003d self.networks.first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_a0c26684","line":510,"updated":"2019-01-12 18:23:17.000000000","message":"Arguments like mac_learning, binding and port_security are unnecessary considering the purpose of the test.","commit_id":"1a09ae5509188d0fa7460ef095465945489dc8c7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5795132b0ea077c21f0bca10566a6148506b1a3","unresolved":false,"context_lines":[{"line_number":542,"context_line":"                                      \u0027port_create\u0027,"},{"line_number":543,"context_line":"                                      \u0027security_group_list\u0027,"},{"line_number":544,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":545,"context_line":"    def _test_port_create_post_Designated_fixed_ip(self, mac_learning\u003dFalse,"},{"line_number":546,"context_line":"                                                   binding\u003dFalse,"},{"line_number":547,"context_line":"                                                   port_security\u003dFalse):"},{"line_number":548,"context_line":"        network \u003d self.networks.first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_20d7564e","line":545,"range":{"start_line":545,"start_character":8,"end_line":545,"end_character":50},"updated":"2019-01-12 18:23:17.000000000","message":"ditto","commit_id":"1a09ae5509188d0fa7460ef095465945489dc8c7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5795132b0ea077c21f0bca10566a6148506b1a3","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                                      \u0027is_extension_supported\u0027)})"},{"line_number":545,"context_line":"    def _test_port_create_post_Designated_fixed_ip(self, mac_learning\u003dFalse,"},{"line_number":546,"context_line":"                                                   binding\u003dFalse,"},{"line_number":547,"context_line":"                                                   port_security\u003dFalse):"},{"line_number":548,"context_line":"        network \u003d self.networks.first()"},{"line_number":549,"context_line":"        port \u003d self.ports.first()"},{"line_number":550,"context_line":"        self.mock_network_get.return_value \u003d self.networks.first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_c040ca0a","line":547,"updated":"2019-01-12 18:23:17.000000000","message":"same comments on arguments as for L.510","commit_id":"1a09ae5509188d0fa7460ef095465945489dc8c7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ebbe035bcbbf13c1ce8ce2adff55b0a4b929e0c9","unresolved":false,"context_lines":[{"line_number":528,"context_line":"                      args\u003d[port.network_id])"},{"line_number":529,"context_line":"        res \u003d self.client.post(url, form_data)"},{"line_number":530,"context_line":"        self.assertFormErrors(res, 1)"},{"line_number":531,"context_line":"        self.assertContains(res, \"This field is required.\")"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":534,"context_line":"                                      \u0027port_create\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_6be09e97","line":531,"updated":"2019-01-16 14:59:19.000000000","message":"_stub_is_extension_supported is called, so please check call count using self._check_is_extension_supported.\n\nIn addition, check mocked calls using assert_called_with variants.","commit_id":"90fb36c662fd6d02a24b7bceea020ec0464e1d4d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ebbe035bcbbf13c1ce8ce2adff55b0a4b929e0c9","unresolved":false,"context_lines":[{"line_number":557,"context_line":"                      args\u003d[port.network_id])"},{"line_number":558,"context_line":"        res \u003d self.client.post(url, form_data)"},{"line_number":559,"context_line":"        self.assertFormErrors(res, 1)"},{"line_number":560,"context_line":"        self.assertContains(res, \"This field is required.\")"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def test_port_create_post_exception(self):"},{"line_number":563,"context_line":"        self._test_port_create_post_exception()"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_0bf1d26b","line":560,"updated":"2019-01-16 14:59:19.000000000","message":"ditto","commit_id":"90fb36c662fd6d02a24b7bceea020ec0464e1d4d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cd5b821647a691f7f13c8f7363c4718755eca14a","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                            \u0027mac-learning\u0027: 1,"},{"line_number":534,"context_line":"                                            \u0027port-security\u0027: 1})"},{"line_number":535,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":536,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00271\u0027)"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":539,"context_line":"                                      \u0027port_create\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_f102176f","line":536,"updated":"2019-01-18 00:49:45.000000000","message":"No check for network_get and port_create?","commit_id":"3807a04390d6bd01f199dfab47a5cef46446c6a7"},{"author":{"_account_id":27822,"name":"pengyuesheng","email":"pengyuesheng@gohighsec.com","username":"pengyuesheng"},"change_message_id":"7095a0ff8d8ff622fbfddb4fae93fe8350b431e2","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                            \u0027mac-learning\u0027: 1,"},{"line_number":534,"context_line":"                                            \u0027port-security\u0027: 1})"},{"line_number":535,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":536,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00271\u0027)"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"    @test.create_mocks({api.neutron: (\u0027network_get\u0027,"},{"line_number":539,"context_line":"                                      \u0027port_create\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_b23d6ec5","line":536,"in_reply_to":"bfdaf3ff_f102176f","updated":"2019-01-18 02:57:20.000000000","message":"When subnet_id or fixed_ip is empty, an error is thrown and port_create is not called.","commit_id":"3807a04390d6bd01f199dfab47a5cef46446c6a7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cd5b821647a691f7f13c8f7363c4718755eca14a","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                                            \u0027mac-learning\u0027: 1,"},{"line_number":568,"context_line":"                                            \u0027port-security\u0027: 1})"},{"line_number":569,"context_line":"        self.mock_security_group_list.assert_called_once_with("},{"line_number":570,"context_line":"            test.IsHttpRequest(), tenant_id\u003d\u00271\u0027)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"    def test_port_create_post_exception(self):"},{"line_number":573,"context_line":"        self._test_port_create_post_exception()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfdaf3ff_b1f80f7b","line":570,"updated":"2019-01-18 00:49:45.000000000","message":"ditto","commit_id":"3807a04390d6bd01f199dfab47a5cef46446c6a7"}]}
