)]}'
{"tempest/api/network/base.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5863636b4c62441a95eaea82d321beabf5caa9a5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        for vpnservice in cls.vpnservices:"},{"line_number":69,"context_line":"            cls.client.delete_vpn_service(vpnservice[\u0027id\u0027])"},{"line_number":70,"context_line":"        for router in cls.routers:"},{"line_number":71,"context_line":"            (cls.client.remove_router_interface_with_subnet_id("},{"line_number":72,"context_line":"             router[\u0027id\u0027], cls.subnets[0][\u0027id\u0027]))"},{"line_number":73,"context_line":"            cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":74,"context_line":"        for health_monitor in cls.health_monitors:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FqCs%3D","line":71,"updated":"2013-09-23 09:41:19.000000000","message":"IHMO this line (L71) should be in a \n has_exception \u003d False \n # before all loop\n\n try:\n   \n expect Exception as exc:\n     LOG.exception(exc).\n     has_exception \u003d True\n\n .. # after all_loop\n if has_exception:\n    raise TearDownException()","commit_id":"a8f444d682a5cb3f9dbe5b39dd8622f38784995f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"42bfe2c4a69c5a8f35e2c87daffe6ad6a128fdee","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        for vpnservice in cls.vpnservices:"},{"line_number":69,"context_line":"            cls.client.delete_vpn_service(vpnservice[\u0027id\u0027])"},{"line_number":70,"context_line":"        for router in cls.routers:"},{"line_number":71,"context_line":"            (cls.client.remove_router_interface_with_subnet_id("},{"line_number":72,"context_line":"             router[\u0027id\u0027], cls.subnets[0][\u0027id\u0027]))"},{"line_number":73,"context_line":"            cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":74,"context_line":"        for health_monitor in cls.health_monitors:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fp7E%3D","line":71,"in_reply_to":"AAAAS3%2F%2FqCs%3D","updated":"2013-09-23 10:40:36.000000000","message":"will be done in next patch","commit_id":"a8f444d682a5cb3f9dbe5b39dd8622f38784995f"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"4e38ddde1e96a9092859df956c4cd50d1b9202b0","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        for router in cls.routers:"},{"line_number":80,"context_line":"            try:"},{"line_number":81,"context_line":"                (cls.client.remove_router_interface_with_subnet_id("},{"line_number":82,"context_line":"                 router[\u0027id\u0027], cls.subnets[0][\u0027id\u0027]))"},{"line_number":83,"context_line":"                cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":84,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2FmHA%3D","line":81,"updated":"2013-09-24 07:16:14.000000000","message":"The remove_router_interface_with_subnet_id can fail if it was not created or a test case removed by accident or becuse of system issues. The router should be tryed for deletion in this case as well.\n\nCan you use 2 try block for each statement ?","commit_id":"12300059ffdce7c5a5379e7b085b069dbbb306b9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d990a6c02435f95ccedf897857e3e0a2dd551689","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                has_exception \u003d True"},{"line_number":134,"context_line":"        super(BaseNetworkTest, cls).tearDownClass()"},{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2Fj%2B8%3D","line":136,"updated":"2013-09-24 17:03:36.000000000","message":"In tempest.api.compute.base.BaseComputeTest.tearDownClass(), we do not raise an exception if the deletion of a created resource fails. I don\u0027t think we should here either...","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                has_exception \u003d True"},{"line_number":134,"context_line":"        super(BaseNetworkTest, cls).tearDownClass()"},{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiLA%3D","line":136,"in_reply_to":"AAAAS3%2F%2Fj%2B8%3D","updated":"2013-09-25 05:41:49.000000000","message":"If any of deletion is getting failed then there should be a exception handling for this.\nDue to this basic reason I have added code like this.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"a3d85f8ace16a459324532a9aa49bae3f1f33fd3","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                has_exception \u003d True"},{"line_number":134,"context_line":"        super(BaseNetworkTest, cls).tearDownClass()"},{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiHI%3D","line":136,"in_reply_to":"AAAAS3%2F%2Fj%2B8%3D","updated":"2013-09-25 05:24:33.000000000","message":"To be honest similar logic should be added to all teardown related logic,\nand the base test case class should do additional validation for resource leaking.\n\nSimilar logic can be moved to another place when/if we stop using the tearDownClass method.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ebd7f16c3457bc54aff2f0038fbd2f44f9f834b4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"},{"line_number":140,"context_line":"        \"\"\"Wrapper utility that returns a test network.\"\"\""},{"line_number":141,"context_line":"        network_name \u003d network_name or rand_name(\u0027test-network-\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2Fj3g%3D","line":138,"updated":"2013-09-24 19:35:08.000000000","message":"I think we should have exception handling. In any operation if it fails then we should catch the exception and log the necessary debug information. I think this code looks fine for me.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"},{"line_number":140,"context_line":"        \"\"\"Wrapper utility that returns a test network.\"\"\""},{"line_number":141,"context_line":"        network_name \u003d network_name or rand_name(\u0027test-network-\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiK0%3D","line":138,"in_reply_to":"AAAAS3%2F%2Fj3g%3D","updated":"2013-09-25 05:41:49.000000000","message":"Agreed.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d990a6c02435f95ccedf897857e3e0a2dd551689","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        resp, body \u003d cls.client.create_router(rand_name(\"router-\"))"},{"line_number":225,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":226,"context_line":"        cls.routers.append(router)"},{"line_number":227,"context_line":"        # Add router interafce with subnet id"},{"line_number":228,"context_line":"        resp, interface \u003d (cls.client.add_router_interface_with_subnet_id("},{"line_number":229,"context_line":"                           router[\u0027id\u0027], subnet_id))"},{"line_number":230,"context_line":"        return interface"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FkCs%3D","line":227,"updated":"2013-09-24 17:03:36.000000000","message":"s/interafce/interface","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        resp, body \u003d cls.client.create_router(rand_name(\"router-\"))"},{"line_number":225,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":226,"context_line":"        cls.routers.append(router)"},{"line_number":227,"context_line":"        # Add router interafce with subnet id"},{"line_number":228,"context_line":"        resp, interface \u003d (cls.client.add_router_interface_with_subnet_id("},{"line_number":229,"context_line":"                           router[\u0027id\u0027], subnet_id))"},{"line_number":230,"context_line":"        return interface"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiKw%3D","line":227,"in_reply_to":"AAAAS3%2F%2FkCs%3D","updated":"2013-09-25 05:41:49.000000000","message":"Done","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d990a6c02435f95ccedf897857e3e0a2dd551689","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        cls.routers.append(router)"},{"line_number":227,"context_line":"        # Add router interafce with subnet id"},{"line_number":228,"context_line":"        resp, interface \u003d (cls.client.add_router_interface_with_subnet_id("},{"line_number":229,"context_line":"                           router[\u0027id\u0027], subnet_id))"},{"line_number":230,"context_line":"        return interface"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FkCg%3D","line":229,"updated":"2013-09-24 17:03:36.000000000","message":"You don\u0027t need the outer enclosing parentheses above.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        cls.routers.append(router)"},{"line_number":227,"context_line":"        # Add router interafce with subnet id"},{"line_number":228,"context_line":"        resp, interface \u003d (cls.client.add_router_interface_with_subnet_id("},{"line_number":229,"context_line":"                           router[\u0027id\u0027], subnet_id))"},{"line_number":230,"context_line":"        return interface"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiFg%3D","line":229,"in_reply_to":"AAAAS3%2F%2FkCg%3D","updated":"2013-09-25 05:41:49.000000000","message":"Done","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d990a6c02435f95ccedf897857e3e0a2dd551689","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                      subnet_id,"},{"line_number":237,"context_line":"                      router_id,"},{"line_number":238,"context_line":"                      admin_state_up\u003dTrue,"},{"line_number":239,"context_line":"                      name\u003drand_name(\"vpnservice-\")))"},{"line_number":240,"context_line":"        vpnservice \u003d body[\u0027vpnservice\u0027]"},{"line_number":241,"context_line":"        cls.vpnservices.append(vpnservice)"},{"line_number":242,"context_line":"        return vpnservice"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FkCU%3D","line":239,"updated":"2013-09-24 17:03:36.000000000","message":"You don\u0027t need the outer enclosing parentheses above.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                      subnet_id,"},{"line_number":237,"context_line":"                      router_id,"},{"line_number":238,"context_line":"                      admin_state_up\u003dTrue,"},{"line_number":239,"context_line":"                      name\u003drand_name(\"vpnservice-\")))"},{"line_number":240,"context_line":"        vpnservice \u003d body[\u0027vpnservice\u0027]"},{"line_number":241,"context_line":"        cls.vpnservices.append(vpnservice)"},{"line_number":242,"context_line":"        return vpnservice"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiFc%3D","line":239,"in_reply_to":"AAAAS3%2F%2FkCU%3D","updated":"2013-09-25 05:41:49.000000000","message":"Done","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for router, subnet in zip(cls.routers, cls.subnets):"},{"line_number":80,"context_line":"            try:"},{"line_number":81,"context_line":"                (cls.client.remove_router_interface_with_subnet_id("},{"line_number":82,"context_line":"                 router[\u0027id\u0027], subnet[\u0027id\u0027]))"},{"line_number":83,"context_line":"            except Exception as exc:"},{"line_number":84,"context_line":"                LOG.exception(exc)"},{"line_number":85,"context_line":"                has_exception \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgT0%3D","line":82,"updated":"2013-09-25 15:39:25.000000000","message":"Is it ok to assume that the i-th subnet in the class is conenct to the i-th router?","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"db5a4c3c7483ac3eee350e8c17b51dac1b65db83","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for router, subnet in zip(cls.routers, cls.subnets):"},{"line_number":80,"context_line":"            try:"},{"line_number":81,"context_line":"                (cls.client.remove_router_interface_with_subnet_id("},{"line_number":82,"context_line":"                 router[\u0027id\u0027], subnet[\u0027id\u0027]))"},{"line_number":83,"context_line":"            except Exception as exc:"},{"line_number":84,"context_line":"                LOG.exception(exc)"},{"line_number":85,"context_line":"                has_exception \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgJc%3D","line":82,"in_reply_to":"AAAAS3%2F%2FgT0%3D","updated":"2013-09-26 06:58:44.000000000","message":"I am implementing a new technique to resolve such problems in next patch.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                LOG.exception(exc)"},{"line_number":85,"context_line":"                has_exception \u003d True"},{"line_number":86,"context_line":"            try:"},{"line_number":87,"context_line":"                cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":88,"context_line":"            except Exception as exc:"},{"line_number":89,"context_line":"                LOG.exception(exc)"},{"line_number":90,"context_line":"                has_exception \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgTA%3D","line":87,"updated":"2013-09-25 15:39:25.000000000","message":"you would hardly be able to delete a router if a subnet connected to it failed to delete, or am I reading this patch in the wrong way?","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e45e714fc6af63033d672b7036a3b6e571d2ab93","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                LOG.exception(exc)"},{"line_number":85,"context_line":"                has_exception \u003d True"},{"line_number":86,"context_line":"            try:"},{"line_number":87,"context_line":"                cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":88,"context_line":"            except Exception as exc:"},{"line_number":89,"context_line":"                LOG.exception(exc)"},{"line_number":90,"context_line":"                has_exception \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2Fd7Q%3D","line":87,"in_reply_to":"AAAAS3%2F%2FgHY%3D","updated":"2013-09-26 08:32:54.000000000","message":"The point of my comment was that you are trying to remove the router even if removing the inferface failed.\nThe try block at line 86 is executed anyway.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                LOG.exception(exc)"},{"line_number":85,"context_line":"                has_exception \u003d True"},{"line_number":86,"context_line":"            try:"},{"line_number":87,"context_line":"                cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":88,"context_line":"            except Exception as exc:"},{"line_number":89,"context_line":"                LOG.exception(exc)"},{"line_number":90,"context_line":"                has_exception \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgHY%3D","line":87,"in_reply_to":"AAAAS3%2F%2FgTA%3D","updated":"2013-09-26 04:12:39.000000000","message":"The idea is that - \nremove interface, \n1. if successful then delete router. \n2. if fails then raise exception. (and teardown will get fail as has_exception is True)\n3. if interface addition is failed, then also necessary to delete router. so try to remove interface (not known whether it is created or not), raise exception and delete the router.\n\nThus I am thinking it is good at this point.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                has_exception \u003d True"},{"line_number":134,"context_line":"        super(BaseNetworkTest, cls).tearDownClass()"},{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgTU%3D","line":136,"updated":"2013-09-25 15:39:25.000000000","message":"it seems that the goal of this change is to remove as much object as possible even in presence of exceptions.\n\nI have no objections with this, but perhaps tempest core reviewers might like to see this change in a separate patch. This is just my opinion and feel free to ignore it.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                has_exception \u003d True"},{"line_number":134,"context_line":"        super(BaseNetworkTest, cls).tearDownClass()"},{"line_number":135,"context_line":"        if has_exception:"},{"line_number":136,"context_line":"            raise exceptions.TearDownException()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @classmethod"},{"line_number":139,"context_line":"    def create_network(cls, network_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgHM%3D","line":136,"in_reply_to":"AAAAS3%2F%2FgTU%3D","updated":"2013-09-26 04:12:39.000000000","message":"I am ok with my code. still core reviewer can advise well.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        return health_monitor"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    @classmethod"},{"line_number":222,"context_line":"    def create_router(cls, subnet_id):"},{"line_number":223,"context_line":"        \"\"\"Wrapper utility that returns a test router.\"\"\""},{"line_number":224,"context_line":"        resp, body \u003d cls.client.create_router(rand_name(\"router-\"))"},{"line_number":225,"context_line":"        router \u003d body[\u0027router\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgUo%3D","line":222,"updated":"2013-09-25 15:39:25.000000000","message":"For consistency with other methods, It might be worth letting the user specify a router_name.\nI actually did something similar on a different patch: https://review.openstack.org/#/c/47553/1\n\nBut I will be more than happy to rebase on yours.\n\nAlso note that subnet_id is not used.\nI thought this kind of issue was caught by flake8","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e45e714fc6af63033d672b7036a3b6e571d2ab93","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        return health_monitor"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    @classmethod"},{"line_number":222,"context_line":"    def create_router(cls, subnet_id):"},{"line_number":223,"context_line":"        \"\"\"Wrapper utility that returns a test router.\"\"\""},{"line_number":224,"context_line":"        resp, body \u003d cls.client.create_router(rand_name(\"router-\"))"},{"line_number":225,"context_line":"        router \u003d body[\u0027router\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2Fd6M%3D","line":222,"in_reply_to":"AAAAS3%2F%2FgMo%3D","updated":"2013-09-26 08:32:54.000000000","message":"thanks. you can make it optional.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        return health_monitor"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    @classmethod"},{"line_number":222,"context_line":"    def create_router(cls, subnet_id):"},{"line_number":223,"context_line":"        \"\"\"Wrapper utility that returns a test router.\"\"\""},{"line_number":224,"context_line":"        resp, body \u003d cls.client.create_router(rand_name(\"router-\"))"},{"line_number":225,"context_line":"        router \u003d body[\u0027router\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgMo%3D","line":222,"in_reply_to":"AAAAS3%2F%2FgUo%3D","updated":"2013-09-26 04:12:39.000000000","message":"Salvatore Orlando: \nsubnet_id is not used, it is used here by mistake. I will remove it.\nAs for as name of the router - This is not necessary as I only need id parameter in future. But still it would be better to add name parameter. I will change it next patch.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5d6ab7e0b94a60aab93663e6cd80476f22f99226","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                LOG.exception(exc)"},{"line_number":88,"context_line":"                has_exception \u003d True"},{"line_number":89,"context_line":"            try:"},{"line_number":90,"context_line":"                cls.client.delete_router(router[\u0027id\u0027])"},{"line_number":91,"context_line":"            except Exception as exc:"},{"line_number":92,"context_line":"                LOG.exception(exc)"},{"line_number":93,"context_line":"                has_exception \u003d True"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FdQg%3D","line":90,"updated":"2013-09-26 12:25:28.000000000","message":"If you have a failure in interface removal this will necessary fail too; however it\u0027s no big deal.","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5d6ab7e0b94a60aab93663e6cd80476f22f99226","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @classmethod"},{"line_number":225,"context_line":"    def create_router(cls, router_name\u003dNone,"},{"line_number":226,"context_line":"                      external_network_id\u003dNone, enable_snat\u003dNone):"},{"line_number":227,"context_line":"        \"\"\"Wrapper utility that returns a router.\"\"\""},{"line_number":228,"context_line":"        ext_gw_info \u003d {}"},{"line_number":229,"context_line":"        if external_network_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FdQQ%3D","line":226,"updated":"2013-09-26 12:25:28.000000000","message":"thanks a lot","commit_id":"b1d11ba801511257428e31abd495171a19519b26"}],"tempest/api/network/test_VPNaaS_extensions.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5b9eb9bbceed3377afc89e309e2f92356debfd86","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        cls.vpnservice \u003d cls.create_vpnservice(cls.subnet[\u0027id\u0027],"},{"line_number":44,"context_line":"                                               cls.router[\u0027id\u0027])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":47,"context_line":"    def test_list_vpn_services(self):"},{"line_number":48,"context_line":"        # Verify the VPN service exists in the list of all VPN services"},{"line_number":49,"context_line":"        resp, body \u003d self.client.list_vpn_services()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fw5s%3D","line":46,"updated":"2013-09-19 18:16:54.000000000","message":"I think this attr should be removed for making the test not enforced by the gate, but I do not have enough experience to give advice on this front.","commit_id":"aa41559741aebed5330c8b0178a5a05fdcfd4c6d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"6037ef61c2b6e641a6101e506b47033bdc2a3a54","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        cls.vpnservice \u003d cls.create_vpnservice(cls.subnet[\u0027id\u0027],"},{"line_number":44,"context_line":"                                               cls.router[\u0027id\u0027])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":47,"context_line":"    def test_list_vpn_services(self):"},{"line_number":48,"context_line":"        # Verify the VPN service exists in the list of all VPN services"},{"line_number":49,"context_line":"        resp, body \u003d self.client.list_vpn_services()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FwdY%3D","line":46,"in_reply_to":"AAAAS3%2F%2Fw5s%3D","updated":"2013-09-19 20:34:01.000000000","message":"Perhaps I was wrong; I documented a little bit more - and it seems with the current infrastructure we\u0027ll first need to ensure the gate runs VPN - see here:\nhttp://lists.openstack.org/pipermail/openstack-qa/2013-May/000343.html\n\nYou could use skipIf to add these tests and have them always skipped on gate jobs, but I don\u0027t think that would be acceptable either.","commit_id":"aa41559741aebed5330c8b0178a5a05fdcfd4c6d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d091fa918c879786c11e874422f0319cbd7d7d12","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        cls.vpnservice \u003d cls.create_vpnservice(cls.subnet[\u0027id\u0027],"},{"line_number":44,"context_line":"                                               cls.router[\u0027id\u0027])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":47,"context_line":"    def test_list_vpn_services(self):"},{"line_number":48,"context_line":"        # Verify the VPN service exists in the list of all VPN services"},{"line_number":49,"context_line":"        resp, body \u003d self.client.list_vpn_services()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fvro%3D","line":46,"in_reply_to":"AAAAS3%2F%2FwdY%3D","updated":"2013-09-20 04:11:13.000000000","message":"To support vpn for gate, I have added in https://review.openstack.org/#/c/47335/.","commit_id":"aa41559741aebed5330c8b0178a5a05fdcfd4c6d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"0138e917a9241f36b9577fd64fdae4d36cc3794d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        # TODO(raies): implement logic to update  vpnservice"},{"line_number":65,"context_line":"        # VPNaaS client function to update is implemented."},{"line_number":66,"context_line":"        # But precondition is that current state of vpnservice"},{"line_number":67,"context_line":"        # should be \"ACTIVE\" not \"PENDING*\"  "},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # Verification of vpn service delete"},{"line_number":70,"context_line":"        resp, body \u003d self.client.delete_vpn_service(vpnservice[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fx%2Bs%3D","line":67,"updated":"2013-09-19 13:43:21.000000000","message":"please avid whitespaces","commit_id":"aa41559741aebed5330c8b0178a5a05fdcfd4c6d"}],"tempest/api/network/test_vpnaas_extensions.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ebd7f16c3457bc54aff2f0038fbd2f44f9f834b4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                                    name\u003dname,"},{"line_number":60,"context_line":"                                                    admin_state_up\u003dTrue)"},{"line_number":61,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":62,"context_line":"        vpnservice \u003d body[\u0027vpnservice\u0027]"},{"line_number":63,"context_line":"        # Verification of vpn service update"},{"line_number":64,"context_line":"        # TODO(raies): implement logic to update  vpnservice"},{"line_number":65,"context_line":"        # VPNaaS client function to update is implemented."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FjxI%3D","line":62,"updated":"2013-09-24 19:35:08.000000000","message":"Check whether VPN services are being created successfully by checking that in VPN list. Just checking the response is not enough.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                                    name\u003dname,"},{"line_number":60,"context_line":"                                                    admin_state_up\u003dTrue)"},{"line_number":61,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":62,"context_line":"        vpnservice \u003d body[\u0027vpnservice\u0027]"},{"line_number":63,"context_line":"        # Verification of vpn service update"},{"line_number":64,"context_line":"        # TODO(raies): implement logic to update  vpnservice"},{"line_number":65,"context_line":"        # VPNaaS client function to update is implemented."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiKQ%3D","line":62,"in_reply_to":"AAAAS3%2F%2FjxI%3D","updated":"2013-09-25 05:41:49.000000000","message":"Will be done in next patch.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ebd7f16c3457bc54aff2f0038fbd2f44f9f834b4","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # Verification of vpn service delete"},{"line_number":70,"context_line":"        resp, body \u003d self.client.delete_vpn_service(vpnservice[\u0027id\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":74,"context_line":"    def test_show_vpn_service(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2Fjw4%3D","line":71,"updated":"2013-09-24 19:35:08.000000000","message":"Same as above. verify whether VPN services have been deleted.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ea3d927ad94589d3be178487892fdcbaeaaac6b","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # Verification of vpn service delete"},{"line_number":70,"context_line":"        resp, body \u003d self.client.delete_vpn_service(vpnservice[\u0027id\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":74,"context_line":"    def test_show_vpn_service(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FiKM%3D","line":71,"in_reply_to":"AAAAS3%2F%2Fjw4%3D","updated":"2013-09-25 05:41:49.000000000","message":"Will be done in next patch.","commit_id":"7b87502e4aa3dd50bff1380d0d97f3c869531e81"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        cls.router \u003d cls.create_router(cls.subnet[\u0027id\u0027])"},{"line_number":43,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], cls.subnet[\u0027id\u0027])"},{"line_number":44,"context_line":"        cls.vpnservice \u003d cls.create_vpnservice(cls.subnet[\u0027id\u0027],"},{"line_number":45,"context_line":"                                               cls.router[\u0027id\u0027])"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":48,"context_line":"    def test_list_vpn_services(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgSE%3D","line":45,"updated":"2013-09-25 15:39:25.000000000","message":"I am not sure setupclass is the right place for creating this infrastructure.\nIt sounds a bit strange that then you have a test for creating a vpn service when you created already one in setupclass.\n\nBut if this is they way all tempest API tests operate, then I\u0027m fine with it.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        cls.router \u003d cls.create_router(cls.subnet[\u0027id\u0027])"},{"line_number":43,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], cls.subnet[\u0027id\u0027])"},{"line_number":44,"context_line":"        cls.vpnservice \u003d cls.create_vpnservice(cls.subnet[\u0027id\u0027],"},{"line_number":45,"context_line":"                                               cls.router[\u0027id\u0027])"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":48,"context_line":"    def test_list_vpn_services(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FecY%3D","line":45,"in_reply_to":"AAAAS3%2F%2FgSE%3D","updated":"2013-09-26 04:12:39.000000000","message":"Till now I have seen it as a trend to make environment(preconditions). these are useful in show/list related test cases.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":51,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":52,"context_line":"        vpnservices \u003d body[\u0027vpnservices\u0027]"},{"line_number":53,"context_line":"        self.assertIn(self.vpnservice[\u0027id\u0027], [v[\u0027id\u0027] for v in vpnservices])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_create_update_delete_vpn_service(self):"},{"line_number":56,"context_line":"        # Creates a VPN service"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgRo%3D","line":53,"updated":"2013-09-25 15:39:25.000000000","message":"It won\u0027t harm testing that you found only the expected vpn service and not others.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e45e714fc6af63033d672b7036a3b6e571d2ab93","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":51,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":52,"context_line":"        vpnservices \u003d body[\u0027vpnservices\u0027]"},{"line_number":53,"context_line":"        self.assertIn(self.vpnservice[\u0027id\u0027], [v[\u0027id\u0027] for v in vpnservices])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_create_update_delete_vpn_service(self):"},{"line_number":56,"context_line":"        # Creates a VPN service"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2Fd60%3D","line":53,"in_reply_to":"AAAAS3%2F%2FecU%3D","updated":"2013-09-26 08:32:54.000000000","message":"objective is to verify the list operation, which completes successfully if the expected services are found and only them.\n\nStill, we\u0027re splitting hairs here - so don\u0027t bother.\nUnfortunately I am a pedant and annoying person.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":51,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":52,"context_line":"        vpnservices \u003d body[\u0027vpnservices\u0027]"},{"line_number":53,"context_line":"        self.assertIn(self.vpnservice[\u0027id\u0027], [v[\u0027id\u0027] for v in vpnservices])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_create_update_delete_vpn_service(self):"},{"line_number":56,"context_line":"        # Creates a VPN service"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FecU%3D","line":53,"in_reply_to":"AAAAS3%2F%2FgRo%3D","updated":"2013-09-26 04:12:39.000000000","message":"Objective is to find vpnservice created (during setup section) in list of all vpn services.\nCode seems OK to me.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":66,"context_line":"        vpn_services \u003d list()"},{"line_number":67,"context_line":"        for vs in body[\u0027vpnservices\u0027]:"},{"line_number":68,"context_line":"            vpn_services.append(vs[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.assertIsNotNone(vpnservice[\u0027id\u0027])"},{"line_number":70,"context_line":"        self.assertIn(vpnservice[\u0027id\u0027], vpn_services)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgRM%3D","line":68,"updated":"2013-09-25 15:39:25.000000000","message":"vpn_services \u003d [vs[\u0027id\u0027] for vs in body[\u0027vpnservices\u0027]]","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":66,"context_line":"        vpn_services \u003d list()"},{"line_number":67,"context_line":"        for vs in body[\u0027vpnservices\u0027]:"},{"line_number":68,"context_line":"            vpn_services.append(vs[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.assertIsNotNone(vpnservice[\u0027id\u0027])"},{"line_number":70,"context_line":"        self.assertIn(vpnservice[\u0027id\u0027], vpn_services)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FecQ%3D","line":68,"in_reply_to":"AAAAS3%2F%2FgRM%3D","updated":"2013-09-26 04:12:39.000000000","message":"yes it is an alternative way and good way. I will amend in this way.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a1dc5cbb84f4337dc89c10a3f95ff47122e7441","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":82,"context_line":"        vpn_services \u003d list()"},{"line_number":83,"context_line":"        for vs in body[\u0027vpnservices\u0027]:"},{"line_number":84,"context_line":"            vpn_services.append(vs[\u0027id\u0027])"},{"line_number":85,"context_line":"        self.assertNotIn(vpnservice[\u0027id\u0027], vpn_services)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FgRI%3D","line":84,"updated":"2013-09-25 15:39:25.000000000","message":"see previous cooment","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"af46c174021fed964e6d1ab428b9bf55a472e54c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":82,"context_line":"        vpn_services \u003d list()"},{"line_number":83,"context_line":"        for vs in body[\u0027vpnservices\u0027]:"},{"line_number":84,"context_line":"            vpn_services.append(vs[\u0027id\u0027])"},{"line_number":85,"context_line":"        self.assertNotIn(vpnservice[\u0027id\u0027], vpn_services)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FecM%3D","line":84,"in_reply_to":"AAAAS3%2F%2FgRI%3D","updated":"2013-09-26 04:12:39.000000000","message":"see previous comment.","commit_id":"b72f8efde327fc601dc2887b272ca49f4c06aca2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c2a4f3ddc38c53caa6e18cfd361b372f9704174f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                                                    admin_state_up\u003dTrue)"},{"line_number":62,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":63,"context_line":"        vpnservice \u003d body[\u0027vpnservice\u0027]"},{"line_number":64,"context_line":"        # Asserting that the vpnservice found in the list after creation"},{"line_number":65,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":66,"context_line":"        vpn_services \u003d [vs[\u0027id\u0027] for vs in body[\u0027vpnservices\u0027]]"},{"line_number":67,"context_line":"        self.assertIsNotNone(vpnservice[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FXi4%3D","line":64,"updated":"2013-09-28 01:34:51.000000000","message":"Improve the comments. \"Assert if created vpnservices are not found in vpnservices list\"","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"11255f7c81f353dbb8e19cfee2dbb7e83e2534e6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                                                    admin_state_up\u003dTrue)"},{"line_number":62,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":63,"context_line":"        vpnservice \u003d body[\u0027vpnservice\u0027]"},{"line_number":64,"context_line":"        # Asserting that the vpnservice found in the list after creation"},{"line_number":65,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":66,"context_line":"        vpn_services \u003d [vs[\u0027id\u0027] for vs in body[\u0027vpnservices\u0027]]"},{"line_number":67,"context_line":"        self.assertIsNotNone(vpnservice[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FVFk%3D","line":64,"in_reply_to":"AAAAS3%2F%2FXi4%3D","updated":"2013-09-30 05:33:30.000000000","message":"Done","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c2a4f3ddc38c53caa6e18cfd361b372f9704174f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        # Verification of vpn service delete"},{"line_number":76,"context_line":"        resp, body \u003d self.client.delete_vpn_service(vpnservice[\u0027id\u0027])"},{"line_number":77,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":78,"context_line":"        # Asserting if vpn service is not found in the list after deletion"},{"line_number":79,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":80,"context_line":"        vpn_services \u003d [vs[\u0027id\u0027] for vs in body[\u0027vpnservices\u0027]]"},{"line_number":81,"context_line":"        self.assertNotIn(vpnservice[\u0027id\u0027], vpn_services)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FXi0%3D","line":78,"updated":"2013-09-28 01:34:51.000000000","message":"\"Asserting if vpn service is found in the list after deletion\"","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"11255f7c81f353dbb8e19cfee2dbb7e83e2534e6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        # Verification of vpn service delete"},{"line_number":76,"context_line":"        resp, body \u003d self.client.delete_vpn_service(vpnservice[\u0027id\u0027])"},{"line_number":77,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":78,"context_line":"        # Asserting if vpn service is not found in the list after deletion"},{"line_number":79,"context_line":"        resp, body \u003d self.client.list_vpn_services()"},{"line_number":80,"context_line":"        vpn_services \u003d [vs[\u0027id\u0027] for vs in body[\u0027vpnservices\u0027]]"},{"line_number":81,"context_line":"        self.assertNotIn(vpnservice[\u0027id\u0027], vpn_services)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FVFg%3D","line":78,"in_reply_to":"AAAAS3%2F%2FXi0%3D","updated":"2013-09-30 05:33:30.000000000","message":"Done","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"058e0a2582b311e713c20d2a3b77fc7f098f14c8","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        vpnservices \u003d body[\u0027vpnservices\u0027]"},{"line_number":53,"context_line":"        self.assertIn(self.vpnservice[\u0027id\u0027], [v[\u0027id\u0027] for v in vpnservices])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_create_update_delete_vpn_service(self):"},{"line_number":56,"context_line":"        # Creates a VPN service"},{"line_number":57,"context_line":"        name \u003d rand_name(\u0027vpn-service-\u0027)"},{"line_number":58,"context_line":"        resp, body \u003d self.client.create_vpn_service(self.subnet[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATH%2F%2FWZM%3D","line":55,"updated":"2013-10-17 12:17:46.000000000","message":"missing smoke attr.","commit_id":"c5f19c5b394e1ec37391f13f9a9803bd7eafba14"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"220831b58b063916193c07ee980e152f25d782fc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        vpnservices \u003d body[\u0027vpnservices\u0027]"},{"line_number":53,"context_line":"        self.assertIn(self.vpnservice[\u0027id\u0027], [v[\u0027id\u0027] for v in vpnservices])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_create_update_delete_vpn_service(self):"},{"line_number":56,"context_line":"        # Creates a VPN service"},{"line_number":57,"context_line":"        name \u003d rand_name(\u0027vpn-service-\u0027)"},{"line_number":58,"context_line":"        resp, body \u003d self.client.create_vpn_service(self.subnet[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATH%2F%2FWYg%3D","line":55,"in_reply_to":"AAAATH%2F%2FWZM%3D","updated":"2013-10-17 12:24:17.000000000","message":"Done","commit_id":"c5f19c5b394e1ec37391f13f9a9803bd7eafba14"}],"tempest/services/network/json/network_client.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5d6ab7e0b94a60aab93663e6cd80476f22f99226","unresolved":false,"context_lines":[{"line_number":612,"context_line":"        return resp, body"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def list_vpn_services(self):"},{"line_number":615,"context_line":"        uri \u003d \u0027%s/vpn/vpnservices\u0027 % (self.uri_prefix)"},{"line_number":616,"context_line":"        resp, body \u003d self.get(uri, self.headers)"},{"line_number":617,"context_line":"        body \u003d json.loads(body)"},{"line_number":618,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FdPM%3D","line":615,"updated":"2013-09-26 12:25:28.000000000","message":"unnecessary parentheses","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5d6ab7e0b94a60aab93663e6cd80476f22f99226","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        body \u003d json.loads(body)"},{"line_number":618,"context_line":"        return resp, body"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def create_vpn_service(self, subnet_id, router_id, **kwargs):"},{"line_number":621,"context_line":"        post_body \u003d {"},{"line_number":622,"context_line":"            \"vpnservice\": {"},{"line_number":623,"context_line":"                \"subnet_id\": subnet_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FdPs%3D","line":620,"updated":"2013-09-26 12:25:28.000000000","message":"I\u0027m not a huge fan of **kwargs, but I don\u0027t think it matters here.","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5d6ab7e0b94a60aab93663e6cd80476f22f99226","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        for key, val in kwargs.items():"},{"line_number":628,"context_line":"            post_body[\u0027vpnservice\u0027][key] \u003d val"},{"line_number":629,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":630,"context_line":"        uri \u003d \u0027%s/vpn/vpnservices\u0027 % (self.uri_prefix)"},{"line_number":631,"context_line":"        resp, body \u003d self.post(uri, headers\u003dself.headers, body\u003dbody)"},{"line_number":632,"context_line":"        body \u003d json.loads(body)"},{"line_number":633,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FdPY%3D","line":630,"updated":"2013-09-26 12:25:28.000000000","message":"unnecessary parentheses","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"d7a916694f1fbab50ebf662dbd2bfcad2a2e7801","unresolved":false,"context_lines":[{"line_number":643,"context_line":"        resp, body \u003d self.delete(uri, self.headers)"},{"line_number":644,"context_line":"        return resp, body"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def update_vpn_service(self, description, uuid):"},{"line_number":647,"context_line":"        put_body \u003d {"},{"line_number":648,"context_line":"            \"vpnservice\": {"},{"line_number":649,"context_line":"                \"description\": description"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FaKk%3D","line":646,"updated":"2013-09-27 09:53:54.000000000","message":"is description the only property we can update?\n\nalso if anyone asks for further changes, I\u0027d like to see the functions parameters inverted, uuid first","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"11255f7c81f353dbb8e19cfee2dbb7e83e2534e6","unresolved":false,"context_lines":[{"line_number":643,"context_line":"        resp, body \u003d self.delete(uri, self.headers)"},{"line_number":644,"context_line":"        return resp, body"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def update_vpn_service(self, description, uuid):"},{"line_number":647,"context_line":"        put_body \u003d {"},{"line_number":648,"context_line":"            \"vpnservice\": {"},{"line_number":649,"context_line":"                \"description\": description"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FVFM%3D","line":646,"in_reply_to":"AAAAS3%2F%2FXSM%3D","updated":"2013-09-30 05:33:30.000000000","message":"Done","commit_id":"b1d11ba801511257428e31abd495171a19519b26"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"62d9b6c034fa62a772a1bbf8be4625981a6cb160","unresolved":false,"context_lines":[{"line_number":643,"context_line":"        resp, body \u003d self.delete(uri, self.headers)"},{"line_number":644,"context_line":"        return resp, body"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def update_vpn_service(self, description, uuid):"},{"line_number":647,"context_line":"        put_body \u003d {"},{"line_number":648,"context_line":"            \"vpnservice\": {"},{"line_number":649,"context_line":"                \"description\": description"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FXSM%3D","line":646,"in_reply_to":"AAAAS3%2F%2FaKk%3D","updated":"2013-09-28 06:37:18.000000000","message":"I agree, the uuid should be the first.(-1)","commit_id":"b1d11ba801511257428e31abd495171a19519b26"}]}
