)]}'
{"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cmd \u003d \u0027sudo sh -c \"echo \\\\\"%s\\\\\" \u003e/dev/console\"\u0027 % message"},{"line_number":91,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def ping_host(self, host):"},{"line_number":94,"context_line":"        cmd \u003d \u0027ping -c1 -w1 \u0027 + host"},{"line_number":95,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTVY%3D","line":93,"updated":"2013-11-11 12:46:26.000000000","message":"You may know, this function conflicts with https://review.openstack.org/#/c/52994 \u0027s one.","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cmd \u003d \u0027sudo sh -c \"echo \\\\\"%s\\\\\" \u003e/dev/console\"\u0027 % message"},{"line_number":91,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def ping_host(self, host):"},{"line_number":94,"context_line":"        cmd \u003d \u0027ping -c1 -w1 \u0027 + host"},{"line_number":95,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSn4%3D","line":93,"in_reply_to":"AAAATn%2F%2FTVY%3D","updated":"2013-11-11 15:43:18.000000000","message":"Same func. Will be resolved in merge","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"}],"tempest/scenario/manager.py":[{"author":{"_account_id":8622,"name":"Feng Ju","email":"jufeng@cn.ibm.com","username":"jufeng"},"change_message_id":"d4f1d426e33916fdbf38a3d57e0b8aec5b32045d","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        subnet.add_to_router(router.id)"},{"line_number":859,"context_line":"        self.networks.append(network)"},{"line_number":860,"context_line":"        self.subnets.append(subnet)"},{"line_number":861,"context_line":"        self.routers.append(router)"},{"line_number":862,"context_line":"        return network, subnet, router"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9dY4%3D","line":861,"updated":"2013-12-11 09:57:59.000000000","message":"The self.networks, self.subnets, self.routers are meaningless to NetworkScenarioTest, I know you put these here for TestMinimumBasicScenario test, but maybe we should refator test_network_basic_ops.py to remove resource collections at  https://github.com/openstack/tempest/blob/master/tempest/scenario/test_network_basic_ops.py#L115 to simplify coding for advanced network tests.","commit_id":"01066152f3fdc1645941f5a8fb97a784beab568e"},{"author":{"_account_id":8622,"name":"Feng Ju","email":"jufeng@cn.ibm.com","username":"jufeng"},"change_message_id":"43e3b3a9a60c0fd944223f6ac2bcff5dc1628bc6","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        subnet.add_to_router(router.id)"},{"line_number":859,"context_line":"        self.networks.append(network)"},{"line_number":860,"context_line":"        self.subnets.append(subnet)"},{"line_number":861,"context_line":"        self.routers.append(router)"},{"line_number":862,"context_line":"        return network, subnet, router"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9WqU%3D","line":861,"in_reply_to":"AAAATn%2F9a0o%3D","updated":"2013-12-12 10:39:16.000000000","message":"Yes, I have updated my patch, you can review it. Thanks.\nhttps://review.openstack.org/#/c/59898/","commit_id":"01066152f3fdc1645941f5a8fb97a784beab568e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7edea5f02aefb9f9b8a5dcf1b9afa798f84f188c","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        subnet.add_to_router(router.id)"},{"line_number":859,"context_line":"        self.networks.append(network)"},{"line_number":860,"context_line":"        self.subnets.append(subnet)"},{"line_number":861,"context_line":"        self.routers.append(router)"},{"line_number":862,"context_line":"        return network, subnet, router"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9a0o%3D","line":861,"in_reply_to":"AAAATn%2F9dY4%3D","updated":"2013-12-11 18:13:00.000000000","message":"since you\u0027re already working on patch for this, I\u0027ll leave it. if you\u0027re patch is merged ahead of this one, I\u0027ll rebase, if not - you\u0027re patch will take care of it anyway. am I right?","commit_id":"01066152f3fdc1645941f5a8fb97a784beab568e"},{"author":{"_account_id":8622,"name":"Feng Ju","email":"jufeng@cn.ibm.com","username":"jufeng"},"change_message_id":"2ae6d937368a876491b128a903c4ffc34f6ff266","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        ports \u003d self._list_ports()"},{"line_number":561,"context_line":"        ownports \u003d ([value for value in ports"},{"line_number":562,"context_line":"                    if tenant_id \u003d\u003d value[\u0027tenant_id\u0027]])"},{"line_number":563,"context_line":"        return len(ownports)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _create_subnet(self, network, namestart\u003d\u0027subnet-smoke-\u0027):"},{"line_number":566,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAATn%2F9ED0%3D","side":"PARENT","line":563,"updated":"2013-12-17 06:11:19.000000000","message":"Hi Yair, I noticed that Jenkins failed because you deleted these functions in previous patch. Is it right?","commit_id":"5f670abe2ccbb850eda4d2a25748bd763f2815ae"}],"tempest/scenario/test_cross_tenant_connectivity.py":[{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3f607b46918f583f73d279453985baa07851d6fd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fdwg%3D","line":4,"updated":"2013-11-05 18:27:33.000000000","message":"HP in this file? Also 2012 for OSF?","commit_id":"d50181d75dbc24b16968e0470ca609f6acdc5c89"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3f607b46918f583f73d279453985baa07851d6fd","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        for tenant in [cls.demo_tenant, cls.alt_tenant]:"},{"line_number":172,"context_line":"            cls.tenants[tenant.tenant_id] \u003d tenant"},{"line_number":173,"context_line":"        if not cls.config.network.public_router_id:"},{"line_number":174,"context_line":"            cls.floatin_ip_access \u003d True"},{"line_number":175,"context_line":"        else:"},{"line_number":176,"context_line":"            cls.floatin_ip_access \u003d False"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fdwk%3D","line":174,"updated":"2013-11-05 18:27:33.000000000","message":"small typo - floatin[G]","commit_id":"d50181d75dbc24b16968e0470ca609f6acdc5c89"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3f607b46918f583f73d279453985baa07851d6fd","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _create_tenant_keypairs(self, tenant_id):"},{"line_number":183,"context_line":"        self.keypairs[tenant_id] \u003d self.create_keypair("},{"line_number":184,"context_line":"            name\u003drand_name(\u0027keypair-smoke-\u0027))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _create_tenant_security_groups(self, tenant):"},{"line_number":187,"context_line":"        self.security_groups.setdefault(self.tenant_id, [])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FdwE%3D","line":184,"updated":"2013-11-05 18:27:33.000000000","message":"what is the meaning of keypair-smoke?","commit_id":"d50181d75dbc24b16968e0470ca609f6acdc5c89"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTYU%3D","line":3,"updated":"2013-11-11 12:46:26.000000000","message":"Are these copyrights valid?","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":"from tempest import exceptions"},{"line_number":22,"context_line":"from tempest.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTWs%3D","line":19,"updated":"2013-11-11 12:46:26.000000000","message":"HACKING officially discourages symbol import directly because it makes it harder to track down that a function was imported.\nSo I think this should be:\nfrom tempest.common.utils import data_utils\n\nand use it with data_utils.rand_name().","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4968faeeeb787dd851ab4253324edd2e35fea1ef","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":"from tempest import exceptions"},{"line_number":22,"context_line":"from tempest.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BxXc%3D","line":19,"in_reply_to":"AAAATn%2F%2FTWs%3D","updated":"2013-11-20 12:32:57.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestNetworkRhosBasic(manager.NetworkScenarioTest):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    This test suite assumes that Nova has been configured to"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTWA%3D","line":31,"updated":"2013-11-11 12:46:26.000000000","message":"Why does this class name include \u0027Rhos\u0027?\nIs this test class for the RedHat OpenStack?","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestNetworkRhosBasic(manager.NetworkScenarioTest):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    This test suite assumes that Nova has been configured to"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSno%3D","line":31,"in_reply_to":"AAAATn%2F%2FTWA%3D","updated":"2013-11-11 15:43:18.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            its own router connected to the public network"},{"line_number":91,"context_line":"    \"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    CONF \u003d config.TempestConfig()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class TenantProperties():"},{"line_number":96,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTVw%3D","line":93,"updated":"2013-11-11 12:46:26.000000000","message":"This CONF is not used in this class.","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4968faeeeb787dd851ab4253324edd2e35fea1ef","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            its own router connected to the public network"},{"line_number":91,"context_line":"    \"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    CONF \u003d config.TempestConfig()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class TenantProperties():"},{"line_number":96,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BxXY%3D","line":93,"in_reply_to":"AAAATn%2F%2FTVw%3D","updated":"2013-11-20 12:32:57.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            namestart\u003d\u0027secgroup_general-\u0027,"},{"line_number":195,"context_line":"            tenant_id\u003dtenant.tenant_id"},{"line_number":196,"context_line":"        )"},{"line_number":197,"context_line":"        # def_sg \u003d self._default_security_group(tenant.tenant_id)"},{"line_number":198,"context_line":"        tenant.security_groups.update(access\u003daccess_sg, default\u003ddef_sg)"},{"line_number":199,"context_line":"        ssh_rule \u003d dict("},{"line_number":200,"context_line":"            protocol\u003d\u0027tcp\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTT0%3D","line":197,"updated":"2013-11-11 12:46:26.000000000","message":"Is this comment necessary?","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4968faeeeb787dd851ab4253324edd2e35fea1ef","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            namestart\u003d\u0027secgroup_general-\u0027,"},{"line_number":195,"context_line":"            tenant_id\u003dtenant.tenant_id"},{"line_number":196,"context_line":"        )"},{"line_number":197,"context_line":"        # def_sg \u003d self._default_security_group(tenant.tenant_id)"},{"line_number":198,"context_line":"        tenant.security_groups.update(access\u003daccess_sg, default\u003ddef_sg)"},{"line_number":199,"context_line":"        ssh_rule \u003d dict("},{"line_number":200,"context_line":"            protocol\u003d\u0027tcp\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BxXU%3D","line":197,"in_reply_to":"AAAATn%2F%2FTT0%3D","updated":"2013-11-20 12:32:57.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            self._check_connectivity(access_point_ssh, ip)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"            # test that reverse traffic is still blocked"},{"line_number":430,"context_line":"            #self._test_cross_tenant_block(dest_tenant, source_tenant)"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"            # allow reverse traffic and check"},{"line_number":433,"context_line":"            rule_d2s \u003d self._create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTP4%3D","line":430,"updated":"2013-11-11 12:46:26.000000000","message":"Is this comment necessary?","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            self._check_connectivity(access_point_ssh, ip)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"            # test that reverse traffic is still blocked"},{"line_number":430,"context_line":"            #self._test_cross_tenant_block(dest_tenant, source_tenant)"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"            # allow reverse traffic and check"},{"line_number":433,"context_line":"            rule_d2s \u003d self._create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSnQ%3D","line":430,"in_reply_to":"AAAATn%2F%2FTP4%3D","updated":"2013-11-11 15:43:18.000000000","message":"Will move to another patch","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":479,"context_line":"            self._verify_network_details(self.tenants[tenant_id])"},{"line_number":480,"context_line":"            self._verify_mac_addr(self.tenants[tenant_id])"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"         # in-tenant check"},{"line_number":483,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":484,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":485,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTPU%3D","line":482,"updated":"2013-11-11 12:46:26.000000000","message":"This indentation is not valid.","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":479,"context_line":"            self._verify_network_details(self.tenants[tenant_id])"},{"line_number":480,"context_line":"            self._verify_mac_addr(self.tenants[tenant_id])"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"         # in-tenant check"},{"line_number":483,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":484,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":485,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSnM%3D","line":482,"in_reply_to":"AAAATn%2F%2FTPU%3D","updated":"2013-11-11 15:43:18.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            self._verify_mac_addr(self.tenants[tenant_id])"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"         # in-tenant check"},{"line_number":483,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":484,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"         # cross tenant check"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTPM%3D","line":483,"updated":"2013-11-11 12:46:26.000000000","message":"ditto. and is this comment necessary?","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            self._verify_mac_addr(self.tenants[tenant_id])"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"         # in-tenant check"},{"line_number":483,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":484,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"         # cross tenant check"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSnI%3D","line":483,"in_reply_to":"AAAATn%2F%2FTPM%3D","updated":"2013-11-11 15:43:18.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":483,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":484,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"         # cross tenant check"},{"line_number":487,"context_line":"        source_tenant \u003d self.demo_tenant"},{"line_number":488,"context_line":"        dest_tenant \u003d self.alt_tenant"},{"line_number":489,"context_line":"        # self._test_cross_tenant_block(source_tenant, dest_tenant)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTPI%3D","line":486,"updated":"2013-11-11 12:46:26.000000000","message":"ditto","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":483,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":484,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"         # cross tenant check"},{"line_number":487,"context_line":"        source_tenant \u003d self.demo_tenant"},{"line_number":488,"context_line":"        dest_tenant \u003d self.alt_tenant"},{"line_number":489,"context_line":"        # self._test_cross_tenant_block(source_tenant, dest_tenant)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSnA%3D","line":486,"in_reply_to":"AAAATn%2F%2FTPI%3D","updated":"2013-11-11 15:43:18.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2427d789b9f7ede1f2db77ffc1052888fc380bd4","unresolved":false,"context_lines":[{"line_number":486,"context_line":"         # cross tenant check"},{"line_number":487,"context_line":"        source_tenant \u003d self.demo_tenant"},{"line_number":488,"context_line":"        dest_tenant \u003d self.alt_tenant"},{"line_number":489,"context_line":"        # self._test_cross_tenant_block(source_tenant, dest_tenant)"},{"line_number":490,"context_line":"        self._test_cross_tenant_allow(source_tenant, dest_tenant)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FTU4%3D","line":489,"updated":"2013-11-11 12:46:26.000000000","message":"Is this comment necessary?","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8470ba5fd5bb3c6449308d9ab4ff0e754f469e69","unresolved":false,"context_lines":[{"line_number":486,"context_line":"         # cross tenant check"},{"line_number":487,"context_line":"        source_tenant \u003d self.demo_tenant"},{"line_number":488,"context_line":"        dest_tenant \u003d self.alt_tenant"},{"line_number":489,"context_line":"        # self._test_cross_tenant_block(source_tenant, dest_tenant)"},{"line_number":490,"context_line":"        self._test_cross_tenant_allow(source_tenant, dest_tenant)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FSmw%3D","line":489,"in_reply_to":"AAAATn%2F%2FTU4%3D","updated":"2013-11-11 15:43:18.000000000","message":"Done","commit_id":"fe5b9ed087ab8c8addebd17b45fd52f031d0c76e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"092d2694215ebda5ab0469ea0f79bac604db0f21","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            its own router connected to the public network"},{"line_number":92,"context_line":"    \"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    CONF \u003d config.TempestConfig()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    class TenantProperties():"},{"line_number":97,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B75A%3D","line":94,"updated":"2013-11-18 11:54:21.000000000","message":"Where is this CONF used?","commit_id":"6a4470263bf19aacd52774b88419ce67cbf61199"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7a89ee060cde30705fb0e3f4a9affdc045645519","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            its own router connected to the public network"},{"line_number":92,"context_line":"    \"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    CONF \u003d config.TempestConfig()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    class TenantProperties():"},{"line_number":97,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BxyU%3D","line":94,"in_reply_to":"AAAATn%2F%2B75A%3D","updated":"2013-11-20 12:51:13.000000000","message":"Done","commit_id":"6a4470263bf19aacd52774b88419ce67cbf61199"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"092d2694215ebda5ab0469ea0f79bac604db0f21","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            self._check_connectivity(access_point_ssh, ip)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # test that reverse traffic is still blocked"},{"line_number":440,"context_line":"            #self._test_cross_tenant_block(dest_tenant, source_tenant)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"            # allow reverse traffic and check"},{"line_number":443,"context_line":"            rule_d2s \u003d self._create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B740%3D","line":440,"updated":"2013-11-18 11:54:21.000000000","message":"I think this comment should be removed.","commit_id":"6a4470263bf19aacd52774b88419ce67cbf61199"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"c7219e55055ef5ee66c9b96f2ac1dc03e1715de1","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            self._check_connectivity(access_point_ssh, ip)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # test that reverse traffic is still blocked"},{"line_number":440,"context_line":"            #self._test_cross_tenant_block(dest_tenant, source_tenant)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"            # allow reverse traffic and check"},{"line_number":443,"context_line":"            rule_d2s \u003d self._create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B7zw%3D","line":440,"in_reply_to":"AAAATn%2F%2B740%3D","updated":"2013-11-18 12:09:05.000000000","message":"all these comments are blocked for WIP reason","commit_id":"6a4470263bf19aacd52774b88419ce67cbf61199"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"092d2694215ebda5ab0469ea0f79bac604db0f21","unresolved":false,"context_lines":[{"line_number":490,"context_line":"            self._verify_mac_addr(self.tenants[tenant_id])"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"         # in-tenant check"},{"line_number":493,"context_line":"         # self._test_in_tenant_block(self.demo_tenant)"},{"line_number":494,"context_line":"        self._test_in_tenant_allow(self.demo_tenant)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"         # cross tenant check"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B74k%3D","line":493,"updated":"2013-11-18 11:54:21.000000000","message":"This comment should be removed.","commit_id":"6a4470263bf19aacd52774b88419ce67cbf61199"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"092d2694215ebda5ab0469ea0f79bac604db0f21","unresolved":false,"context_lines":[{"line_number":496,"context_line":"         # cross tenant check"},{"line_number":497,"context_line":"        source_tenant \u003d self.demo_tenant"},{"line_number":498,"context_line":"        dest_tenant \u003d self.alt_tenant"},{"line_number":499,"context_line":"        # self._test_cross_tenant_block(source_tenant, dest_tenant)"},{"line_number":500,"context_line":"        self._test_cross_tenant_allow(source_tenant, dest_tenant)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B74w%3D","line":499,"updated":"2013-11-18 11:54:21.000000000","message":"ditto","commit_id":"6a4470263bf19aacd52774b88419ce67cbf61199"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"440d3421efa8cfc576471b3cbc5bfa299c0c5d1f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F%2BDUc%3D","line":4,"updated":"2013-12-03 02:19:20.000000000","message":"Are these copyrights valid? Does HP has the copyright?","commit_id":"0cb05151b4d025f70f4ddf2b8d776a3a5aae4344"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"705a0c793a8d4be8aedc60b1d76f9ba703b64c66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9%2FPE%3D","line":4,"in_reply_to":"AAAATn%2F%2BCkA%3D","updated":"2013-12-03 18:25:25.000000000","message":"If you put a copyright line here you need to make sure its correct. The foundation and HP have nothing to do with the code in this file (I\u0027m assuming it\u0027s your creation) so you either put your copyright (your companies) or just don\u0027t put one. It really depends on your corporate policy on this I think.","commit_id":"0cb05151b4d025f70f4ddf2b8d776a3a5aae4344"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d2133e9a56993dc297c38304122bd0773a75fce4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F%2BCkA%3D","line":4,"in_reply_to":"AAAATn%2F%2BDUc%3D","updated":"2013-12-03 06:17:36.000000000","message":"I actually have no idea - I copied this from network_basic_ops","commit_id":"0cb05151b4d025f70f4ddf2b8d776a3a5aae4344"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"992493294f284d3987c667277e523dce486ed79f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9%2FG0%3D","line":4,"in_reply_to":"AAAATn%2F9%2FPE%3D","updated":"2013-12-03 18:43:02.000000000","message":"Done","commit_id":"0cb05151b4d025f70f4ddf2b8d776a3a5aae4344"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"ead3084372b27da46c8d68984927cfea60b04a31","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            self.security_groups \u003d {}"},{"line_number":119,"context_line":"            self.servers \u003d list()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        def _create_network(self, network, subnet, router):"},{"line_number":122,"context_line":"            self.network \u003d network"},{"line_number":123,"context_line":"            self.subnet \u003d subnet"},{"line_number":124,"context_line":"            self.router \u003d router"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATn%2F97fY%3D","line":121,"updated":"2013-12-04 11:05:10.000000000","message":"a small tip: suggest using _set_network instead of _create_network because it does not execute creation and manager.NetworkScenarioTest also has a \u0027_create_network\u0027.","commit_id":"a701818f390cced47871f7a1688aab2170f619ed"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4d7edc3d7bf8c24cc7350066bf83ab18780df0bc","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            self.security_groups \u003d {}"},{"line_number":119,"context_line":"            self.servers \u003d list()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        def _create_network(self, network, subnet, router):"},{"line_number":122,"context_line":"            self.network \u003d network"},{"line_number":123,"context_line":"            self.subnet \u003d subnet"},{"line_number":124,"context_line":"            self.router \u003d router"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATn%2F97bQ%3D","line":121,"in_reply_to":"AAAATn%2F97fY%3D","updated":"2013-12-04 11:16:26.000000000","message":"Done","commit_id":"a701818f390cced47871f7a1688aab2170f619ed"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"faf50da574714798a7617054842879bf7fac7af2","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        floating_ip_map \u003d {}"},{"line_number":302,"context_line":"        for server, floating_ip in self.floating_ips.items():"},{"line_number":303,"context_line":"            if server.tenant_id \u003d\u003d tenant_id:"},{"line_number":304,"context_line":"                floating_ip_map[floating_ip] \u003d server"},{"line_number":305,"context_line":"        ip_tracker \u003d FloatingIPCheckTracker(self.compute_client,"},{"line_number":306,"context_line":"                                            floating_ip_map)"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAATn%2F9GMI%3D","line":304,"updated":"2013-12-16 20:34:33.000000000","message":"The FloatingIPTracker expects a map of server\u0027s to floating IPs. You have it reversed here.","commit_id":"877532dc2b525c426b1fcf159867589221e7ba71"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"90e86bb488ef9ded14e2d5e52f12f6cd52c70b49","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        floating_ip_map \u003d {}"},{"line_number":302,"context_line":"        for server, floating_ip in self.floating_ips.items():"},{"line_number":303,"context_line":"            if server.tenant_id \u003d\u003d tenant_id:"},{"line_number":304,"context_line":"                floating_ip_map[floating_ip] \u003d server"},{"line_number":305,"context_line":"        ip_tracker \u003d FloatingIPCheckTracker(self.compute_client,"},{"line_number":306,"context_line":"                                            floating_ip_map)"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAATn%2F9FpE%3D","line":304,"in_reply_to":"AAAATn%2F9GMI%3D","updated":"2013-12-16 22:19:10.000000000","message":"Oops! My bad... I was missing a previous commit that changed that map.","commit_id":"877532dc2b525c426b1fcf159867589221e7ba71"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"23c1763e41a1b320815ae9cac7d17dabe73d9f12","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    @classmethod"},{"line_number":144,"context_line":"    def setUpClass(cls):"},{"line_number":145,"context_line":"        super(TestNetworkCrossTenant, cls).setUpClass()"},{"line_number":146,"context_line":"        cls.alt_tenant_id \u003d cls.manager._get_identity_client("},{"line_number":147,"context_line":"            cls.config.identity.alt_username,"},{"line_number":148,"context_line":"            cls.config.identity.alt_password,"},{"line_number":149,"context_line":"            cls.config.identity.alt_tenant_name"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAATn%2F9Ae0%3D","line":146,"updated":"2013-12-17 19:14:18.000000000","message":"If you look at the base class of this test manager.NetworkScenarioTest, you will find that to get the primary tenant (demo in your comments) id, it checks whether allow_tenant_isolation is true. If it is, it gets the id from the tenant isolation code. If it is not, it uses the demo credentials in the tempest config to get the tenant id. In the case of the alt tenant, here you go directly to the config file to get the credentials and then get the id. tempest.common.isolated_creds has methods to work with the alt user as well. Let\u0027s use them. Right now, it doesn\u0027t matter much because tenant isolation is not enabled for Neutron testing in the gate. But it will be soon. Fixing this now will save us debugging time in the gate down the road","commit_id":"0b720f2964c4969658fdd5c808ed87c33fca01d9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"23c1763e41a1b320815ae9cac7d17dabe73d9f12","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        cls.servers \u003d []"},{"line_number":160,"context_line":"        cls.floating_ips \u003d {}"},{"line_number":161,"context_line":"        cls.tenants \u003d {}"},{"line_number":162,"context_line":"        cls.demo_tenant \u003d cls.TenantProperties("},{"line_number":163,"context_line":"            cls.tenant_id,"},{"line_number":164,"context_line":"            cls.config.identity.username,"},{"line_number":165,"context_line":"            cls.config.identity.password,"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAATn%2F9AeM%3D","line":162,"updated":"2013-12-17 19:14:18.000000000","message":"Please see comments for line 146. When tenant isolation is enabled, you will have the tenant id pointing to an isolated tenant and the credentials from the tempest config. Again, this will get us in trouble in the gate in the future","commit_id":"0b720f2964c4969658fdd5c808ed87c33fca01d9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"23c1763e41a1b320815ae9cac7d17dabe73d9f12","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            cls.config.identity.password,"},{"line_number":166,"context_line":"            cls.config.identity.tenant_name"},{"line_number":167,"context_line":"        )"},{"line_number":168,"context_line":"        cls.alt_tenant \u003d cls.TenantProperties("},{"line_number":169,"context_line":"            cls.alt_tenant_id,"},{"line_number":170,"context_line":"            cls.config.identity.alt_username,"},{"line_number":171,"context_line":"            cls.config.identity.alt_password,"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAATn%2F9AeE%3D","line":168,"updated":"2013-12-17 19:14:18.000000000","message":"tenant isolatiion needs to be considered here too","commit_id":"0b720f2964c4969658fdd5c808ed87c33fca01d9"}]}
