)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8c95fa652f03ea228303aff4f53f9fb5819e35dc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ashish Gupta \u003cashish-kumar.gupta@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-15 03:51:43 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This test checks the basic firewall operations"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    The following is the scenario outline:"},{"line_number":10,"context_line":"    1. Create a network \u0026 subnet"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a890539_9409ca2e","line":7,"updated":"2014-11-20 09:26:38.000000000","message":"Title should be something like \"Add test for checking basic firewall operations\"","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"}],"tempest/scenario/manager.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"        :returns : firewallrule"},{"line_number":1285,"context_line":"        \"\"\""},{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"        name \u003d data_utils.rand_name(\u0027fwrule-\u0027)"},{"line_number":1288,"context_line":"        body \u003d {"},{"line_number":1289,"context_line":"            \"firewall_rule\": {"},{"line_number":1290,"context_line":"                \"action\": action,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_0479542f","line":1287,"updated":"2014-08-14 08:30:13.000000000","message":"rand names should not end in \u0027-\u0027","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            }"},{"line_number":1294,"context_line":"        }"},{"line_number":1295,"context_line":"        resp \u003d self.network_client.create_firewall_rule(body\u003dbody)"},{"line_number":1296,"context_line":"        fwrule \u003d net_common.DeletableFirewallRule(client\u003dself.network_client,"},{"line_number":1297,"context_line":"            **resp[\u0027firewall_rule\u0027])"},{"line_number":1298,"context_line":"        self.assertEqual(fwrule[\u0027name\u0027], name)"},{"line_number":1299,"context_line":"        self.addCleanup(self.delete_wrapper, fwrule)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_e4945846","line":1296,"updated":"2014-08-14 08:30:13.000000000","message":"nit: fw_rule","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"        resp \u003d self.network_client.create_firewall_rule(body\u003dbody)"},{"line_number":1296,"context_line":"        fwrule \u003d net_common.DeletableFirewallRule(client\u003dself.network_client,"},{"line_number":1297,"context_line":"            **resp[\u0027firewall_rule\u0027])"},{"line_number":1298,"context_line":"        self.assertEqual(fwrule[\u0027name\u0027], name)"},{"line_number":1299,"context_line":"        self.addCleanup(self.delete_wrapper, fwrule)"},{"line_number":1300,"context_line":"        return fwrule"},{"line_number":1301,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_848d6434","line":1298,"updated":"2014-08-14 08:30:13.000000000","message":"fwrule.name - fwrule is now an object","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"        self.addCleanup(self.delete_wrapper, fwrule)"},{"line_number":1300,"context_line":"        return fwrule"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"    def _create_firewall_policy(self, rule):"},{"line_number":1303,"context_line":"        \"\"\"Create firewll policy with the firewall rule."},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"        :return : firewall policy"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_8ad56d45","line":1302,"updated":"2014-08-14 08:30:13.000000000","message":"see comments on previous method","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"        self.addCleanup(self.delete_wrapper, firewall)"},{"line_number":1340,"context_line":"        return firewall"},{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"    def _delete_firewall(self, fwid):"},{"line_number":1343,"context_line":"        self.network_client.delete_firewall(fwid)"},{"line_number":1344,"context_line":""},{"line_number":1345,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_8d94a738","line":1342,"updated":"2014-08-14 08:30:13.000000000","message":"not needed. deleting resources is handled by cleanup, and DeletableFirewall has self.delete() method in any case","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"}],"tempest/scenario/test_firewall_basic_ops.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":24,"context_line":"CONF \u003d config.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Floating_IP_tuple \u003d collections.namedtuple(\u0027Floating_IP_tuple\u0027,"},{"line_number":28,"context_line":"                                           [\u0027floating_ip\u0027, \u0027server\u0027])"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_04acf4ec","line":27,"updated":"2014-08-14 08:30:13.000000000","message":"this should be imported instead of redefined\n\nI suggest moving this definition from network_basic_ops to manger","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    The following is the scenario outline:"},{"line_number":37,"context_line":"    1. Create a network \u0026 subnet"},{"line_number":38,"context_line":"    2. Create a router(if public router isn\u0027t configured)."},{"line_number":39,"context_line":"    3. Connect tenant network to public network via router"},{"line_number":40,"context_line":"    4. Create an access point:"},{"line_number":41,"context_line":"        a. a security group open to incoming ssh connection"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_8799e970","line":38,"updated":"2014-08-14 08:30:13.000000000","message":"Do you really need to create your own network resources?\nIsolated_creds usually does all of this for you. \nIn general the only reason to create them yourself is if you are testing the creation/deletion of network resources. It\u0027s better if you just retrieve the network resources created for you and use them.","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    @classmethod"},{"line_number":66,"context_line":"    def setUpClass(cls):"},{"line_number":67,"context_line":"        # Create no network resources for these tests."},{"line_number":68,"context_line":"        cls.set_network_resources()"},{"line_number":69,"context_line":"        super(TestFWaasBasicOps, cls).setUpClass()"},{"line_number":70,"context_line":"        if not test.is_extension_enabled(\u0027fwaas\u0027, \u0027network\u0027):"},{"line_number":71,"context_line":"                msg \u003d \"FWaas extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_e79ffd4e","line":68,"updated":"2014-08-14 08:30:13.000000000","message":"see my comment on the doc","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        super(TestFWaasBasicOps, self).setUp()"},{"line_number":77,"context_line":"        self.security_group \u003d \\"},{"line_number":78,"context_line":"            self._create_security_group_neutron(tenant_id\u003dself.tenant_id)"},{"line_number":79,"context_line":"        self.network, self.subnet, self.router \u003d self._create_networks()"},{"line_number":80,"context_line":"        self.servers \u003d {}"},{"line_number":81,"context_line":"        name \u003d data_utils.rand_name(\u0027server-smoke\u0027)"},{"line_number":82,"context_line":"        serv_dict \u003d self._create_server(name, self.network)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_c76cc139","line":79,"updated":"2014-08-14 08:30:13.000000000","message":"see my comment on the doc","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        serv_dict \u003d self._create_server(name, self.network)"},{"line_number":83,"context_line":"        self.servers[serv_dict[\u0027server\u0027]] \u003d serv_dict[\u0027keypair\u0027]"},{"line_number":84,"context_line":"        self._create_and_associate_floating_ips()"},{"line_number":85,"context_line":"        rule \u003d self._create_firewall_rule(action\u003d\"deny\", protocol\u003d\u0027icmp\u0027)"},{"line_number":86,"context_line":"        self.policy \u003d self._create_firewall_policy(rule.id)"},{"line_number":87,"context_line":"        self.ip \u003d self._create_test_network_and_vm()"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_041dd40f","line":85,"updated":"2014-08-14 08:30:13.000000000","message":"s/rule/fw_rule\n\nwe should be careful to distinguish between fw and sg rules. especially since you have them both in the same method","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        self.policy \u003d self._create_firewall_policy(rule.id)"},{"line_number":87,"context_line":"        self.ip \u003d self._create_test_network_and_vm()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _create_server(self, name, network):"},{"line_number":90,"context_line":"        keypair \u003d self.create_keypair(name\u003d\u0027keypair-%s\u0027 % name)"},{"line_number":91,"context_line":"        security_groups \u003d [self.security_group.name]"},{"line_number":92,"context_line":"        create_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_44318ceb","line":89,"updated":"2014-08-14 08:30:13.000000000","message":"please avoid duplicating helper methods from other modules. If you want to use it, try and move that method to a common ancestor (manager)","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        server \u003d self.create_server(name\u003dname, create_kwargs\u003dcreate_kwargs)"},{"line_number":100,"context_line":"        return dict(server\u003dserver, keypair\u003dkeypair)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _create_and_associate_floating_ips(self):"},{"line_number":103,"context_line":"        public_network_id \u003d CONF.network.public_network_id"},{"line_number":104,"context_line":"        for server in self.servers.keys():"},{"line_number":105,"context_line":"            floating_ip \u003d self._create_floating_ip(server, public_network_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_644da872","line":102,"updated":"2014-08-14 08:30:13.000000000","message":"ditto","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        firewall \u003d self._create_firewall(self.policy.id)"},{"line_number":113,"context_line":"        return firewall.id"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _delete_firewall_services(self, firewall_id):"},{"line_number":116,"context_line":"        \"\"\""},{"line_number":117,"context_line":"        Delete Firewall"},{"line_number":118,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_0d1df70f","line":115,"updated":"2014-08-14 08:30:13.000000000","message":"this is redundant. deleting resources is handled by cleanup","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        network \u003d self._create_network(self.tenant_id)"},{"line_number":127,"context_line":"        subnet \u003d self._create_subnet(network)"},{"line_number":128,"context_line":"        routers \u003d self._list_routers()"},{"line_number":129,"context_line":"        router_id \u003d [n[\u0027id\u0027] for n in routers]"},{"line_number":130,"context_line":"        subnet.add_to_router(router_id[0])"},{"line_number":131,"context_line":"        name \u003d data_utils.rand_name(\u0027test-server\u0027)"},{"line_number":132,"context_line":"        instance \u003d self._create_server(name, network)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_e4953889","line":129,"updated":"2014-08-14 08:30:13.000000000","message":"isn\u0027t this self.router? why do you need to look for it again?","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        ip \u003d port[0][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":135,"context_line":"        return ip"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def _check_traffic_access(self, dest, shouldconnect):"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        SSH to the floating ip of the instance and try to check the"},{"line_number":140,"context_line":"        connectivity to other instance"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_245570c6","line":137,"updated":"2014-08-14 08:30:13.000000000","message":"nit: s/shouldconnect/should_connect","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"56c9801cd9ca5b90c7f545dd2ee813d7244c21cd","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        self._check_traffic_access(self.ip, True)"},{"line_number":154,"context_line":"        firewall_id \u003d self._create_firewall_services()"},{"line_number":155,"context_line":"        self._check_traffic_access(self.ip, False)"},{"line_number":156,"context_line":"        self._delete_firewall_services(firewall_id)"},{"line_number":157,"context_line":"        self._check_traffic_access(self.ip, True)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_aa994970","line":156,"updated":"2014-08-14 08:30:13.000000000","message":"this should be taken care of by addCleanup","commit_id":"cab0f90907d38fcdd5ef814377ffc1827f38a7e1"}]}
