)]}'
{"neutron/tests/fullstack/resources/client.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ecbb2f7bc320dbbc051801e79acf0687a63de590","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def create_network(self, tenant_id, name\u003dNone, public\u003dFalse):"},{"line_number":63,"context_line":"        resource_type \u003d \u0027network\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        name \u003d name or base.get_rand_name(prefix\u003dresource_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_0526efcd","line":62,"updated":"2016-05-18 20:02:30.000000000","message":"public -\u003e external. Let\u0027s be consistent with the actual attribute name (router:external).","commit_id":"fa3c8eda3490b95bc8b2e6bca961980b43216505"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"9d51bfb9f98a313bd2b243da8393b86764748964","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def create_network(self, tenant_id, name\u003dNone, public\u003dFalse):"},{"line_number":63,"context_line":"        resource_type \u003d \u0027network\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        name \u003d name or base.get_rand_name(prefix\u003dresource_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_e1dd7f15","line":62,"in_reply_to":"bab6814e_0526efcd","updated":"2016-05-19 11:11:21.000000000","message":"done","commit_id":"fa3c8eda3490b95bc8b2e6bca961980b43216505"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"97e9c293b5a9cffc4826fc526c3bf090dcbd3aef","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        name \u003d name or base.get_rand_name(prefix\u003dresource_type)"},{"line_number":66,"context_line":"        spec \u003d {\u0027tenant_id\u0027: tenant_id, \u0027name\u0027: name}"},{"line_number":67,"context_line":"        if external:"},{"line_number":68,"context_line":"            spec[\u0027router:external\u0027] \u003d True"},{"line_number":69,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_ef71bd45","line":67,"updated":"2016-05-20 01:39:43.000000000","message":"(Nit) maybe simplify to:\n\nspec[\u0027router:external\u0027] \u003d external\n\nIt reduces one whole line \u003dp","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"6f3f85679db709a69b9a7a9613389e53c5a918ba","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        name \u003d name or base.get_rand_name(prefix\u003dresource_type)"},{"line_number":66,"context_line":"        spec \u003d {\u0027tenant_id\u0027: tenant_id, \u0027name\u0027: name}"},{"line_number":67,"context_line":"        if external:"},{"line_number":68,"context_line":"            spec[\u0027router:external\u0027] \u003d True"},{"line_number":69,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_f24a3625","line":67,"in_reply_to":"bab6814e_ef71bd45","updated":"2016-05-20 08:24:05.000000000","message":"done","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"}],"neutron/tests/fullstack/resources/environment.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ecbb2f7bc320dbbc051801e79acf0687a63de590","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        self.wait_until_env_is_up()"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def configure_public_network(self):"},{"line_number":345,"context_line":"        \"\"\"Configure CIDR for external network"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        Create CIDR for external network and assign its first ip to"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_2832eaf1","line":344,"updated":"2016-05-18 20:02:30.000000000","message":"I think that instead of giving the external bridge an IP, it makes more sense to create a fake VM and plug it to the external bridge to simulate a resource on the external network. It\u0027s a better conceptual simulation of a real scenario.","commit_id":"fa3c8eda3490b95bc8b2e6bca961980b43216505"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"9d51bfb9f98a313bd2b243da8393b86764748964","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        self.wait_until_env_is_up()"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def configure_public_network(self):"},{"line_number":345,"context_line":"        \"\"\"Configure CIDR for external network"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        Create CIDR for external network and assign its first ip to"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_c1e03bcf","line":344,"in_reply_to":"bab6814e_2832eaf1","updated":"2016-05-19 11:11:21.000000000","message":"done","commit_id":"fa3c8eda3490b95bc8b2e6bca961980b43216505"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"97e9c293b5a9cffc4826fc526c3bf090dcbd3aef","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        self.wait_until_env_is_up()"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def configure_public_network(self):"},{"line_number":346,"context_line":"        \"\"\"Configure CIDR for external network"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        Create CIDR for external network. Its first IP Adress is treated as"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_8fc8f1a9","line":345,"updated":"2016-05-20 01:39:43.000000000","message":"I don\u0027t understand this function\u0027s purpose or location.\n\nI think its contents should be moved to the test class that needs it, and the function itself deleted. Line 354 can be in-lined and moved to _create_public_network in test_l3_agent.py. Lines 357 to 360 should be in-lined in to \u0027test_snat_and_floatingip\u0027.\n\nI mean, the function is called \"configure_public_network\", but it doesn\u0027t configure a network, it just allocates a CIDR and a VM (Notice the \u0027and\u0027, a signal that the function has more than one conceptual concept and that it should be broken up).","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"6f3f85679db709a69b9a7a9613389e53c5a918ba","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        self.wait_until_env_is_up()"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def configure_public_network(self):"},{"line_number":346,"context_line":"        \"\"\"Configure CIDR for external network"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        Create CIDR for external network. Its first IP Adress is treated as"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7265a6b3","line":345,"in_reply_to":"bab6814e_8fc8f1a9","updated":"2016-05-20 08:24:05.000000000","message":"Deleted this function.","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"}],"neutron/tests/fullstack/test_l3_agent.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"97e9c293b5a9cffc4826fc526c3bf090dcbd3aef","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        To test snat or floaing ip, tests will be pinging from test\u0027s vm"},{"line_number":37,"context_line":"        to the vm connected to central-external-br."},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        cidr, self.external_gateway_ip \u003d \\"},{"line_number":40,"context_line":"            self.environment.configure_public_network()"},{"line_number":41,"context_line":"        network \u003d self.safe_client.create_network("},{"line_number":42,"context_line":"            tenant_id, name\u003d\u0027public\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_efbffda7","line":39,"updated":"2016-05-20 01:39:43.000000000","message":"Another signal that the design of \u0027configure_public_network\u0027 is messy. You don\u0027t need the VM on the external network here, you need it in the test that uses, which forces you to either return or to set it as an instance variable. Instead I suggest you create the VM where you need it.","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"6f3f85679db709a69b9a7a9613389e53c5a918ba","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        To test snat or floaing ip, tests will be pinging from test\u0027s vm"},{"line_number":37,"context_line":"        to the vm connected to central-external-br."},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        cidr, self.external_gateway_ip \u003d \\"},{"line_number":40,"context_line":"            self.environment.configure_public_network()"},{"line_number":41,"context_line":"        network \u003d self.safe_client.create_network("},{"line_number":42,"context_line":"            tenant_id, name\u003d\u0027public\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_d20d72e9","line":39,"in_reply_to":"bab6814e_efbffda7","updated":"2016-05-20 08:24:05.000000000","message":"done","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"97e9c293b5a9cffc4826fc526c3bf090dcbd3aef","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            tenant_id, \u002720.0.0.0/24\u0027,"},{"line_number":126,"context_line":"            self.environment.hosts[1], router)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Wait until qr-xx and qg-xx ports up in qrouter-xx namespace."},{"line_number":129,"context_line":"        vm.block_until_ping(self.external_gateway_ip)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.safe_client.create_floatingip("}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_afd055f7","line":128,"updated":"2016-05-20 01:39:43.000000000","message":"The comment doesn\u0027t seem aligned with the code?","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"6f3f85679db709a69b9a7a9613389e53c5a918ba","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            tenant_id, \u002720.0.0.0/24\u0027,"},{"line_number":126,"context_line":"            self.environment.hosts[1], router)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Wait until qr-xx and qg-xx ports up in qrouter-xx namespace."},{"line_number":129,"context_line":"        vm.block_until_ping(self.external_gateway_ip)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.safe_client.create_floatingip("}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_f2f876c5","line":128,"in_reply_to":"bab6814e_afd055f7","updated":"2016-05-20 08:24:05.000000000","message":"removed this comment.","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"97e9c293b5a9cffc4826fc526c3bf090dcbd3aef","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.safe_client.create_floatingip("},{"line_number":132,"context_line":"            tenant_id, public[\u0027id\u0027], vm.ip, vm.neutron_port[\u0027id\u0027])"},{"line_number":133,"context_line":"        vm.block_until_ping(self.external_gateway_ip)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"class TestHAL3Agent(base.BaseFullStackTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_6f014d6a","line":133,"updated":"2016-05-20 01:39:43.000000000","message":"Here I would advise instead to assert that the VM on the external network can ping the floating IP we just assigned. Otherwise, maybe the fake VM we created in line 124 is still using SNAT?","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"6f3f85679db709a69b9a7a9613389e53c5a918ba","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.safe_client.create_floatingip("},{"line_number":132,"context_line":"            tenant_id, public[\u0027id\u0027], vm.ip, vm.neutron_port[\u0027id\u0027])"},{"line_number":133,"context_line":"        vm.block_until_ping(self.external_gateway_ip)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"class TestHAL3Agent(base.BaseFullStackTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_520222b5","line":133,"in_reply_to":"bab6814e_6f014d6a","updated":"2016-05-20 08:24:05.000000000","message":"done","commit_id":"16fb662590fffc7192cd3ff4c01943dcb68e3c60"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"950e51c477fc40b971363caa68dd509e1084a865","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        network \u003d self.safe_client.create_network("},{"line_number":34,"context_line":"            tenant_id, name\u003d\u0027public\u0027, external\u003dTrue)"},{"line_number":35,"context_line":"        subnet \u003d self.safe_client.create_subnet("},{"line_number":36,"context_line":"            tenant_id, network[\u0027id\u0027], \u002719.4.4.0/24\u0027,"},{"line_number":37,"context_line":"            enable_dhcp\u003dFalse)"},{"line_number":38,"context_line":"        return network, subnet"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_add2085a","line":36,"updated":"2016-05-20 12:04:46.000000000","message":"Using a hard coded CIDR can cause collisions if other tests use this helper. The way fullstack sets up external networking, it\u0027s all one big broadcast domain (Even if it\u0027s different Neutron networks). If you use the atomic IPNetwork allocator we won\u0027t have to deal with this issue.","commit_id":"8667e73e6285cc4b02fcafe21b18199c1558d9aa"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"61da62416145af739563c47b8c773ad137e33d0d","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _create_external_network_and_subnet(self, tenant_id):"},{"line_number":34,"context_line":"        network \u003d self.safe_client.create_network("},{"line_number":35,"context_line":"            tenant_id, name\u003d\u0027public\u0027, external\u003dTrue)"},{"line_number":36,"context_line":"        cidr \u003d self.useFixture("},{"line_number":37,"context_line":"            ip_network.ExclusiveIPNetwork("},{"line_number":38,"context_line":"                \"240.0.0.0\", \"240.255.255.255\", \"24\")).network"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_3d010d6b","line":35,"updated":"2016-05-20 20:52:04.000000000","message":"Does this mean a bunch of concurrent tests using this will all have the network name \u0027public\u0027? shouldn\u0027t we give it some suffix?","commit_id":"b73f849f89c4620dcd8b7cfcdebb5e816317a7dc"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"533209cc37607283b6711d2f14ab8ba7c50f3f48","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _create_external_network_and_subnet(self, tenant_id):"},{"line_number":34,"context_line":"        network \u003d self.safe_client.create_network("},{"line_number":35,"context_line":"            tenant_id, name\u003d\u0027public\u0027, external\u003dTrue)"},{"line_number":36,"context_line":"        cidr \u003d self.useFixture("},{"line_number":37,"context_line":"            ip_network.ExclusiveIPNetwork("},{"line_number":38,"context_line":"                \"240.0.0.0\", \"240.255.255.255\", \"24\")).network"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_fd7f85dd","line":35,"updated":"2016-05-20 20:55:03.000000000","message":"Nevermind, I didn\u0027t realize each test got it\u0027s own DB unlike the tempest ones.","commit_id":"b73f849f89c4620dcd8b7cfcdebb5e816317a7dc"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"c953f80cb592f42039244ac0d2cd13e5cdccd348","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        vm1.block_until_ping(vm2.ip)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_snat_and_floatingip(self):"},{"line_number":113,"context_line":"        # This function creates external network and boots an extrenal vm"},{"line_number":114,"context_line":"        # on it with gateway ip and connected to central_external_bridge."},{"line_number":115,"context_line":"        # Later it creates a tenant vm on tenant network, with tenant router"},{"line_number":116,"context_line":"        # connected to tenant network and external network."}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_a3283ee3","line":113,"range":{"start_line":113,"start_character":62,"end_line":113,"end_character":70},"updated":"2016-05-20 21:57:28.000000000","message":"s/extrenal/external","commit_id":"b73f849f89c4620dcd8b7cfcdebb5e816317a7dc"}]}
