)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bca4aa0c1d432b04bfeb4526f78400a14243782c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"it in every test."},{"line_number":12,"context_line":"2.Removing \"setup_network_and_server\" from base.py, as it is not"},{"line_number":13,"context_line":"needed anymore."},{"line_number":14,"context_line":"3.Changing all the tests in scenario accroding to those changes."},{"line_number":15,"context_line":"4.Adding \"create_server_with_fip\" to base and using it in"},{"line_number":16,"context_line":"test_basic, test_dvr, test_qos."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9a30ddce_d09ece61","line":14,"range":{"start_line":14,"start_character":37,"end_line":14,"end_character":46},"updated":"2017-03-13 09:36:14.000000000","message":"according","commit_id":"b4e89bfacbdb67058e2a5c095ab144f204eeeb52"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bca4aa0c1d432b04bfeb4526f78400a14243782c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"2.Removing \"setup_network_and_server\" from base.py, as it is not"},{"line_number":13,"context_line":"needed anymore."},{"line_number":14,"context_line":"3.Changing all the tests in scenario accroding to those changes."},{"line_number":15,"context_line":"4.Adding \"create_server_with_fip\" to base and using it in"},{"line_number":16,"context_line":"test_basic, test_dvr, test_qos."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I03cc98b15f8f1ec3a5fa88fd1a785b7a9e24cb58"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9a30ddce_30500a32","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":31},"updated":"2017-03-13 09:36:14.000000000","message":"This would be worth a separate patch.","commit_id":"b4e89bfacbdb67058e2a5c095ab144f204eeeb52"}],"neutron/tests/tempest/scenario/base.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"0041d8367f06b3f1d203745e8019afb0d9390b46","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        cls.keypair \u003d cls.create_keypair()"},{"line_number":52,"context_line":"        cls.create_loginable_secgroup_rule("},{"line_number":53,"context_line":"            secgroup_id\u003dcls.secgroup[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":54,"context_line":"#        cls.server \u003d cls.create_server("},{"line_number":55,"context_line":"#            flavor_ref\u003dCONF.compute.flavor_ref,"},{"line_number":56,"context_line":"#            image_ref\u003dCONF.compute.image_ref,"},{"line_number":57,"context_line":"#            key_name\u003dcls.keypair[\u0027name\u0027],"},{"line_number":58,"context_line":"#            networks\u003d[{\u0027uuid\u0027: cls.network[\u0027id\u0027]}],"},{"line_number":59,"context_line":"#            security_groups\u003d[{\u0027name\u0027: secgroup[\u0027security_group\u0027][\u0027name\u0027]}])"},{"line_number":60,"context_line":"#        waiters.wait_for_server_status(cls.manager.servers_client,"},{"line_number":61,"context_line":"#                                       cls.server[\u0027server\u0027][\u0027id\u0027],"},{"line_number":62,"context_line":"#                                       constants.SERVER_STATUS_ACTIVE)"},{"line_number":63,"context_line":"#        port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":64,"context_line":"#                                     device_id\u003dcls.server["},{"line_number":65,"context_line":"#                                          \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":66,"context_line":"#        cls.fip \u003d cls.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @classmethod"},{"line_number":69,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_4a742f67","line":66,"range":{"start_line":54,"start_character":0,"end_line":66,"end_character":66},"updated":"2017-02-14 13:59:11.000000000","message":"Anyway, what do you do?","commit_id":"152679ab1a4ba94a391db59d75938e7cb2ca028e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c43d0796416ba119a6e91bd6dedbdb4971db03db","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            cls.network \u003d cls.create_network()"},{"line_number":43,"context_line":"            LOG.debug(\"Created network %s\", cls.network[\u0027name\u0027])"},{"line_number":44,"context_line":"        if \u0027subnet\u0027 in args:"},{"line_number":45,"context_line":"            cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":46,"context_line":"            LOG.debug(\"Created subnet %s\", cls.subnet[\u0027id\u0027])"},{"line_number":47,"context_line":"        if \u0027securitygroup\u0027 in args:"},{"line_number":48,"context_line":"            cls.secgroup \u003d cls.manager.network_client.create_security_group("}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_f4a556b5","line":45,"updated":"2017-02-28 22:16:40.000000000","message":"What happens if caller didn\u0027t specify \u0027network\u0027 in args?","commit_id":"47c776efbbf7ed21db3a59c9a6a3d9acf1d5f0a6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c43d0796416ba119a6e91bd6dedbdb4971db03db","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                secgroup_id\u003dcls.secgroup[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":55,"context_line":"        if \u0027router\u0027 in args:"},{"line_number":56,"context_line":"            cls.router \u003d cls.create_router_by_client()"},{"line_number":57,"context_line":"            cls.create_router_interface(cls.router[\u0027id\u0027], cls.subnet[\u0027id\u0027])"},{"line_number":58,"context_line":"        if \u0027keypair\u0027 in args:"},{"line_number":59,"context_line":"            cls.keypair \u003d cls.create_keypair()"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_7479662f","line":57,"updated":"2017-02-28 22:16:40.000000000","message":"What happens is caller didn\u0027t specify \u0027subnet\u0027 in args?","commit_id":"47c776efbbf7ed21db3a59c9a6a3d9acf1d5f0a6"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a5bde194e815c63b3909adcff1f5fd140eac9e3d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            cls.network \u003d cls.create_network()"},{"line_number":43,"context_line":"            LOG.debug(\"Created network %s\", cls.network[\u0027name\u0027])"},{"line_number":44,"context_line":"        if \u0027subnet\u0027 in args:"},{"line_number":45,"context_line":"            cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":46,"context_line":"            LOG.debug(\"Created subnet %s\", cls.subnet[\u0027id\u0027])"},{"line_number":47,"context_line":"        if \u0027securitygroup\u0027 in args:"},{"line_number":48,"context_line":"            cls.secgroup \u003d cls.manager.network_client.create_security_group("}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_bc93d54e","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":55},"updated":"2017-03-07 01:48:21.000000000","message":"This needs a network as precondition for subnet so it should be included in if-statement of \u0027network\u0027 because it may happen error when \u0027subnet\u0027 as args is passed without \u0027network\u0027","commit_id":"815d2555872b493a792bf0c3664836a617306e2c"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a5bde194e815c63b3909adcff1f5fd140eac9e3d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                secgroup_id\u003dcls.secgroup[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":55,"context_line":"        if \u0027router\u0027 in args:"},{"line_number":56,"context_line":"            cls.router \u003d cls.create_router_by_client()"},{"line_number":57,"context_line":"            cls.create_router_interface(cls.router[\u0027id\u0027], cls.subnet[\u0027id\u0027])"},{"line_number":58,"context_line":"        if \u0027keypair\u0027 in args:"},{"line_number":59,"context_line":"            cls.keypair \u003d cls.create_keypair()"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_dcafa97b","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":75},"updated":"2017-03-07 01:48:21.000000000","message":"This needs a subnet as precondition for router. Could you consider togetter with my comment above.","commit_id":"815d2555872b493a792bf0c3664836a617306e2c"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a5bde194e815c63b3909adcff1f5fd140eac9e3d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        waiters.wait_for_server_status(cls.manager.servers_client,"},{"line_number":126,"context_line":"                                       cls.server[\u0027id\u0027],"},{"line_number":127,"context_line":"                                       constants.SERVER_STATUS_ACTIVE)"},{"line_number":128,"context_line":"        port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":129,"context_line":"                                     device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":130,"context_line":"        cls.fip \u003d cls.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":131,"context_line":"        return cls.fip, cls.server"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_fc5e2d75","line":129,"range":{"start_line":128,"start_character":8,"end_line":129,"end_character":76},"updated":"2017-03-07 01:48:21.000000000","message":"If port is not None, we don\u0027t need do, right? That is maybe the following?\n\n if port is None:\n     port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],\n                                  device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]","commit_id":"815d2555872b493a792bf0c3664836a617306e2c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bca4aa0c1d432b04bfeb4526f78400a14243782c","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class BaseTempestTestCase(base_api.BaseNetworkTest):"},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def resource_setup(cls, *args):"},{"line_number":37,"context_line":"        super(BaseTempestTestCase, cls).resource_setup()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.servers \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_30c2cae9","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":33},"updated":"2017-03-13 09:36:14.000000000","message":"I don\u0027t like this semantics much. It\u0027s better to be more explicit about what your methods consume.\n\nHow about having a configuration_list and configuration_map where this resource_setup() would iterate over passed configuration_list and pick a method from configuration_map and execute.\n\nExample:\n\nNETWORK_RESOURCE \u003d \u0027network\u0027\n\nclass BaseTempestCase(...):\n\n CONFIGURATION_RESOURCE_MAP \u003d {\n     NETWORK_RESOURCE: BaseTempestCase.setup_network,\n     ...,\n }\n\n CONFIGURE_RESOURCES \u003d [\u0027network\u0027, ...]\n\n def resource_setup(cls):\n     for resource in cls.CONFIGURE_RESOURCES:\n         try:\n             cls.CONFIGURATION_RESOURCE_MAP[resource]()\n         except KeyError:\n             LOG.error(\u0027No resource %s found\u0027, resource)\n\n def setup_network(cls):\n     cls.network \u003d cls.create_network()\n     LOG.debug(...)\n\nWith the way above you won\u0027t need to override resource_setup() every time you want a different resources to be created.","commit_id":"b4e89bfacbdb67058e2a5c095ab144f204eeeb52"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bca4aa0c1d432b04bfeb4526f78400a14243782c","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def create_server_with_fip(cls, port\u003dNone):"},{"line_number":113,"context_line":"        if port is None:"},{"line_number":114,"context_line":"            network_dict \u003d [{\u0027uuid\u0027: cls.network[\u0027id\u0027]}]"},{"line_number":115,"context_line":"            security_groups_dict \u003d [{\u0027name\u0027: cls.security_groups[0][\u0027name\u0027]}]"},{"line_number":116,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_503adee7","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":24},"updated":"2017-03-13 09:36:14.000000000","message":"Nit: More idiomatic is:\n\n if port:\n     \u003cuse_port\u003e\n else:\n     \u003cuse network\u003e","commit_id":"b4e89bfacbdb67058e2a5c095ab144f204eeeb52"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bca4aa0c1d432b04bfeb4526f78400a14243782c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                                       cls.server[\u0027id\u0027],"},{"line_number":128,"context_line":"                                       constants.SERVER_STATUS_ACTIVE)"},{"line_number":129,"context_line":"        vm_port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":130,"context_line":"                                     device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":131,"context_line":"        cls.fip \u003d cls.create_and_associate_floatingip(vm_port[\u0027id\u0027])"},{"line_number":132,"context_line":"        return cls.fip, cls.server"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_101b0682","line":130,"updated":"2017-03-13 09:36:14.000000000","message":"Indentation, why it\u0027s not caught by pep8? :-/","commit_id":"b4e89bfacbdb67058e2a5c095ab144f204eeeb52"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"64c31d22f60ccd6560ca78c9c81d7bcf52483b3e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def create_server_with_fip(cls, port\u003dNone):"},{"line_number":113,"context_line":"        if port:"},{"line_number":114,"context_line":"            network_dict \u003d [{\u0027port\u0027: port[\u0027id\u0027]}]"},{"line_number":115,"context_line":"            security_groups_dict \u003d [{\u0027name\u0027: str(port[\u0027security_groups\u0027][0])}]"},{"line_number":116,"context_line":"        else:"},{"line_number":117,"context_line":"            network_dict \u003d [{\u0027uuid\u0027: cls.network[\u0027id\u0027]}]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a30ddce_ae9e5660","line":114,"range":{"start_line":114,"start_character":12,"end_line":114,"end_character":25},"updated":"2017-03-13 12:01:35.000000000","message":"this is a list []? so why are we calling it a dict? you could add a s and it will be kosher\nsame for all below","commit_id":"71fbfd2e95cbde7af83f67d2acdfaddc4962e1d2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"64c31d22f60ccd6560ca78c9c81d7bcf52483b3e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                                       cls.server[\u0027id\u0027],"},{"line_number":128,"context_line":"                                       constants.SERVER_STATUS_ACTIVE)"},{"line_number":129,"context_line":"        vm_port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":130,"context_line":"                                     device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":131,"context_line":"        cls.fip \u003d cls.create_and_associate_floatingip(vm_port[\u0027id\u0027])"},{"line_number":132,"context_line":"        return cls.fip, cls.server"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a30ddce_ce70ea42","line":130,"updated":"2017-03-13 12:01:35.000000000","message":"dodgy alignment","commit_id":"71fbfd2e95cbde7af83f67d2acdfaddc4962e1d2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6383423c38940d55875441e4130075ba5bfb457","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        vm_port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":130,"context_line":"                                     device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":131,"context_line":"        cls.fip \u003d cls.create_and_associate_floatingip(vm_port[\u0027id\u0027])"},{"line_number":132,"context_line":"        return cls.fip, cls.server"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @classmethod"},{"line_number":135,"context_line":"    def create_keypair(cls, client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a30ddce_163a14e7","line":132,"updated":"2017-03-13 13:54:02.000000000","message":"Be careful! In https://review.openstack.org/#/c/433637/14/neutron/tests/tempest/scenario/test_trunk.py, line 57, you are expecting (in this order):\n   server, fip \u003d self._create_server_with_fip(port[\u0027id\u0027])","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"ee92ea0deb137b21b97876881494d715325b9f74","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        vm_port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":130,"context_line":"                                     device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":131,"context_line":"        cls.fip \u003d cls.create_and_associate_floatingip(vm_port[\u0027id\u0027])"},{"line_number":132,"context_line":"        return cls.fip, cls.server"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @classmethod"},{"line_number":135,"context_line":"    def create_keypair(cls, client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a30ddce_613d4c2a","line":132,"in_reply_to":"9a30ddce_163a14e7","updated":"2017-03-14 08:58:48.000000000","message":"it is not the same function - create_server_with_fip VS _create_server_with_fip","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8f026b35eae3696769ca0bbe616168605ede0983","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        vm_port \u003d cls.client.list_ports(network_id\u003dcls.network[\u0027id\u0027],"},{"line_number":130,"context_line":"                                     device_id\u003dcls.server[\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":131,"context_line":"        cls.fip \u003d cls.create_and_associate_floatingip(vm_port[\u0027id\u0027])"},{"line_number":132,"context_line":"        return cls.fip, cls.server"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @classmethod"},{"line_number":135,"context_line":"    def create_keypair(cls, client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a22e58a_56f9d4c7","line":132,"in_reply_to":"9a30ddce_613d4c2a","updated":"2017-03-14 12:33:53.000000000","message":"Yes, sorry. You are right.","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def resource_setup(cls):"},{"line_number":48,"context_line":"        super(BaseTempestTestCase, cls).resource_setup()"},{"line_number":49,"context_line":"        for resource in cls.CONFIGURE_RESOURCES:"},{"line_number":50,"context_line":"            try:"},{"line_number":51,"context_line":"                cls.CONFIGURATION_RESOURCE_MAP[resource]()"},{"line_number":52,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_a7ed6b8c","line":49,"range":{"start_line":49,"start_character":9,"end_line":49,"end_character":48},"updated":"2017-09-26 19:48:42.000000000","message":"is it possible to make the base class smart enough to apply the right order to operations independent of whether the subclass put it right? I would love if [network, subnet] would work same as [subnet, network]. (AFAIU the latter will fail with the current implementation.)","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"}],"neutron/tests/tempest/scenario/test_basic.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c43d0796416ba119a6e91bd6dedbdb4971db03db","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        super(NetworkBasicTest, cls).resource_setup(\u0027network\u0027, \u0027subnet\u0027, \u0027keypair\u0027, \u0027router\u0027, \u0027securitygroup\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def _create_server(self, create_floating_ip\u003dTrue, network\u003dNone):"},{"line_number":39,"context_line":"        if network is None:"},{"line_number":40,"context_line":"            network \u003d self.network"},{"line_number":41,"context_line":"        self.port \u003d self.create_port(self.network, security_groups\u003d[self.secgroup[\u0027security_group\u0027][\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_343a8e37","line":38,"updated":"2017-02-28 22:16:40.000000000","message":"You are repeating very similar versions of this method in the following place: https://review.openstack.org/#/c/433637/4/neutron/tests/tempest/scenario/test_dvr.py@62, https://review.openstack.org/#/c/433637/4/neutron/tests/tempest/scenario/test_qos.py@92.\n\nSince all these classes inherit from https://review.openstack.org/#/c/433637/4/neutron/tests/tempest/scenario/base.py@34, maybe you should move it there, after some generalization work","commit_id":"47c776efbbf7ed21db3a59c9a6a3d9acf1d5f0a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                           \u0027securitygroup\u0027]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def resource_setup(cls):"},{"line_number":35,"context_line":"        super(NetworkBasicTest, cls).resource_setup()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @decorators.idempotent_id(\u0027de07fe0a-e955-449e-b48b-8641c14cd52e\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_07631f44","line":34,"updated":"2017-09-26 19:48:42.000000000","message":"seems unneeded","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"}],"neutron/tests/tempest/scenario/test_dvr.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c43d0796416ba119a6e91bd6dedbdb4971db03db","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            port_id, admin_state_up\u003dFalse)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @classmethod"},{"line_number":62,"context_line":"    def _create_server(self, create_floating_ip\u003dTrue, network\u003dNone):"},{"line_number":63,"context_line":"        if network is None:"},{"line_number":64,"context_line":"            network \u003d self.network"},{"line_number":65,"context_line":"        self.port \u003d self.create_port(self.network, security_groups\u003d[self.secgroup[\u0027security_group\u0027][\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_f464764a","line":62,"updated":"2017-02-28 22:16:40.000000000","message":"Please see my comment to https://review.openstack.org/#/c/433637/4/neutron/tests/tempest/scenario/test_basic.py@38","commit_id":"47c776efbbf7ed21db3a59c9a6a3d9acf1d5f0a6"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a5bde194e815c63b3909adcff1f5fd140eac9e3d","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        The test is done by putting the SNAT port down on controller node."},{"line_number":65,"context_line":"        \"\"\""},{"line_number":66,"context_line":"        self.router \u003d self.create_router_by_client("},{"line_number":67,"context_line":"            distributed\u003dTrue, tenant_id\u003dself.client.tenant_id, is_admin\u003dTrue)"},{"line_number":68,"context_line":"        self.create_router_interface(self.router[\u0027id\u0027], self.subnet[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.create_server_with_fip()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_3c2285ba","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":13},"updated":"2017-03-07 01:48:21.000000000","message":"just question: Why do we need \"self.\" here?","commit_id":"815d2555872b493a792bf0c3664836a617306e2c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6383423c38940d55875441e4130075ba5bfb457","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.create_router_interface(router[\u0027id\u0027], self.subnet[\u0027id\u0027])"},{"line_number":70,"context_line":"        self.create_server_with_fip()"},{"line_number":71,"context_line":"        self._check_snat_port_connectivity()"},{"line_number":72,"context_line":"        self.client.delete_floatingip(self.floating_ips[0][\u0027id\u0027])"},{"line_number":73,"context_line":"        self.floating_ips.remove(self.floating_ips[0])"},{"line_number":74,"context_line":"        self.manager.network_client.remove_router_interface_with_subnet_id("},{"line_number":75,"context_line":"                                                          router[\u0027id\u0027],"},{"line_number":76,"context_line":"                                                          self.subnet[\u0027id\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @decorators.idempotent_id(\u002723724222-483a-4129-bc15-7a9278f3828b\u0027)"},{"line_number":79,"context_line":"    def test_update_centralized_router_to_dvr(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a30ddce_56d1ec21","line":76,"range":{"start_line":72,"start_character":8,"end_line":76,"end_character":76},"updated":"2017-03-13 13:54:02.000000000","message":"People more expert in testing could confirm this: if you need to make some actions after the checks (those checks can raise an exception), should be better to group this in a cleanup function.\n\nMake a search in the neutron.tests directory.","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"ee92ea0deb137b21b97876881494d715325b9f74","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.create_router_interface(router[\u0027id\u0027], self.subnet[\u0027id\u0027])"},{"line_number":70,"context_line":"        self.create_server_with_fip()"},{"line_number":71,"context_line":"        self._check_snat_port_connectivity()"},{"line_number":72,"context_line":"        self.client.delete_floatingip(self.floating_ips[0][\u0027id\u0027])"},{"line_number":73,"context_line":"        self.floating_ips.remove(self.floating_ips[0])"},{"line_number":74,"context_line":"        self.manager.network_client.remove_router_interface_with_subnet_id("},{"line_number":75,"context_line":"                                                          router[\u0027id\u0027],"},{"line_number":76,"context_line":"                                                          self.subnet[\u0027id\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @decorators.idempotent_id(\u002723724222-483a-4129-bc15-7a9278f3828b\u0027)"},{"line_number":79,"context_line":"    def test_update_centralized_router_to_dvr(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a30ddce_7c1c0f6a","line":76,"range":{"start_line":72,"start_character":8,"end_line":76,"end_character":76},"in_reply_to":"9a30ddce_56d1ec21","updated":"2017-03-14 08:58:48.000000000","message":"We need this cleanup so the tests could run one after the other - during the writing I saw that the tests run well separately but when I run them in one run the second test router can not be assigned with external network because it is taken by the first test router- and we can not assign fip , result : Not good . So with that action I release the external network GW address for the second test router . This is not for cleanup purposes.","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8f026b35eae3696769ca0bbe616168605ede0983","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.create_router_interface(router[\u0027id\u0027], self.subnet[\u0027id\u0027])"},{"line_number":70,"context_line":"        self.create_server_with_fip()"},{"line_number":71,"context_line":"        self._check_snat_port_connectivity()"},{"line_number":72,"context_line":"        self.client.delete_floatingip(self.floating_ips[0][\u0027id\u0027])"},{"line_number":73,"context_line":"        self.floating_ips.remove(self.floating_ips[0])"},{"line_number":74,"context_line":"        self.manager.network_client.remove_router_interface_with_subnet_id("},{"line_number":75,"context_line":"                                                          router[\u0027id\u0027],"},{"line_number":76,"context_line":"                                                          self.subnet[\u0027id\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @decorators.idempotent_id(\u002723724222-483a-4129-bc15-7a9278f3828b\u0027)"},{"line_number":79,"context_line":"    def test_update_centralized_router_to_dvr(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a22e58a_56af14e3","line":76,"range":{"start_line":72,"start_character":8,"end_line":76,"end_character":76},"in_reply_to":"9a30ddce_7c1c0f6a","updated":"2017-03-14 12:33:53.000000000","message":"I know. But if the test fail in self._check_snat_port_connectivity(), the function will exit without the cleanup calls.\n\nI don\u0027t say not to make this cleanup, I\u0027m saying to call this using a self.addCleanup() function. This will ensure this commands will be always called at the end of the function.","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6383423c38940d55875441e4130075ba5bfb457","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        self.admin_manager.network_client.update_router("},{"line_number":95,"context_line":"            router_id\u003drouter[\u0027id\u0027], admin_state_up\u003dTrue)"},{"line_number":96,"context_line":"        self._check_snat_port_connectivity()"},{"line_number":97,"context_line":"        self.client.delete_floatingip(self.floating_ips[0][\u0027id\u0027])"},{"line_number":98,"context_line":"        self.floating_ips.remove(self.floating_ips[0])"},{"line_number":99,"context_line":"        self.manager.network_client.remove_router_interface_with_subnet_id("},{"line_number":100,"context_line":"                                                          router[\u0027id\u0027],"},{"line_number":101,"context_line":"                                                          self.subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a30ddce_96c7e462","line":101,"range":{"start_line":97,"start_character":8,"end_line":101,"end_character":76},"updated":"2017-03-13 13:54:02.000000000","message":"ditto","commit_id":"050ee896df84c5ab513ade5cabedfb1870655f47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    CONFIGURE_RESOURCES \u003d [\u0027network\u0027, \u0027subnet\u0027, \u0027keypair\u0027, \u0027securitygroup\u0027]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def resource_setup(cls):"},{"line_number":32,"context_line":"        super(NetworkDvrTest, cls).resource_setup()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_67ff7334","line":31,"updated":"2017-09-26 19:48:42.000000000","message":"not needed?","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            router_id\u003drouter[\u0027id\u0027], distributed\u003dTrue)"},{"line_number":85,"context_line":"        self.admin_manager.network_client.update_router("},{"line_number":86,"context_line":"            router_id\u003drouter[\u0027id\u0027], admin_state_up\u003dTrue)"},{"line_number":87,"context_line":"        self._check_snat_port_connectivity()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_c79f4701","line":87,"updated":"2017-09-26 19:48:42.000000000","message":"super-nit: unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"}],"neutron/tests/tempest/scenario/test_floatingip.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027f18f0090-3289-4783-b956-a0f8ac511e8b\u0027)"},{"line_number":141,"context_line":"    def test_east_west(self):"},{"line_number":142,"context_line":"        self._test_east_west()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_07967ff1","line":142,"updated":"2017-09-26 19:48:42.000000000","message":"super-nit: unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"}],"neutron/tests/tempest/scenario/test_qos.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c43d0796416ba119a6e91bd6dedbdb4971db03db","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        super(QoSTest, cls).resource_setup(\u0027network\u0027,\u0027subnet\u0027,\u0027router\u0027,\u0027securitygroup\u0027,\u0027keypair\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def _create_server(self, create_floating_ip\u003dTrue, network\u003dNone):"},{"line_number":93,"context_line":"        if network is None:"},{"line_number":94,"context_line":"            network \u003d self.network"},{"line_number":95,"context_line":"        self.port \u003d self.create_port(self.network, security_groups\u003d[self.secgroup[\u0027security_group\u0027][\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_54546253","line":92,"updated":"2017-02-28 22:16:40.000000000","message":"Please see my comment to https://review.openstack.org/#/c/433637/4/neutron/tests/tempest/scenario/test_basic.py@38","commit_id":"47c776efbbf7ed21db3a59c9a6a3d9acf1d5f0a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def _create_file_for_bw_tests(self, ssh_client):"},{"line_number":94,"context_line":"        cmd \u003d (\"(dd if\u003d/dev/zero bs\u003d%(bs)d count\u003d%(count)d of\u003d%(file_path)s) \""},{"line_number":95,"context_line":"               % {\u0027bs\u0027: QoSTest.BS, \u0027count\u0027: QoSTest.COUNT,"},{"line_number":96,"context_line":"                  \u0027file_path\u0027: QoSTest.FILE_PATH})"},{"line_number":97,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":98,"context_line":"        cmd \u003d \"stat -c %%s %s\" % QoSTest.FILE_PATH"},{"line_number":99,"context_line":"        filesize \u003d ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_87b26f93","line":96,"updated":"2017-09-26 19:48:42.000000000","message":"unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        except exceptions.SSHExecCommandFailed:"},{"line_number":109,"context_line":"            pass"},{"line_number":110,"context_line":"        cmd \u003d (\"(nc -ll -p %(port)d \u003c %(file_path)s \u003e /dev/null \u0026)\" % {"},{"line_number":111,"context_line":"            \u0027port\u0027: port, \u0027file_path\u0027: QoSTest.FILE_PATH})"},{"line_number":112,"context_line":"        ssh_client.exec_command(cmd)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        start_time \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_c7b86777","line":111,"updated":"2017-09-26 19:48:42.000000000","message":"unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":160,"context_line":"                                pkey\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":161,"context_line":"        policy \u003d self.admin_manager.network_client.create_qos_policy("},{"line_number":162,"context_line":"            name\u003d\u0027test-policy\u0027,"},{"line_number":163,"context_line":"            description\u003d\u0027test-qos-policy\u0027,"},{"line_number":164,"context_line":"            shared\u003dTrue)"},{"line_number":165,"context_line":"        policy_id \u003d policy[\u0027policy\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_07bf9f61","line":162,"updated":"2017-09-26 19:48:42.000000000","message":"unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            max_burst_kbps\u003dconstants.LIMIT_KILO_BITS_PER_SECOND)"},{"line_number":169,"context_line":"        port \u003d self.client.list_ports(network_id\u003dself.network[\u0027id\u0027],"},{"line_number":170,"context_line":"                                      device_id\u003dself.server["},{"line_number":171,"context_line":"                                          \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":172,"context_line":"        self.admin_manager.network_client.update_port(port[\u0027id\u0027],"},{"line_number":173,"context_line":"                                                      qos_policy_id\u003dpolicy_id)"},{"line_number":174,"context_line":"        self._create_file_for_bw_tests(ssh_client)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_278e1bd0","line":171,"updated":"2017-09-26 19:48:42.000000000","message":"unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            ssh_client,"},{"line_number":177,"context_line":"            self.fip[\u0027floating_ip_address\u0027],"},{"line_number":178,"context_line":"            port\u003dNC_PORT),"},{"line_number":179,"context_line":"                              timeout\u003d120,"},{"line_number":180,"context_line":"                              sleep\u003d1)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_479357fb","line":179,"updated":"2017-09-26 19:48:42.000000000","message":"unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"}],"neutron/tests/tempest/scenario/test_trunk.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4c1ee001264e502469a37cffa0661d407c7eb94","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            servers[0][\u0027ssh_client\u0027],"},{"line_number":255,"context_line":"            servers[1][\u0027subport\u0027][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":256,"context_line":"            should_succeed\u003dTrue"},{"line_number":257,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_27a73b52","line":257,"updated":"2017-09-26 19:48:42.000000000","message":"super-nit: unrelated change","commit_id":"a7524d2fb10fc973fb9ae2c2f5c4fd9952982320"}]}
