)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"f1a0e25bb433d0de0bb15ca109608d81566aa344","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Neeti Dahiya \u003cndahiya@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-10-07 15:07:14 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds creating port with more than one IP address"},{"line_number":8,"context_line":"Adds creating and updating port with multiple attributes"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Implements : blueprint port-extra-attributes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baa201ad_9694ac8d","line":7,"updated":"2014-10-09 11:59:17.000000000","message":"Missing empty line after title. pep8 error","commit_id":"4bea3accdf44626f9c7ac701ffbc3e825c0b42ad"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"26a5c8faf29f4f1e4eb4344e334cd12dd200d26d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rohan Kanade \u003crkanade@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-26 09:24:00 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds creating and updating port with multiple attributes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements : blueprint port-extra-attributes"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a890539_10b7f83a","line":7,"updated":"2014-11-26 09:27:48.000000000","message":"I think \"Add tests for ...\" is better title.","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"cb5a964dbab38f25c95ab0ef93011c1db40251df","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rohan Kanade \u003crkanade@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-26 09:24:00 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds creating and updating port with multiple attributes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements : blueprint port-extra-attributes"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a890539_3a65a644","line":7,"in_reply_to":"5a890539_10b7f83a","updated":"2014-11-26 15:08:43.000000000","message":"Done","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"26a5c8faf29f4f1e4eb4344e334cd12dd200d26d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds creating and updating port with multiple attributes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements : blueprint port-extra-attributes"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Co-Authored-By: Neeti Dahiya \u003cndahiya@redhat.com\u003e"},{"line_number":12,"context_line":"Co-Authored-By: Rohan Kanade \u003crkanade@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a890539_90f12803","line":9,"updated":"2014-11-26 09:27:48.000000000","message":"Is there a spec for this bp? I have doubts that this changes requires bp. Just a bug should be enough.","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"cb5a964dbab38f25c95ab0ef93011c1db40251df","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds creating and updating port with multiple attributes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements : blueprint port-extra-attributes"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Co-Authored-By: Neeti Dahiya \u003cndahiya@redhat.com\u003e"},{"line_number":12,"context_line":"Co-Authored-By: Rohan Kanade \u003crkanade@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a890539_5a58b289","line":9,"in_reply_to":"5a890539_90f12803","updated":"2014-11-26 15:08:43.000000000","message":"Done","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c651b043d2ddb49d42d2a8dfe51aac84334396f0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rohan Kanade \u003crkanade@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-27 08:24:52 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds tests create/update port with multiple attributes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Neeti Dahiya \u003cndahiya@redhat.com\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Rohan Kanade \u003crkanade@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5a890539_50fddc07","line":7,"updated":"2014-11-27 08:55:53.000000000","message":"Please, add some more information about change. https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"c65570d6a552c1f428dd742ce2b634abbaa34949"}],"tempest/api/network/test_ports.py":[{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"58a72a5e5a6c199c3d135b3e5c729a030c0c3548","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        # Create a port with two IP addresses"},{"line_number":167,"context_line":"        port \u003d self.create_port(network,"},{"line_number":168,"context_line":"                                fixed_ips\u003dfixed_ips)"},{"line_number":169,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"class PortsTestXML(PortsTestJSON):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_f96eb995","line":169,"updated":"2014-09-22 07:04:19.000000000","message":"Please check if value of \"fixed_ips\" match to the ones supplied during port creation","commit_id":"241113eeb1a2e08986c10fe1742ac0544ff85c17"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d1af0f4c2433ac037bc4382031cba9b77652c3db","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":199,"context_line":"        self.assertEquals(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":201,"context_line":"\tself.client.delete_port(port[\u0027id\u0027])"},{"line_number":202,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.networks.pop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_0f1405f4","line":201,"updated":"2014-10-10 11:51:54.000000000","message":"Mixed tabs and spaces. pep8 error","commit_id":"0ffb8c65ce60f4e333f6071cb77b239d8e8d5047"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d1af0f4c2433ac037bc4382031cba9b77652c3db","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.networks.pop()"},{"line_number":205,"context_line":"        self.subnets.pop()"},{"line_number":206,"context_line":"\tself.subnets.pop()"},{"line_number":207,"context_line":"\tself.ports.pop()"},{"line_number":208,"context_line":"        self.client.delete_security_group(group_create_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":209,"context_line":"        self.client.delete_security_group(group2_body[\u0027security_group\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_2ff8e9c3","line":206,"updated":"2014-10-10 11:51:54.000000000","message":"the same","commit_id":"0ffb8c65ce60f4e333f6071cb77b239d8e8d5047"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d1af0f4c2433ac037bc4382031cba9b77652c3db","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self.networks.pop()"},{"line_number":205,"context_line":"        self.subnets.pop()"},{"line_number":206,"context_line":"\tself.subnets.pop()"},{"line_number":207,"context_line":"\tself.ports.pop()"},{"line_number":208,"context_line":"        self.client.delete_security_group(group_create_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":209,"context_line":"        self.client.delete_security_group(group2_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_6f02f1b5","line":207,"updated":"2014-10-10 11:51:54.000000000","message":"the same","commit_id":"0ffb8c65ce60f4e333f6071cb77b239d8e8d5047"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"58c7adf63fba39b1beb4aec8020597ff18c00a05","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        port \u003d self.update_port(port, **update_body)"},{"line_number":197,"context_line":"        self.assertEquals(\u0027Updated_Port\u0027, port[\u0027name\u0027])"},{"line_number":198,"context_line":"        self.assertFalse(port[\u0027admin_state_up\u0027])"},{"line_number":199,"context_line":"        self.assertEquals(group2_body[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEquals(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_14e22901","line":199,"updated":"2014-10-13 14:09:02.000000000","message":"use assertEqual instead of assertEquals","commit_id":"27d262e4062d135ca127e3e202d9dfedc278dace"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"58c7adf63fba39b1beb4aec8020597ff18c00a05","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        self.assertFalse(port[\u0027admin_state_up\u0027])"},{"line_number":199,"context_line":"        self.assertEquals(group2_body[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEquals(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_d4b7c1f3","line":201,"updated":"2014-10-13 14:09:02.000000000","message":"the same","commit_id":"27d262e4062d135ca127e3e202d9dfedc278dace"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ca4bb59fbd753d0639ba533798b4290b86045a1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        self.assertEqual(\u0027Updated_Port\u0027, port[\u0027name\u0027])"},{"line_number":198,"context_line":"        self.assertFalse(port[\u0027admin_state_up\u0027])"},{"line_number":199,"context_line":"        self.assertEqual(group2_body[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_8e9ce9c1","line":200,"updated":"2014-10-16 07:11:33.000000000","message":"?ne extra space","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":13041,"name":"Neeti Dahiya","email":"ndahiya@redhat.com","username":"ndahiya"},"change_message_id":"9100f497985493b22c36cf3912f9e4af17b0d86f","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        self.assertEqual(\u0027Updated_Port\u0027, port[\u0027name\u0027])"},{"line_number":198,"context_line":"        self.assertFalse(port[\u0027admin_state_up\u0027])"},{"line_number":199,"context_line":"        self.assertEqual(group2_body[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_45bb17e5","line":200,"in_reply_to":"baa201ad_8e9ce9c1","updated":"2014-10-22 09:16:06.000000000","message":"Done","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ca4bb59fbd753d0639ba533798b4290b86045a1","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertEqual(group2_body[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_aea1adf9","line":202,"updated":"2014-10-16 07:11:33.000000000","message":"the same","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":13041,"name":"Neeti Dahiya","email":"ndahiya@redhat.com","username":"ndahiya"},"change_message_id":"9100f497985493b22c36cf3912f9e4af17b0d86f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertEqual(group2_body[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_65be5bd6","line":202,"in_reply_to":"baa201ad_aea1adf9","updated":"2014-10-22 09:16:06.000000000","message":"Done","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ca4bb59fbd753d0639ba533798b4290b86045a1","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        self.networks.pop()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_4e8da17b","line":203,"updated":"2014-10-16 07:11:33.000000000","message":"As you use self.create_port you don\u0027t have to delete port. This will then automatically get deleted when the test case ends.","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":13041,"name":"Neeti Dahiya","email":"ndahiya@redhat.com","username":"ndahiya"},"change_message_id":"9100f497985493b22c36cf3912f9e4af17b0d86f","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                          port[\u0027security_groups\u0027][0])"},{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        self.networks.pop()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_c56d4734","line":203,"in_reply_to":"baa201ad_4e8da17b","updated":"2014-10-22 09:16:06.000000000","message":"Port, network, subnet deletion happens when the test completes. Security group cleanup happens in a separate base class, the order of which is not gauranteed. So, if these resources are not deleted explicitly then security group CleanUp throws error that the security group is already in use because the port, subnet and network are not yet deleted.","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ca4bb59fbd753d0639ba533798b4290b86045a1","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        self.networks.pop()"},{"line_number":207,"context_line":"        self.subnets.pop()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_8eea290d","line":204,"updated":"2014-10-16 07:11:33.000000000","message":"The same","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":13041,"name":"Neeti Dahiya","email":"ndahiya@redhat.com","username":"ndahiya"},"change_message_id":"9100f497985493b22c36cf3912f9e4af17b0d86f","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":202,"context_line":"                          port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":203,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":204,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        self.networks.pop()"},{"line_number":207,"context_line":"        self.subnets.pop()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_05782ff1","line":204,"in_reply_to":"baa201ad_8eea290d","updated":"2014-10-22 09:16:06.000000000","message":"Ditto L#204","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ca4bb59fbd753d0639ba533798b4290b86045a1","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        self.networks.pop()"},{"line_number":207,"context_line":"        self.subnets.pop()"},{"line_number":208,"context_line":"        self.subnets.pop()"},{"line_number":209,"context_line":"        self.ports.pop()"},{"line_number":210,"context_line":"        self.client.delete_security_group(group_create_body[\u0027security_group\u0027]"},{"line_number":211,"context_line":"                                          [\u0027id\u0027])"},{"line_number":212,"context_line":"        self.client.delete_security_group(group2_body[\u0027security_group\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_2edbfd7c","line":209,"updated":"2014-10-16 07:11:33.000000000","message":"The same","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":13041,"name":"Neeti Dahiya","email":"ndahiya@redhat.com","username":"ndahiya"},"change_message_id":"9100f497985493b22c36cf3912f9e4af17b0d86f","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        self.networks.pop()"},{"line_number":207,"context_line":"        self.subnets.pop()"},{"line_number":208,"context_line":"        self.subnets.pop()"},{"line_number":209,"context_line":"        self.ports.pop()"},{"line_number":210,"context_line":"        self.client.delete_security_group(group_create_body[\u0027security_group\u0027]"},{"line_number":211,"context_line":"                                          [\u0027id\u0027])"},{"line_number":212,"context_line":"        self.client.delete_security_group(group2_body[\u0027security_group\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_25737316","line":209,"in_reply_to":"baa201ad_2edbfd7c","updated":"2014-10-22 09:16:06.000000000","message":"Ditto L#204","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ca4bb59fbd753d0639ba533798b4290b86045a1","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.subnets.pop()"},{"line_number":208,"context_line":"        self.subnets.pop()"},{"line_number":209,"context_line":"        self.ports.pop()"},{"line_number":210,"context_line":"        self.client.delete_security_group(group_create_body[\u0027security_group\u0027]"},{"line_number":211,"context_line":"                                          [\u0027id\u0027])"},{"line_number":212,"context_line":"        self.client.delete_security_group(group2_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_6ee18529","line":210,"updated":"2014-10-16 07:11:33.000000000","message":"Use addCleanUp here for deleting security groups.","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":13041,"name":"Neeti Dahiya","email":"ndahiya@redhat.com","username":"ndahiya"},"change_message_id":"9100f497985493b22c36cf3912f9e4af17b0d86f","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.subnets.pop()"},{"line_number":208,"context_line":"        self.subnets.pop()"},{"line_number":209,"context_line":"        self.ports.pop()"},{"line_number":210,"context_line":"        self.client.delete_security_group(group_create_body[\u0027security_group\u0027]"},{"line_number":211,"context_line":"                                          [\u0027id\u0027])"},{"line_number":212,"context_line":"        self.client.delete_security_group(group2_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_65649b49","line":210,"in_reply_to":"baa201ad_6ee18529","updated":"2014-10-22 09:16:06.000000000","message":"Done","commit_id":"77bf3c19f1156452708e5053a5233c3d456e1415"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9e282f4d3b1d66c4173e0d2176bee0584769b672","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        port \u003d self.update_port(port, fixed_ips\u003dfixed_ip_1)"},{"line_number":153,"context_line":"        self.assertEqual(1, len(port[\u0027fixed_ips\u0027]))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _update_port_with_security_groups(self, security_groups_names):"},{"line_number":157,"context_line":"        post_body \u003d {\"network_id\": self.network[\u0027id\u0027]}"},{"line_number":158,"context_line":"        self.create_subnet(self.network)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aa7fdbe_6c8abbc0","line":155,"updated":"2014-10-22 12:17:01.000000000","message":"Extra new line","commit_id":"95f7b0eb832b425f73b4003261016e311800567e"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b630a1c33f3edb23cc15cc91a21d66f796f700f6","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        update_body \u003d {\"name\": \"Updated_Port\","},{"line_number":224,"context_line":"                       \"security_groups\": [group2_body[\u0027security_group\u0027]"},{"line_number":225,"context_line":"                                          [\u0027id\u0027]],"},{"line_number":226,"context_line":"                       \"admin_state_up\": False,"},{"line_number":227,"context_line":"                       \"fixed_ips\": fixed_ip_2"},{"line_number":228,"context_line":"                       }"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_ab2f0487","line":225,"updated":"2014-10-23 14:06:53.000000000","message":"pep8 error. expects one more space.","commit_id":"cc15364636baeb5ee1a9999fae801251eb0d206e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6e12e524db9b58466a890d3abf4b57ea06cfa6c","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        # Create a port with two IP addresses"},{"line_number":201,"context_line":"        port \u003d self.create_port(network,"},{"line_number":202,"context_line":"                                fixed_ips\u003dfixed_ips)"},{"line_number":203,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @test.skip_because(bug\u003d\"1379748\")"},{"line_number":206,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_f85085d6","line":203,"updated":"2014-10-29 01:14:49.000000000","message":"How about checking IP addresses(fixed_ip_1, fixed_ip_2)?","commit_id":"c896cad36a335fb7263a20567cad4660223febc2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6e12e524db9b58466a890d3abf4b57ea06cfa6c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                                fixed_ips\u003dfixed_ips)"},{"line_number":203,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @test.skip_because(bug\u003d\"1379748\")"},{"line_number":206,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":207,"context_line":"    def test_create_update_port_multiple_attributes(self):"},{"line_number":208,"context_line":"        group_create_body, _ \u003d self._create_security_group()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_b86d1d9c","line":205,"updated":"2014-10-29 01:14:49.000000000","message":"We cannot add a new *skipped* test as Tempest policy because we cannot verify the test is valid on the gate.\n\nSo after fixing the bug 1379748, how about adding this test?","commit_id":"c896cad36a335fb7263a20567cad4660223febc2"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        network \u003d self.create_network()"},{"line_number":194,"context_line":"        subnet_1 \u003d self.create_subnet(network)"},{"line_number":195,"context_line":"        subnet_2 \u003d self.create_subnet(network)"},{"line_number":196,"context_line":"        fixed_ip_1 \u003d [{\u0027subnet_id\u0027: subnet_1[\u0027id\u0027]}]"},{"line_number":197,"context_line":"        fixed_ip_2 \u003d [{\u0027subnet_id\u0027: subnet_2[\u0027id\u0027]}]"},{"line_number":198,"context_line":"        fixed_ips \u003d fixed_ip_1 + fixed_ip_2"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_67916546","line":196,"updated":"2014-11-26 07:56:17.000000000","message":"the naming here is wrong, but I understand that it\u0027s consistent with the rest of the module","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        port \u003d self.create_port(network,"},{"line_number":202,"context_line":"                                fixed_ips\u003dfixed_ips)"},{"line_number":203,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":204,"context_line":"        self.assertEqual(port[\u0027fixed_ips\u0027], fixed_ips)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":207,"context_line":"    def test_create_update_port_multiple_attributes(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_87a651bf","line":204,"updated":"2014-11-26 07:56:17.000000000","message":"IIUC, you are comparing 2 lists here. wouldn\u0027t it be better to compare them as sets? order could matter","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        network \u003d self.create_network()"},{"line_number":210,"context_line":"        subnet_1 \u003d self.create_subnet(network)"},{"line_number":211,"context_line":"        fixed_ip_1 \u003d [{\u0027subnet_id\u0027: subnet_1[\u0027id\u0027]}]"},{"line_number":212,"context_line":"        kwargs \u003d {\"name\": \"New_Port\","},{"line_number":213,"context_line":"                  \"security_groups\": [group_create_body[\u0027security_group\u0027]"},{"line_number":214,"context_line":"                                      [\u0027id\u0027]],"},{"line_number":215,"context_line":"                  \"admin_state_up\": True,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_67b885c8","line":212,"updated":"2014-11-26 07:56:17.000000000","message":"names should be randomized","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"db8bfc1218cc7d0ac1d15c495bd9bdb930c39133","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        network \u003d self.create_network()"},{"line_number":210,"context_line":"        subnet_1 \u003d self.create_subnet(network)"},{"line_number":211,"context_line":"        fixed_ip_1 \u003d [{\u0027subnet_id\u0027: subnet_1[\u0027id\u0027]}]"},{"line_number":212,"context_line":"        kwargs \u003d {\"name\": \"New_Port\","},{"line_number":213,"context_line":"                  \"security_groups\": [group_create_body[\u0027security_group\u0027]"},{"line_number":214,"context_line":"                                      [\u0027id\u0027]],"},{"line_number":215,"context_line":"                  \"admin_state_up\": True,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_9a977a8f","line":212,"in_reply_to":"5a890539_67b885c8","updated":"2014-11-26 15:08:55.000000000","message":"Done","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        subnet_2 \u003d self.create_subnet(network)"},{"line_number":221,"context_line":"        fixed_ip_2 \u003d [{\u0027subnet_id\u0027: subnet_2[\u0027id\u0027]}]"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        update_body \u003d {\"name\": \"Updated_Port\","},{"line_number":224,"context_line":"                       \"security_groups\": [group2_body[\u0027security_group\u0027]"},{"line_number":225,"context_line":"                                           [\u0027id\u0027]],"},{"line_number":226,"context_line":"                       \"admin_state_up\": False,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_87bbb1c2","line":223,"updated":"2014-11-26 07:56:17.000000000","message":"ditto","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"db8bfc1218cc7d0ac1d15c495bd9bdb930c39133","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        subnet_2 \u003d self.create_subnet(network)"},{"line_number":221,"context_line":"        fixed_ip_2 \u003d [{\u0027subnet_id\u0027: subnet_2[\u0027id\u0027]}]"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        update_body \u003d {\"name\": \"Updated_Port\","},{"line_number":224,"context_line":"                       \"security_groups\": [group2_body[\u0027security_group\u0027]"},{"line_number":225,"context_line":"                                           [\u0027id\u0027]],"},{"line_number":226,"context_line":"                       \"admin_state_up\": False,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_da8d827d","line":223,"in_reply_to":"5a890539_87bbb1c2","updated":"2014-11-26 15:08:55.000000000","message":"Done","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                       \"admin_state_up\": False,"},{"line_number":227,"context_line":"                       \"fixed_ips\": fixed_ip_2"},{"line_number":228,"context_line":"                       }"},{"line_number":229,"context_line":"        port \u003d self.update_port(port, **update_body)"},{"line_number":230,"context_line":"        self.assertEqual(\u0027Updated_Port\u0027, port[\u0027name\u0027])"},{"line_number":231,"context_line":"        self.assertFalse(port[\u0027admin_state_up\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(group2_body[\u0027security_group\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_c7369950","line":229,"updated":"2014-11-26 07:56:17.000000000","message":"don\u0027t we have methods for subdict assertions?\nie custom_matchers.MatchesDictExceptForKeys?\napi.network.test_networks:L129","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"db8bfc1218cc7d0ac1d15c495bd9bdb930c39133","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                       \"admin_state_up\": False,"},{"line_number":227,"context_line":"                       \"fixed_ips\": fixed_ip_2"},{"line_number":228,"context_line":"                       }"},{"line_number":229,"context_line":"        port \u003d self.update_port(port, **update_body)"},{"line_number":230,"context_line":"        self.assertEqual(\u0027Updated_Port\u0027, port[\u0027name\u0027])"},{"line_number":231,"context_line":"        self.assertFalse(port[\u0027admin_state_up\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(group2_body[\u0027security_group\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_ba1c3614","line":229,"in_reply_to":"5a890539_c7369950","updated":"2014-11-26 15:08:55.000000000","message":"Done","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                         port[\u0027security_groups\u0027][0])"},{"line_number":234,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":235,"context_line":"                         port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":236,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":237,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        self.networks.pop()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_27567d2a","line":236,"updated":"2014-11-26 07:56:17.000000000","message":"could you please explain why the explicit deletion?","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"db8bfc1218cc7d0ac1d15c495bd9bdb930c39133","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                         port[\u0027security_groups\u0027][0])"},{"line_number":234,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":235,"context_line":"                         port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":236,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":237,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        self.networks.pop()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_1abc6adb","line":236,"in_reply_to":"5a890539_27567d2a","updated":"2014-11-26 15:08:55.000000000","message":"The sequence of cleanup for sec_grp is different from network,subnets,ports since they are in different base classes. \n\nhere it is required that sec_grp be deleted after network,subnets,ports, hence explicitely deleting network,subnet,ports first.","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"578d0f93627673548f6a7d2694d69bc0fb2d5def","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":237,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        self.networks.pop()"},{"line_number":240,"context_line":"        self.subnets.pop()"},{"line_number":241,"context_line":"        self.subnets.pop()"},{"line_number":242,"context_line":"        self.ports.pop()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_874f3191","line":239,"updated":"2014-11-26 07:56:17.000000000","message":"AFAIK this is not needed since the cleanup now ignores NotFound exceptions","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"db8bfc1218cc7d0ac1d15c495bd9bdb930c39133","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":237,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        self.networks.pop()"},{"line_number":240,"context_line":"        self.subnets.pop()"},{"line_number":241,"context_line":"        self.subnets.pop()"},{"line_number":242,"context_line":"        self.ports.pop()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_3abf66d1","line":239,"in_reply_to":"5a890539_874f3191","updated":"2014-11-26 15:08:55.000000000","message":"Done","commit_id":"edf1d08595550ea27cbebf36f3089b6df63616ef"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4d281c002d8900429a990516df5412d03d5fad3e","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                                fixed_ips\u003dfixed_ips)"},{"line_number":203,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":204,"context_line":"        check_fixed_ips \u003d [subnet_1[\u0027id\u0027], subnet_2[\u0027id\u0027]]"},{"line_number":205,"context_line":"        for item in port[\u0027fixed_ips\u0027]:"},{"line_number":206,"context_line":"            self.assertTrue(item[\u0027subnet_id\u0027] in check_fixed_ips)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a890539_d68568ad","line":205,"updated":"2014-11-26 10:38:12.000000000","message":"not what I had in mind but works anyway","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4d281c002d8900429a990516df5412d03d5fad3e","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":204,"context_line":"        check_fixed_ips \u003d [subnet_1[\u0027id\u0027], subnet_2[\u0027id\u0027]]"},{"line_number":205,"context_line":"        for item in port[\u0027fixed_ips\u0027]:"},{"line_number":206,"context_line":"            self.assertTrue(item[\u0027subnet_id\u0027] in check_fixed_ips)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":209,"context_line":"    def test_create_update_port_multiple_attributes(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a890539_76b4b481","line":206,"updated":"2014-11-26 10:38:12.000000000","message":"nit: there\u0027s an assertIn for this check","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"cb5a964dbab38f25c95ab0ef93011c1db40251df","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        self.assertEqual(2, len(port[\u0027fixed_ips\u0027]))"},{"line_number":204,"context_line":"        check_fixed_ips \u003d [subnet_1[\u0027id\u0027], subnet_2[\u0027id\u0027]]"},{"line_number":205,"context_line":"        for item in port[\u0027fixed_ips\u0027]:"},{"line_number":206,"context_line":"            self.assertTrue(item[\u0027subnet_id\u0027] in check_fixed_ips)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":209,"context_line":"    def test_create_update_port_multiple_attributes(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a890539_da4662bf","line":206,"in_reply_to":"5a890539_76b4b481","updated":"2014-11-26 15:08:43.000000000","message":"Done","commit_id":"77ce059b6f9ebe4eb44b421af5a1d0e4b9955c37"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c651b043d2ddb49d42d2a8dfe51aac84334396f0","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        exclude_keys \u003d set(port).symmetric_difference(update_body)"},{"line_number":233,"context_line":"        exclude_keys.add(\u0027fixed_ips\u0027)"},{"line_number":234,"context_line":"        self.assertThat(port, custom_matchers.MatchesDictExceptForKeys("},{"line_number":235,"context_line":"         update_body, exclude_keys))"},{"line_number":236,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":237,"context_line":"                         port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":238,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_75348afb","line":235,"updated":"2014-11-27 08:55:53.000000000","message":"Wrong indent","commit_id":"c65570d6a552c1f428dd742ce2b634abbaa34949"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c651b043d2ddb49d42d2a8dfe51aac84334396f0","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":239,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):"},{"line_number":244,"context_line":"    _interface \u003d \u0027json\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_d55b7e53","line":241,"updated":"2014-11-27 08:55:53.000000000","message":"too many blank lines","commit_id":"c65570d6a552c1f428dd742ce2b634abbaa34949"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"dd620951a70b193e6eb7d0eb21bdf08bf90601a3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class PortsTestJSON(sec_base.BaseSecGroupTest, base.BaseNetworkTest):"},{"line_number":29,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a890539_cd160ef2","line":28,"updated":"2014-12-03 04:09:14.000000000","message":"Deriving just from sec_base.BaseSecGroupTest should be enough as sec_base.BaseSecGroupTest is already derived from base.BaseNetworkTest","commit_id":"fe8b77a81e5bbeee732f7a6e3c6182fc0d28ee82"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"dd620951a70b193e6eb7d0eb21bdf08bf90601a3","unresolved":false,"context_lines":[{"line_number":188,"context_line":"             data_utils.rand_name(\u0027secgroup\u0027)])"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":191,"context_line":"    def test_create_port_with_multiple_ip(self):"},{"line_number":192,"context_line":"        # Create a network with two subnets"},{"line_number":193,"context_line":"        network \u003d self.create_network()"},{"line_number":194,"context_line":"        subnet_1 \u003d self.create_subnet(network)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a890539_0390e741","line":191,"updated":"2014-12-03 04:09:14.000000000","message":"This test can be merged with test_update_port_with_second_ip to avoid duplicate code specially- something like below-\n\ntest_create_update_port_with_second_ip()\n- create port with 2 ip\n- update port with 1 ip\n- update port with 2 ip","commit_id":"fe8b77a81e5bbeee732f7a6e3c6182fc0d28ee82"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"dd620951a70b193e6eb7d0eb21bdf08bf90601a3","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            self.assertIn(item[\u0027subnet_id\u0027], check_fixed_ips)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":209,"context_line":"    def test_create_update_port_multiple_attributes(self):"},{"line_number":210,"context_line":"        group_create_body, _ \u003d self._create_security_group()"},{"line_number":211,"context_line":"        network \u003d self.create_network()"},{"line_number":212,"context_line":"        subnet_1 \u003d self.create_subnet(network)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a890539_230a438a","line":209,"updated":"2014-12-03 04:09:14.000000000","message":"This is somewhat duplicate of test_update_port_with_security_group in update part. we can avoid this just by create port with sec grp in _update_port_with_security_groups ().\n\nSo that create port with sec grp (for which you are trying to create new test) + update port with sec grp both can be accomplished by existing tests (test_update_port_with_security_group \u0026 test_update_port_with_two_security_groups)\nYou can rename those accordingly.","commit_id":"fe8b77a81e5bbeee732f7a6e3c6182fc0d28ee82"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"0aff420b82d204fe9e4da7ed8c61790e2486461e","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":237,"context_line":"                         port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":238,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":239,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a890539_10cfc158","line":239,"updated":"2014-11-27 22:49:14.000000000","message":"why to delete them? test will delete it for you. If you delete with client I think you need to remove them from self.ports, self.networks, self.subnets.\n\nwhy have you deleted it in patch 12?","commit_id":"fe8b77a81e5bbeee732f7a6e3c6182fc0d28ee82"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"7c49389fa62d850ffac2d8f6d6f60b3350b9fe08","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":237,"context_line":"                         port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":238,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":239,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a890539_3f400507","line":239,"in_reply_to":"5a890539_10cfc158","updated":"2014-11-28 08:34:15.000000000","message":"The cleanup doesnt happen as expected in base.py resource_cleanup.\n\nThis is maybe due to the requirement that sec_grp has to be deleted before network,subnet,port. And sec_grp cleanup happens in base_security_groups.py . The order of cleanup for sec_grp and other resources is not garaunteed.\n\nI have tried removing L238, L239, the tests fail since the cleanup doesnt happen after IPV4 or IPV6 tests.\n\nHence this will be kept as is","commit_id":"fe8b77a81e5bbeee732f7a6e3c6182fc0d28ee82"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"dd620951a70b193e6eb7d0eb21bdf08bf90601a3","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.assertEqual(fixed_ip_2[0][\u0027subnet_id\u0027],"},{"line_number":237,"context_line":"                         port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027])"},{"line_number":238,"context_line":"        self.client.delete_port(port[\u0027id\u0027])"},{"line_number":239,"context_line":"        self.client.delete_network(network[\u0027id\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a890539_6300cb66","line":239,"in_reply_to":"5a890539_3f400507","updated":"2014-12-03 04:09:14.000000000","message":"removing deleted resources from list is needed here otherwise it will be unnecessary call to delete resource in base cleanup.\n\n        self.networks.pop()\n        self.subnets.pop()\n        self.subnets.pop()\n        self.ports.pop()","commit_id":"fe8b77a81e5bbeee732f7a6e3c6182fc0d28ee82"}]}
