)]}'
{"neutron/tests/contrib/gate_hook.sh":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"821ce0a6f9f82cf88374f02be002aa4ebae687e8","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    configure_host_for_func_testing"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The OVS_BRANCH variable is used by git checkout. In the case below"},{"line_number":48,"context_line":"    # we use a commit on branch-2.5 that fixes compilation with the"},{"line_number":49,"context_line":"    # latest ubuntu trusty kernel."},{"line_number":50,"context_line":"    OVS_BRANCH\u003d8c0b419a0b9ac0141d6973dcc80306dfc6a83d31"}],"source_content_type":"text/x-sh","patch_set":7,"id":"dada55a8_8e066983","line":47,"updated":"2016-07-25 10:25:17.000000000","message":"with that change, what are remaining jobs that validate backend with older default ovs? Tempest is too high level for that.","commit_id":"fdf8a2fd2b6f1deadc7d8723d24fc616172bba9a"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"b9e502ae8e4bd2798f6002288dcc26dec0359837","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    configure_host_for_func_testing"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The OVS_BRANCH variable is used by git checkout. In the case below"},{"line_number":48,"context_line":"    # we use a commit on branch-2.5 that fixes compilation with the"},{"line_number":49,"context_line":"    # latest ubuntu trusty kernel."},{"line_number":50,"context_line":"    OVS_BRANCH\u003d8c0b419a0b9ac0141d6973dcc80306dfc6a83d31"}],"source_content_type":"text/x-sh","patch_set":7,"id":"dada55a8_ee11e55e","line":47,"in_reply_to":"dada55a8_8e066983","updated":"2016-07-25 10:35:29.000000000","message":"Sorry I didn\u0027t care much about CI system loads.\n\nCurrently this change cannot be merged because of bug/1602567.\n\ngood old tempest and api tests should continue to run on Trusty\u0027s default ovs as it is the most popular configuration, IMO.","commit_id":"fdf8a2fd2b6f1deadc7d8723d24fc616172bba9a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31b81b64c6b279d68088890fae42c91b3336c24c","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    configure_host_for_func_testing"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The OVS_BRANCH variable is used by git checkout. In the case below"},{"line_number":48,"context_line":"    # we use a commit on branch-2.5 that fixes compilation with the"},{"line_number":49,"context_line":"    # latest ubuntu trusty kernel."},{"line_number":50,"context_line":"    OVS_BRANCH\u003d8c0b419a0b9ac0141d6973dcc80306dfc6a83d31"}],"source_content_type":"text/x-sh","patch_set":7,"id":"dada55a8_4c7c66eb","line":47,"in_reply_to":"dada55a8_ed3d62de","updated":"2016-07-25 17:01:49.000000000","message":"+ on what Jakub said. We should still target our tests against the default version in gate; then on top we can validate more versions, but the base should be covered.","commit_id":"fdf8a2fd2b6f1deadc7d8723d24fc616172bba9a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"18366da59d3a25bca753a559233bbb587f07bdd0","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    configure_host_for_func_testing"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The OVS_BRANCH variable is used by git checkout. In the case below"},{"line_number":48,"context_line":"    # we use a commit on branch-2.5 that fixes compilation with the"},{"line_number":49,"context_line":"    # latest ubuntu trusty kernel."},{"line_number":50,"context_line":"    OVS_BRANCH\u003d8c0b419a0b9ac0141d6973dcc80306dfc6a83d31"}],"source_content_type":"text/x-sh","patch_set":7,"id":"dada55a8_ed3d62de","line":47,"in_reply_to":"dada55a8_ee11e55e","updated":"2016-07-25 14:09:23.000000000","message":"I think we should proceed with this patch without compiling for fullstack and putting a skip for ovs-firewall tests in case node doesn\u0027t support it (like we do here: https://github.com/openstack/neutron/blob/master/neutron/tests/functional/agent/test_firewall.py#L123 )","commit_id":"fdf8a2fd2b6f1deadc7d8723d24fc616172bba9a"}],"neutron/tests/fullstack/resources/client.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c943d1c21f6fb018175c2b74b50afb1d87f53fa4","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def create_port(self, tenant_id, network_id, hostname, qos_policy_id\u003dNone,"},{"line_number":92,"context_line":"                    security_group_id\u003dNone):"},{"line_number":93,"context_line":"        spec \u003d {"},{"line_number":94,"context_line":"            \u0027network_id\u0027: network_id,"},{"line_number":95,"context_line":"            \u0027tenant_id\u0027: tenant_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_c04b4daf","line":92,"range":{"start_line":92,"start_character":20,"end_line":92,"end_character":42},"updated":"2016-07-18 16:21:51.000000000","message":"If I get it correct from the code, it is actually a list, so security_group_ids","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return self._create_resource(resource_type, spec)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def create_port(self, tenant_id, network_id, hostname, qos_policy_id\u003dNone,"},{"line_number":92,"context_line":"                    security_group_id\u003dNone):"},{"line_number":93,"context_line":"        spec \u003d {"},{"line_number":94,"context_line":"            \u0027network_id\u0027: network_id,"},{"line_number":95,"context_line":"            \u0027tenant_id\u0027: tenant_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_59ea53ad","line":92,"range":{"start_line":92,"start_character":20,"end_line":92,"end_character":42},"in_reply_to":"dada55a8_c04b4daf","updated":"2016-07-20 05:32:51.000000000","message":"Done","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"}],"neutron/tests/fullstack/resources/environment.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"151ed62970c22af8bdb6e9165d1b980cd286e0a3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.l3_agent \u003d l3_agent"},{"line_number":61,"context_line":"        self.of_interface \u003d of_interface"},{"line_number":62,"context_line":"        self.ovsdb_interface \u003d ovsdb_interface"},{"line_number":63,"context_line":"        self.firewall_driver \u003d firewall_driver if firewall_driver else \u0027noop\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class Host(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_bd03e9b7","line":63,"range":{"start_line":63,"start_character":31,"end_line":63,"end_character":77},"updated":"2016-07-18 09:23:32.000000000","message":"Can we just set firewall_driver on L58 to \u0027noop\u0027 constant?","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.l3_agent \u003d l3_agent"},{"line_number":61,"context_line":"        self.of_interface \u003d of_interface"},{"line_number":62,"context_line":"        self.ovsdb_interface \u003d ovsdb_interface"},{"line_number":63,"context_line":"        self.firewall_driver \u003d firewall_driver if firewall_driver else \u0027noop\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class Host(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_190bbb8f","line":63,"range":{"start_line":63,"start_character":31,"end_line":63,"end_character":77},"in_reply_to":"dada55a8_bd03e9b7","updated":"2016-07-20 05:32:51.000000000","message":"Done","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"}],"neutron/tests/fullstack/test_firewall.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3c953875f6a50b647f5bc667ff3267e0bae53f59","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9d5574fb","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"updated":"2016-07-13 07:40:08.000000000","message":"Note that we currently don\u0027t have hybrid plugging in environments.","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"77c7b7cd9aa77594e32c44ec1b5b3cac60039d5d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_575648ce","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"in_reply_to":"1aa78d24_1d750431","updated":"2016-07-13 08:43:31.000000000","message":"I briefly looked at fullstack tests result and seems it\u0027s actually because of L110.\n\nI can try to come up with a patch that adds hybrid plugging.","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"3e8524bdb84b188a0d40a0f76c0137c77a13997a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d1a332b0","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"in_reply_to":"1aa78d24_575648ce","updated":"2016-07-14 01:19:10.000000000","message":"If we remove braces in L110, another error happens for hybrid.\n\nMay I ask you to do the hybrid plugging part?","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"ec5ff3b57cd3020cf32bf932ac9762ca70085d2f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_e15c5bf2","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"in_reply_to":"1aa78d24_8fe5f9dd","updated":"2016-07-19 02:57:18.000000000","message":"Yes it\u0027s possible to target linuxbridge+iptables firewall first in order to get this patch merged quickly (and test ovsfirewall locally meanwhile), but I have a mixed feeling as testing ovsfirewall was my original motivation. ;)","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce5704faa07fe60ae98da9630d0b0e898736193f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"fad55976_946c099e","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"in_reply_to":"1aa78d24_8fe5f9dd","updated":"2016-07-15 16:50:06.000000000","message":"https://review.openstack.org/#/c/342955/\nStill a WIP though","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"e294edd8235b8f28581592835f8a10d766aaf1ae","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_1d750431","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"in_reply_to":"1aa78d24_9d5574fb","updated":"2016-07-13 07:52:59.000000000","message":"Then that\u0027s the reason why hybrid tests fail.\nI\u0027m going to just disable this for now.","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7ab19a3b47e4b909c26dc9a2bd03b1830abeacd0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":51,"context_line":"    network_type \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"    firewall_scenarios \u003d ["},{"line_number":53,"context_line":"        (\u0027hybrid\u0027, {\u0027firewall_driver\u0027: \u0027iptables_hybrid\u0027}),"},{"line_number":54,"context_line":"        (\u0027ovs\u0027, {\u0027firewall_driver\u0027: \u0027openvswitch\u0027})]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    interface_scenarios \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_8fe5f9dd","line":53,"range":{"start_line":53,"start_character":10,"end_line":53,"end_character":16},"in_reply_to":"1aa78d24_d1a332b0","updated":"2016-07-14 08:36:18.000000000","message":"Yep, I\u0027ll do that. I\u0027m also looking at the vxlan failure. I was able to reproduce it and I see packets sent to tunnels but they don\u0027t come out on the other side. I\u0027ll need to hook in some ovs people.\n\nThere is also a possibility to test just \u0027iptables\u0027 firewall with linux bridge agent instead.","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"77c7b7cd9aa77594e32c44ec1b5b3cac60039d5d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        netcat2 \u003d net_helpers.NetcatTester("},{"line_number":107,"context_line":"            vms[2].namespace, vms[0].namespace, vms[0].ip, 3333,"},{"line_number":108,"context_line":"            net_helpers.NetcatTester.TCP)"},{"line_number":109,"context_line":"        self.addCleanup(netcat2.stop_processes)"},{"line_number":110,"context_line":"        self.assertRaises(RuntimeError, netcat.test_connectivity())"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[1].ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d7efd8e6","line":109,"range":{"start_line":109,"start_character":24,"end_line":109,"end_character":46},"updated":"2016-07-13 08:43:31.000000000","message":"Hm, maybe we could improve NetcatTester to fixture. Not related to this patch, just stating :)","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"77c7b7cd9aa77594e32c44ec1b5b3cac60039d5d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            vms[2].namespace, vms[0].namespace, vms[0].ip, 3333,"},{"line_number":108,"context_line":"            net_helpers.NetcatTester.TCP)"},{"line_number":109,"context_line":"        self.addCleanup(netcat2.stop_processes)"},{"line_number":110,"context_line":"        self.assertRaises(RuntimeError, netcat.test_connectivity())"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[1].ip)"},{"line_number":113,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[2].ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_3710dcff","line":110,"range":{"start_line":110,"start_character":40,"end_line":110,"end_character":66},"updated":"2016-07-13 08:43:31.000000000","message":"The callable should be passed - i.e. no brackets","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"3e8524bdb84b188a0d40a0f76c0137c77a13997a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            vms[2].namespace, vms[0].namespace, vms[0].ip, 3333,"},{"line_number":108,"context_line":"            net_helpers.NetcatTester.TCP)"},{"line_number":109,"context_line":"        self.addCleanup(netcat2.stop_processes)"},{"line_number":110,"context_line":"        self.assertRaises(RuntimeError, netcat.test_connectivity())"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[1].ip)"},{"line_number":113,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[2].ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_91ec0af5","line":110,"range":{"start_line":110,"start_character":40,"end_line":110,"end_character":66},"in_reply_to":"1aa78d24_3710dcff","updated":"2016-07-14 01:19:10.000000000","message":"I botched while uploading the patch. sorry.","commit_id":"4159bd2fae67650e0e2330c373d648ee29edba3e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c943d1c21f6fb018175c2b74b50afb1d87f53fa4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_806f9591","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":24},"updated":"2016-07-18 16:21:51.000000000","message":"U sure? :)","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_d9eda3b8","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":24},"in_reply_to":"dada55a8_806f9591","updated":"2016-07-20 05:32:51.000000000","message":"Because I copied this from test_connectivity.py.","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c943d1c21f6fb018175c2b74b50afb1d87f53fa4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        super(BaseFirewallSameNetworkTest, self).setUp(env)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class TestOvsFirewallSameNetwork(BaseFirewallSameNetworkTest):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":50,"context_line":"    network_type \u003d \u0027vlan\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_a0f9f9ca","line":47,"range":{"start_line":47,"start_character":10,"end_line":47,"end_character":21},"updated":"2016-07-18 16:21:51.000000000","message":"Generally, I would make all names here aimed for security groups than firewalls. ie. the file test_security_groups and TestSecurityGroupsSameNetwork","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        super(BaseFirewallSameNetworkTest, self).setUp(env)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class TestOvsFirewallSameNetwork(BaseFirewallSameNetworkTest):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":50,"context_line":"    network_type \u003d \u0027vlan\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_7910f759","line":47,"range":{"start_line":47,"start_character":10,"end_line":47,"end_character":21},"in_reply_to":"dada55a8_a0f9f9ca","updated":"2016-07-20 05:32:51.000000000","message":"Done","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"151ed62970c22af8bdb6e9165d1b980cd286e0a3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        (\u0027openflow-native_ovsdb-native\u0027, {\u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":59,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":60,"context_line":"    scenarios \u003d testscenarios.multiply_scenarios("},{"line_number":61,"context_line":"        firewall_scenarios, interface_scenarios)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def test_tcp_firewall(self):"},{"line_number":64,"context_line":"        tenant_uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_fdb561d0","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":47},"updated":"2016-07-18 09:23:32.000000000","message":"Does it make sense to test iptables_hybrid driver with different ovsdb and openflow drivers?","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        (\u0027openflow-native_ovsdb-native\u0027, {\u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":59,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":60,"context_line":"    scenarios \u003d testscenarios.multiply_scenarios("},{"line_number":61,"context_line":"        firewall_scenarios, interface_scenarios)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def test_tcp_firewall(self):"},{"line_number":64,"context_line":"        tenant_uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_191f3b6d","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":47},"in_reply_to":"dada55a8_fdb561d0","updated":"2016-07-20 05:32:51.000000000","message":"Done","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c943d1c21f6fb018175c2b74b50afb1d87f53fa4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            self.safe_client.create_port(tenant_uuid, network[\u0027id\u0027],"},{"line_number":74,"context_line":"                                         self.environment.hosts[i].hostname,"},{"line_number":75,"context_line":"                                         security_group_id\u003d[sgs[j][\u0027id\u0027]])"},{"line_number":76,"context_line":"            for i, j in [(0, 0), (1, 0), (1, 1)]]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.safe_client.create_security_group_rule("},{"line_number":79,"context_line":"            tenant_uuid, sgs[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_030a8fd2","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":21},"updated":"2016-07-18 16:21:51.000000000","message":"This is a bit cryptic - I think \u0027host_index\u0027 and \u0027sg_index\u0027 will make it more readable.","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            self.safe_client.create_port(tenant_uuid, network[\u0027id\u0027],"},{"line_number":74,"context_line":"                                         self.environment.hosts[i].hostname,"},{"line_number":75,"context_line":"                                         security_group_id\u003d[sgs[j][\u0027id\u0027]])"},{"line_number":76,"context_line":"            for i, j in [(0, 0), (1, 0), (1, 1)]]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.safe_client.create_security_group_rule("},{"line_number":79,"context_line":"            tenant_uuid, sgs[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_3c282d86","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":21},"in_reply_to":"dada55a8_030a8fd2","updated":"2016-07-20 05:32:51.000000000","message":"Done","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c943d1c21f6fb018175c2b74b50afb1d87f53fa4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                    tenant_uuid,"},{"line_number":91,"context_line":"                    self.safe_client,"},{"line_number":92,"context_line":"                    neutron_port\u003dports[i]))"},{"line_number":93,"context_line":"            for i, j in enumerate([0, 1, 1])]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        for vm in vms:"},{"line_number":96,"context_line":"            vm.block_until_boot()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_a320e34a","line":93,"range":{"start_line":93,"start_character":16,"end_line":93,"end_character":20},"updated":"2016-07-18 16:21:51.000000000","message":"port_index, host_index","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"d9b71bbcfc68ce7bc7444abc6c0d7fde4a4e8c67","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                    tenant_uuid,"},{"line_number":91,"context_line":"                    self.safe_client,"},{"line_number":92,"context_line":"                    neutron_port\u003dports[i]))"},{"line_number":93,"context_line":"            for i, j in enumerate([0, 1, 1])]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        for vm in vms:"},{"line_number":96,"context_line":"            vm.block_until_boot()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_1c2d6995","line":93,"range":{"start_line":93,"start_character":16,"end_line":93,"end_character":20},"in_reply_to":"dada55a8_a320e34a","updated":"2016-07-20 05:32:51.000000000","message":"Done","commit_id":"3c7849339649aeb306a43ba0c0a0081739d7ce93"}],"neutron/tests/fullstack/test_securitygroup.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"b12b98d2b3dfc6b2d5bae788000797f899f00c5e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                          \u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":59,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_tcp_firewall(self):"},{"line_number":62,"context_line":"        tenant_uuid \u003d uuidutils.generate_uuid()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        network \u003d self.safe_client.create_network(tenant_uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_54dbc87b","line":61,"updated":"2016-07-21 21:53:11.000000000","message":"Can you add a doctext that explains the intent of the test?","commit_id":"7e5e0d46b0973b40ab30259d64864b2089b8f258"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"af71f6d370ce5cda97cdb574d74a50fe2ad7ec96","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                          \u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":59,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_tcp_firewall(self):"},{"line_number":62,"context_line":"        tenant_uuid \u003d uuidutils.generate_uuid()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        network \u003d self.safe_client.create_network(tenant_uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_1c6ddccc","line":61,"in_reply_to":"dada55a8_54dbc87b","updated":"2016-07-22 11:13:45.000000000","message":"Done.","commit_id":"7e5e0d46b0973b40ab30259d64864b2089b8f258"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7638eb0f43f1e88a6ab55f875ba2429f1a4e90c6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            ovs \u003d ovs_lib.BaseOVS()"},{"line_number":35,"context_line":"            klass.ovs_version \u003d ovs.config[\u0027ovs_version\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        return klass.ovs_version.startswith(\"2.5\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class BaseSecurityGroupsSameNetworkTest(base.BaseFullStackTestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_2ae1b82d","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":49},"updated":"2016-08-01 13:40:36.000000000","message":"This doesn\u0027t assure kernel datapath compatibility. Can you reuse the function from https://github.com/openstack/neutron/blob/master/neutron/cmd/sanity/checks.py#L333 ?","commit_id":"306af5d2ab10adedf8846b55d3c904428b410993"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"9ff817b04c3c8c159a97339b8635a019521ae1c6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            ovs \u003d ovs_lib.BaseOVS()"},{"line_number":35,"context_line":"            klass.ovs_version \u003d ovs.config[\u0027ovs_version\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        return klass.ovs_version.startswith(\"2.5\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class BaseSecurityGroupsSameNetworkTest(base.BaseFullStackTestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_aed0bcf8","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":49},"in_reply_to":"bacf61ea_2ae1b82d","updated":"2016-08-03 03:43:23.000000000","message":"Done","commit_id":"306af5d2ab10adedf8846b55d3c904428b410993"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7638eb0f43f1e88a6ab55f875ba2429f1a4e90c6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            not OVSVersionChecker.supports_ovsfirewall()):"},{"line_number":48,"context_line":"            # There\u0027s currently no ovs version that makes"},{"line_number":49,"context_line":"            # test_connectivity and this test happy.  See bug/1602567."},{"line_number":50,"context_line":"            self.skipTest(\"Openvswitch firewall_driver doesn\u0027t work \""},{"line_number":51,"context_line":"                          \"with this version of ovs.\")"},{"line_number":52,"context_line":"        host_descriptions \u003d ["},{"line_number":53,"context_line":"            environment.HostDescription("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_2ac898a5","line":50,"range":{"start_line":50,"start_character":27,"end_line":50,"end_character":38},"updated":"2016-08-01 13:40:36.000000000","message":"Nit: Open vSwitch","commit_id":"306af5d2ab10adedf8846b55d3c904428b410993"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"9ff817b04c3c8c159a97339b8635a019521ae1c6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            not OVSVersionChecker.supports_ovsfirewall()):"},{"line_number":48,"context_line":"            # There\u0027s currently no ovs version that makes"},{"line_number":49,"context_line":"            # test_connectivity and this test happy.  See bug/1602567."},{"line_number":50,"context_line":"            self.skipTest(\"Openvswitch firewall_driver doesn\u0027t work \""},{"line_number":51,"context_line":"                          \"with this version of ovs.\")"},{"line_number":52,"context_line":"        host_descriptions \u003d ["},{"line_number":53,"context_line":"            environment.HostDescription("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_8ecdf85f","line":50,"range":{"start_line":50,"start_character":27,"end_line":50,"end_character":38},"in_reply_to":"bacf61ea_2ac898a5","updated":"2016-08-03 03:43:23.000000000","message":"Done","commit_id":"306af5d2ab10adedf8846b55d3c904428b410993"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9691fb0cb7d6e0782c1920af2b6b8435288192c1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    conntrack_supported \u003d None"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def supports_ovsfirewall(klass):"},{"line_number":33,"context_line":"        if klass.conntrack_supported is None:"},{"line_number":34,"context_line":"            klass.conntrack_supported \u003d checks.ovs_conntrack_supported()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_827135e3","line":32,"range":{"start_line":32,"start_character":29,"end_line":32,"end_character":34},"updated":"2016-08-03 12:17:07.000000000","message":"cls","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"2d15c72905bbf87cf78db4b46aa0a00f7393e527","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    conntrack_supported \u003d None"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def supports_ovsfirewall(klass):"},{"line_number":33,"context_line":"        if klass.conntrack_supported is None:"},{"line_number":34,"context_line":"            klass.conntrack_supported \u003d checks.ovs_conntrack_supported()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_4adec86d","line":32,"range":{"start_line":32,"start_character":29,"end_line":32,"end_character":34},"in_reply_to":"bacf61ea_827135e3","updated":"2016-08-05 08:05:53.000000000","message":"Done","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9691fb0cb7d6e0782c1920af2b6b8435288192c1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def setUp(self):"},{"line_number":45,"context_line":"        if (self.firewall_driver \u003d\u003d \u0027openvswitch\u0027 and"},{"line_number":46,"context_line":"            not OVSVersionChecker.supports_ovsfirewall()):"},{"line_number":47,"context_line":"            # There\u0027s currently no ovs version that makes"},{"line_number":48,"context_line":"            # test_connectivity and this test happy.  See bug/1602567."},{"line_number":49,"context_line":"            self.skipTest(\"Open vSwitch firewall_driver doesn\u0027t work \""},{"line_number":50,"context_line":"                          \"with this version of ovs.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_a23a79e5","line":47,"range":{"start_line":47,"start_character":35,"end_line":47,"end_character":46},"updated":"2016-08-03 12:17:07.000000000","message":"Technically it\u0027s not the ovs version but kernel datapath. I have a faith that after we switch to Xenial with kernel 4.4, we won\u0027t need to compile kernel modules and it will work with vxlan.","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"3aa58993effb6628b585f934136ee1eef14dd260","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def setUp(self):"},{"line_number":45,"context_line":"        if (self.firewall_driver \u003d\u003d \u0027openvswitch\u0027 and"},{"line_number":46,"context_line":"            not OVSVersionChecker.supports_ovsfirewall()):"},{"line_number":47,"context_line":"            # There\u0027s currently no ovs version that makes"},{"line_number":48,"context_line":"            # test_connectivity and this test happy.  See bug/1602567."},{"line_number":49,"context_line":"            self.skipTest(\"Open vSwitch firewall_driver doesn\u0027t work \""},{"line_number":50,"context_line":"                          \"with this version of ovs.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_e996ee92","line":47,"range":{"start_line":47,"start_character":35,"end_line":47,"end_character":46},"in_reply_to":"bacf61ea_a23a79e5","updated":"2016-08-04 05:04:44.000000000","message":"kernel 4.4\u0027s ovs and ovs branch-2.5 (and master) looks quite similar so I\u0027m not quite optimistic here.","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9691fb0cb7d6e0782c1920af2b6b8435288192c1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                          \u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":89,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_tcp_firewall(self):"},{"line_number":92,"context_line":"        \"\"\"Tests if a TCP security group rule is working,"},{"line_number":93,"context_line":"         by 1. connection from allowed security group is allowed,"},{"line_number":94,"context_line":"            2. connection from elsewhere is blocked, and"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_100c6c3a","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":25},"updated":"2016-08-03 12:17:07.000000000","message":"Thinking about that every test so far builds the whole environment from the scratch,which is very time consuming, maybe it would be better to squash the two methods into some test_security_group_lifecycle().\n\nWhat do you think?","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"3aa58993effb6628b585f934136ee1eef14dd260","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                          \u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":89,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_tcp_firewall(self):"},{"line_number":92,"context_line":"        \"\"\"Tests if a TCP security group rule is working,"},{"line_number":93,"context_line":"         by 1. connection from allowed security group is allowed,"},{"line_number":94,"context_line":"            2. connection from elsewhere is blocked, and"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_890c923c","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":25},"in_reply_to":"bacf61ea_100c6c3a","updated":"2016-08-04 05:04:44.000000000","message":"Oh, I thought the preferred way was to create separate tests which test one thing each. I agree separate tests are time consuming.\n\nI\u0027ll merge \u0027em right away.\n\nThe downside of merging is failed test names are no longer helpful. Do you think of another?","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"910e5476b39612f5255d26acf752815ce78e9993","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                          \u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":89,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_tcp_firewall(self):"},{"line_number":92,"context_line":"        \"\"\"Tests if a TCP security group rule is working,"},{"line_number":93,"context_line":"         by 1. connection from allowed security group is allowed,"},{"line_number":94,"context_line":"            2. connection from elsewhere is blocked, and"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_e8d6daef","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":25},"in_reply_to":"bacf61ea_890c923c","updated":"2016-08-04 10:40:00.000000000","message":"I think it\u0027s more beneficial to have a \u0027lifecycle\u0027 test - you usually need to look into logs in case of failure anyway.","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"2d15c72905bbf87cf78db4b46aa0a00f7393e527","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                          \u0027of_interface\u0027: \u0027native\u0027,"},{"line_number":89,"context_line":"                                          \u0027ovsdb_interface\u0027: \u0027native\u0027})]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_tcp_firewall(self):"},{"line_number":92,"context_line":"        \"\"\"Tests if a TCP security group rule is working,"},{"line_number":93,"context_line":"         by 1. connection from allowed security group is allowed,"},{"line_number":94,"context_line":"            2. connection from elsewhere is blocked, and"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_cad0f855","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":25},"in_reply_to":"bacf61ea_e8d6daef","updated":"2016-08-05 08:05:53.000000000","message":"Done","commit_id":"81b23fcba944abb5910ff6e9910ea38f61f129bb"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"44bb03e44e744958eeb2161a4fa71a3f891a1f26","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.safe_client.create_security_group_rule("},{"line_number":113,"context_line":"            tenant_uuid, sgs[0][\u0027id\u0027],"},{"line_number":114,"context_line":"            remote_group_id\u003dsgs[0][\u0027id\u0027], direction\u003d\u0027ingress\u0027,"},{"line_number":115,"context_line":"            ethertype\u003dconstants.IPv4,"},{"line_number":116,"context_line":"            protocol\u003dconstants.PROTO_NAME_TCP,"},{"line_number":117,"context_line":"            port_range_min\u003d3333, port_range_max\u003d3333)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_127073a3","line":114,"range":{"start_line":114,"start_character":52,"end_line":114,"end_character":61},"updated":"2016-08-05 16:25:07.000000000","message":"Nit: We should use constant.","commit_id":"c8c905a18229c9b8344392931823f47c3ad2f158"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"18488a92e14531476ca42ecfbdb55bc517764616","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.safe_client.create_security_group_rule("},{"line_number":113,"context_line":"            tenant_uuid, sgs[0][\u0027id\u0027],"},{"line_number":114,"context_line":"            remote_group_id\u003dsgs[0][\u0027id\u0027], direction\u003d\u0027ingress\u0027,"},{"line_number":115,"context_line":"            ethertype\u003dconstants.IPv4,"},{"line_number":116,"context_line":"            protocol\u003dconstants.PROTO_NAME_TCP,"},{"line_number":117,"context_line":"            port_range_min\u003d3333, port_range_max\u003d3333)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_280d15e8","line":114,"range":{"start_line":114,"start_character":52,"end_line":114,"end_character":61},"in_reply_to":"bacf61ea_127073a3","updated":"2016-08-08 04:29:59.000000000","message":"INGRESS_DIRECTION is only used by agents.\n\nUnless extensions/securitygroup.py and db/securitygroups_db.py use constants instead of raw \u0027ingress\u0027 strings, I feel I\u0027m safe to use \u0027ingress\u0027 here. ;)","commit_id":"c8c905a18229c9b8344392931823f47c3ad2f158"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"44bb03e44e744958eeb2161a4fa71a3f891a1f26","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[1].ip)"},{"line_number":144,"context_line":"        net_helpers.assert_no_ping(vms[0].namespace, vms[2].ip)"},{"line_number":145,"context_line":"        net_helpers.assert_no_ping(vms[1].namespace, vms[2].ip)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # 4. check if a security group update takes effect"},{"line_number":148,"context_line":"        self.assert_no_connection("},{"line_number":149,"context_line":"            vms[1].namespace, vms[0].namespace, vms[0].ip, 3344,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_ea3960f3","line":146,"updated":"2016-08-05 16:25:07.000000000","message":"Maybe it would also make sense to ping from vm0 to vm1 - which should work for TCP but not for ICMP. But it could be improved in followup.","commit_id":"c8c905a18229c9b8344392931823f47c3ad2f158"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"500355c730268c5323c52081bd5caa9ba7c67f9e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"             3. traffic not explicitly allowed (eg. ICMP) is blocked, and"},{"line_number":96,"context_line":"             4. a security group update takes effect."},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        index_to_sg \u003d [0, 0, 1]"},{"line_number":99,"context_line":"        if self.firewall_driver \u003d\u003d \u0027iptables_hybrid\u0027:"},{"line_number":100,"context_line":"            # The iptables_hybrid driver lacks isolation between agents"},{"line_number":101,"context_line":"            index_to_host \u003d [0] * 3"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_6fe6bee9","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":19},"updated":"2016-08-19 09:34:50.000000000","message":"Nit: maybe port_index_to_sg carries more info","commit_id":"d079b3ffb3a7187dc3693910c9736aa0f7d6f908"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"500355c730268c5323c52081bd5caa9ba7c67f9e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        index_to_sg \u003d [0, 0, 1]"},{"line_number":99,"context_line":"        if self.firewall_driver \u003d\u003d \u0027iptables_hybrid\u0027:"},{"line_number":100,"context_line":"            # The iptables_hybrid driver lacks isolation between agents"},{"line_number":101,"context_line":"            index_to_host \u003d [0] * 3"},{"line_number":102,"context_line":"        else:"},{"line_number":103,"context_line":"            index_to_host \u003d [0, 1, 1]"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_8fcdfa5f","line":101,"range":{"start_line":101,"start_character":12,"end_line":101,"end_character":25},"updated":"2016-08-19 09:34:50.000000000","message":"ditto","commit_id":"d079b3ffb3a7187dc3693910c9736aa0f7d6f908"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"500355c730268c5323c52081bd5caa9ba7c67f9e","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.safe_client.create_security_group_rule("},{"line_number":160,"context_line":"            tenant_uuid, sgs[0][\u0027id\u0027],"},{"line_number":161,"context_line":"            remote_group_id\u003dsgs[0][\u0027id\u0027], direction\u003d\u0027ingress\u0027,"},{"line_number":162,"context_line":"            ethertype\u003dconstants.IPv4,"},{"line_number":163,"context_line":"            protocol\u003dconstants.PROTO_NAME_TCP,"},{"line_number":164,"context_line":"            port_range_min\u003d3344, port_range_max\u003d3344)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_ef574e24","line":161,"range":{"start_line":161,"start_character":28,"end_line":161,"end_character":34},"updated":"2016-08-19 09:34:50.000000000","message":"Can we test here the other sg so we cover a sg that is not the same? Then on L167 we would use vms[2] as source.","commit_id":"d079b3ffb3a7187dc3693910c9736aa0f7d6f908"}]}
