)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1bfa44dd322c6445681fe4e55aa9bc4ea1e9d803","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     berlin \u003clinb@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-05 10:38:45 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support advnaced NVP IPsec VPN Service"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch adds NVP advanced IPsec VPN Service support for NVP with VCNS:"},{"line_number":10,"context_line":"    * NVP IPsec VPN is an  advanced Service depending on NVP"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2Fet8%3D","line":7,"updated":"2013-11-05 08:33:46.000000000","message":"advnaced -\u003e advanced","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     berlin \u003clinb@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-05 10:38:45 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support advnaced NVP IPsec VPN Service"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch adds NVP advanced IPsec VPN Service support for NVP with VCNS:"},{"line_number":10,"context_line":"    * NVP IPsec VPN is an  advanced Service depending on NVP"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2FRMY%3D","line":7,"in_reply_to":"AAAATn%2F%2Fet8%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    * NVP IPsec VPN Service will finally call VCNS IPsec VPN bulk"},{"line_number":13,"context_line":"      reconfiguration to map to VPN DB logic"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic8a96f5defc2b868c6f18fb4966b04079d3c781a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F%2FPNs%3D","line":15,"updated":"2013-11-12 14:35:15.000000000","message":"bug or blueprint info needed.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    * NVP IPsec VPN Service will finally call VCNS IPsec VPN bulk"},{"line_number":13,"context_line":"      reconfiguration to map to VPN DB logic"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic8a96f5defc2b868c6f18fb4966b04079d3c781a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F%2FM5c%3D","line":15,"in_reply_to":"AAAATn%2F%2FPNs%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"}],"neutron/plugins/nicira/NeutronServicePlugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1bfa44dd322c6445681fe4e55aa9bc4ea1e9d803","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"    #"},{"line_number":1515,"context_line":"    # VPNaaS plugin implementation"},{"line_number":1516,"context_line":"    #"},{"line_number":1517,"context_line":"    def _vcns_update_ipsec_config(self, context, vpnservice_id):"},{"line_number":1518,"context_line":"        sites \u003d []"},{"line_number":1519,"context_line":"        vpn_service \u003d self._get_vpnservice(context, vpnservice_id)"},{"line_number":1520,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_edge_binding("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeUc%3D","line":1517,"updated":"2013-11-05 08:33:46.000000000","message":"UTs for these?","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"    #"},{"line_number":1515,"context_line":"    # VPNaaS plugin implementation"},{"line_number":1516,"context_line":"    #"},{"line_number":1517,"context_line":"    def _vcns_update_ipsec_config(self, context, vpnservice_id):"},{"line_number":1518,"context_line":"        sites \u003d []"},{"line_number":1519,"context_line":"        vpn_service \u003d self._get_vpnservice(context, vpnservice_id)"},{"line_number":1520,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_edge_binding("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FRHE%3D","line":1517,"in_reply_to":"AAAATn%2F%2FeUc%3D","updated":"2013-11-12 10:12:05.000000000","message":"Sorry, do you UTs mean unit tests? unit tests are done now.","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7617,"name":"Qin Li","email":"qili@vmware.com"},"change_message_id":"88fa4639efd226416227a3e47d36ac10a23f5839","unresolved":false,"context_lines":[{"line_number":1593,"context_line":"            context, ipsec_site_conn_id)[\u0027vpnservice_id\u0027]"},{"line_number":1594,"context_line":"        super(NvpAdvancedPlugin, self).delete_ipsec_site_connection("},{"line_number":1595,"context_line":"            context, ipsec_site_conn_id)"},{"line_number":1596,"context_line":"        self._vcns_update_ipsec_config(context, vpnservice_id)"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"class VcnsCallbacks(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeWk%3D","line":1596,"updated":"2013-11-05 08:19:53.000000000","message":"add error checking here","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":1593,"context_line":"            context, ipsec_site_conn_id)[\u0027vpnservice_id\u0027]"},{"line_number":1594,"context_line":"        super(NvpAdvancedPlugin, self).delete_ipsec_site_connection("},{"line_number":1595,"context_line":"            context, ipsec_site_conn_id)"},{"line_number":1596,"context_line":"        self._vcns_update_ipsec_config(context, vpnservice_id)"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"class VcnsCallbacks(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FRE8%3D","line":1596,"in_reply_to":"AAAATn%2F%2FeWk%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"            context, vpn_service.router_id)"},{"line_number":1523,"context_line":"        if not vpn_service.router.gw_port:"},{"line_number":1524,"context_line":"            msg \u003d _(\"Can\u0027t create ipsec site connection, because the attached \""},{"line_number":1525,"context_line":"                    \"router has not a gateway yet!\")"},{"line_number":1526,"context_line":"            LOG.exception(msg)"},{"line_number":1527,"context_line":"            raise q_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1528,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPNU%3D","line":1525,"updated":"2013-11-12 14:35:15.000000000","message":"nit: grammer.\n\n\"router does not have a gateway yet!\"","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"            context, vpn_service.router_id)"},{"line_number":1523,"context_line":"        if not vpn_service.router.gw_port:"},{"line_number":1524,"context_line":"            msg \u003d _(\"Can\u0027t create ipsec site connection, because the attached \""},{"line_number":1525,"context_line":"                    \"router has not a gateway yet!\")"},{"line_number":1526,"context_line":"            LOG.exception(msg)"},{"line_number":1527,"context_line":"            raise q_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1528,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMw0%3D","line":1525,"in_reply_to":"AAAATn%2F%2FPNU%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"            msg \u003d _(\"Can\u0027t create ipsec site connection, because the attached \""},{"line_number":1525,"context_line":"                    \"router has not a gateway yet!\")"},{"line_number":1526,"context_line":"            LOG.exception(msg)"},{"line_number":1527,"context_line":"            raise q_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1530,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPL0%3D","line":1527,"updated":"2013-11-12 14:35:15.000000000","message":"Do you want to include info in the message on the corresponding service (e.g. id)? The same question for the subsequent exceptions.\n\nShould this be using VcnsBadRequest?","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"            msg \u003d _(\"Can\u0027t create ipsec site connection, because the attached \""},{"line_number":1525,"context_line":"                    \"router has not a gateway yet!\")"},{"line_number":1526,"context_line":"            LOG.exception(msg)"},{"line_number":1527,"context_line":"            raise q_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1530,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMvo%3D","line":1527,"in_reply_to":"AAAATn%2F%2FPL0%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done. Using VcnsBadRequest instead and include the service id info in the message.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"        if not self._is_advanced_service_router(context, router_id):"},{"line_number":1558,"context_line":"            msg \u003d _(\"router_id:%s is not an advanced router!\") % router_id"},{"line_number":1559,"context_line":"            LOG.error(msg)"},{"line_number":1560,"context_line":"            raise q_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1561,"context_line":"        service \u003d super(NvpAdvancedPlugin, self).create_vpnservice("},{"line_number":1562,"context_line":"            context, vpnservice)"},{"line_number":1563,"context_line":"        self._resource_set_status("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FO5s%3D","line":1560,"updated":"2013-11-12 14:35:15.000000000","message":"VcnsBadRequest?","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"        if not self._is_advanced_service_router(context, router_id):"},{"line_number":1558,"context_line":"            msg \u003d _(\"router_id:%s is not an advanced router!\") % router_id"},{"line_number":1559,"context_line":"            LOG.error(msg)"},{"line_number":1560,"context_line":"            raise q_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1561,"context_line":"        service \u003d super(NvpAdvancedPlugin, self).create_vpnservice("},{"line_number":1562,"context_line":"            context, vpnservice)"},{"line_number":1563,"context_line":"        self._resource_set_status("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMvs%3D","line":1560,"in_reply_to":"AAAATn%2F%2FO5s%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":1572,"context_line":"        try:"},{"line_number":1573,"context_line":"            self._vcns_update_ipsec_config("},{"line_number":1574,"context_line":"                context, ipsec_site_conn[\u0027vpnservice_id\u0027])"},{"line_number":1575,"context_line":"        except Exception:"},{"line_number":1576,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1577,"context_line":"                super(NvpAdvancedPlugin, self).delete_ipsec_site_connection("},{"line_number":1578,"context_line":"                    context, ipsec_site_conn[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPLM%3D","line":1575,"updated":"2013-11-12 14:35:15.000000000","message":"Can you catch specific exception(s) here, versus a general exception? Same with subsequent exceptions.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":1572,"context_line":"        try:"},{"line_number":1573,"context_line":"            self._vcns_update_ipsec_config("},{"line_number":1574,"context_line":"                context, ipsec_site_conn[\u0027vpnservice_id\u0027])"},{"line_number":1575,"context_line":"        except Exception:"},{"line_number":1576,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1577,"context_line":"                super(NvpAdvancedPlugin, self).delete_ipsec_site_connection("},{"line_number":1578,"context_line":"                    context, ipsec_site_conn[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMak%3D","line":1575,"in_reply_to":"AAAATn%2F%2FPLM%3D","updated":"2013-11-13 09:03:43.000000000","message":"I have no idea whether I should catch specific exception here, since i have caught the specific exception in self._vcns_update_ipsec_config.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ac00b4159283281db018afae0253bdc093320bf8","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"            context, vpn_service.router_id)"},{"line_number":1521,"context_line":"        try:"},{"line_number":1522,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1523,"context_line":"        except exceptions.VcnsApiException as e:"},{"line_number":1524,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1525,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1526,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FKxc%3D","line":1523,"updated":"2013-11-13 13:09:39.000000000","message":"i do not think that the e is necessary here. in line 1529 we can just raise","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"            context, vpn_service.router_id)"},{"line_number":1521,"context_line":"        try:"},{"line_number":1522,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1523,"context_line":"        except exceptions.VcnsApiException as e:"},{"line_number":1524,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1525,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1526,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIko%3D","line":1523,"in_reply_to":"AAAATn%2F%2FKxc%3D","updated":"2013-11-14 05:38:52.000000000","message":"Done","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ac00b4159283281db018afae0253bdc093320bf8","unresolved":false,"context_lines":[{"line_number":1559,"context_line":"        try:"},{"line_number":1560,"context_line":"            self.vcns_driver.update_ipsec_config("},{"line_number":1561,"context_line":"                edge_id, sites, enabled\u003dvpn_service.admin_state_up)"},{"line_number":1562,"context_line":"        except exceptions.VcnsBadRequest as e:"},{"line_number":1563,"context_line":"            LOG.exception(_(\"Bad or unsupported Input request!\"))"},{"line_number":1564,"context_line":"            raise e"},{"line_number":1565,"context_line":"        except exceptions.VcnsApiException as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FKxY%3D","line":1562,"updated":"2013-11-13 13:09:39.000000000","message":"ditto","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":1559,"context_line":"        try:"},{"line_number":1560,"context_line":"            self.vcns_driver.update_ipsec_config("},{"line_number":1561,"context_line":"                edge_id, sites, enabled\u003dvpn_service.admin_state_up)"},{"line_number":1562,"context_line":"        except exceptions.VcnsBadRequest as e:"},{"line_number":1563,"context_line":"            LOG.exception(_(\"Bad or unsupported Input request!\"))"},{"line_number":1564,"context_line":"            raise e"},{"line_number":1565,"context_line":"        except exceptions.VcnsApiException as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIkg%3D","line":1562,"in_reply_to":"AAAATn%2F%2FKxY%3D","updated":"2013-11-14 05:38:52.000000000","message":"Done","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ac00b4159283281db018afae0253bdc093320bf8","unresolved":false,"context_lines":[{"line_number":1562,"context_line":"        except exceptions.VcnsBadRequest as e:"},{"line_number":1563,"context_line":"            LOG.exception(_(\"Bad or unsupported Input request!\"))"},{"line_number":1564,"context_line":"            raise e"},{"line_number":1565,"context_line":"        except exceptions.VcnsApiException as e:"},{"line_number":1566,"context_line":"            msg \u003d (_(\"Failed to update ipsec VPN configuration \""},{"line_number":1567,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1568,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FKxU%3D","line":1565,"updated":"2013-11-13 13:09:39.000000000","message":"ditto","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":1562,"context_line":"        except exceptions.VcnsBadRequest as e:"},{"line_number":1563,"context_line":"            LOG.exception(_(\"Bad or unsupported Input request!\"))"},{"line_number":1564,"context_line":"            raise e"},{"line_number":1565,"context_line":"        except exceptions.VcnsApiException as e:"},{"line_number":1566,"context_line":"            msg \u003d (_(\"Failed to update ipsec VPN configuration \""},{"line_number":1567,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1568,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIkc%3D","line":1565,"in_reply_to":"AAAATn%2F%2FKxU%3D","updated":"2013-11-14 05:38:52.000000000","message":"Done","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d6c1a697f0ce62a165f8041f6dc3b1703937221e","unresolved":false,"context_lines":[{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"    #"},{"line_number":1515,"context_line":"    # VPNaaS plugin implementation"},{"line_number":1516,"context_line":"    #"},{"line_number":1517,"context_line":"    def _vcns_delete_ipsec_config(self, context, vpnservice_id):"},{"line_number":1518,"context_line":"        vpn_service \u003d self._get_vpnservice(context, vpnservice_id)"},{"line_number":1519,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_edge_binding("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BE6Y%3D","line":1516,"updated":"2013-12-02 20:01:26.000000000","message":"(nit) see hacking.rst for commenting sytle","commit_id":"8c04e724556fc693b4dd66d4ebcb6339d60cc2e9"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b324ca23e51da0568022cc88b01765c62754530a","unresolved":false,"context_lines":[{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"    #"},{"line_number":1515,"context_line":"    # VPNaaS plugin implementation"},{"line_number":1516,"context_line":"    #"},{"line_number":1517,"context_line":"    def _vcns_delete_ipsec_config(self, context, vpnservice_id):"},{"line_number":1518,"context_line":"        vpn_service \u003d self._get_vpnservice(context, vpnservice_id)"},{"line_number":1519,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_edge_binding("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BCvg%3D","line":1516,"in_reply_to":"AAAATn%2F%2BE6Y%3D","updated":"2013-12-03 05:31:51.000000000","message":"Done","commit_id":"8c04e724556fc693b4dd66d4ebcb6339d60cc2e9"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"1c0a4aba23cf1285f243a14fb0be59a50cdee090","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            context, vpn_service.router_id)"},{"line_number":1518,"context_line":"        try:"},{"line_number":1519,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1520,"context_line":"        except exceptions.VcnsApiException:"},{"line_number":1521,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1522,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1523,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Rk4%3D","line":1520,"updated":"2013-12-13 07:38:42.000000000","message":"Can the delete ipsec config from Edge return 404 (ResourceNotFound)? If yes, we probably should just log and ignore it.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ab53361fe5a788e6a8e550d02d574bacae31ad57","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            context, vpn_service.router_id)"},{"line_number":1518,"context_line":"        try:"},{"line_number":1519,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1520,"context_line":"        except exceptions.VcnsApiException:"},{"line_number":1521,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1522,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1523,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9KiU%3D","line":1520,"in_reply_to":"AAAATn%2F9K48%3D","updated":"2013-12-16 04:22:08.000000000","message":"What if the Edge does not exist?","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"0ad5ad388db254136b847bdf22938f6a935bf208","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            context, vpn_service.router_id)"},{"line_number":1518,"context_line":"        try:"},{"line_number":1519,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1520,"context_line":"        except exceptions.VcnsApiException:"},{"line_number":1521,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1522,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1523,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Kf0%3D","line":1520,"in_reply_to":"AAAATn%2F9KiU%3D","updated":"2013-12-16 05:29:21.000000000","message":"Oh right. I missed the condition. Done.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"d2eff569fc6b43a031c3b62b2e2f6b5fa9a6e268","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            context, vpn_service.router_id)"},{"line_number":1518,"context_line":"        try:"},{"line_number":1519,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1520,"context_line":"        except exceptions.VcnsApiException:"},{"line_number":1521,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1522,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1523,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9K48%3D","line":1520,"in_reply_to":"AAAATn%2F9Rk4%3D","updated":"2013-12-16 03:37:21.000000000","message":"I think no. the ops would just clean all ipsec config info.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"1c0a4aba23cf1285f243a14fb0be59a50cdee090","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"        return service"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    def update_vpnservice(self, context, vpnservice_id, vpnservice):"},{"line_number":1600,"context_line":"        service \u003d super(NvpAdvancedPlugin, self).update_vpnservice("},{"line_number":1601,"context_line":"            context, vpnservice_id, vpnservice)"},{"line_number":1602,"context_line":"        if vpnservice[\u0027vpnservice\u0027].get(\u0027admin_state_up\u0027) is None:"},{"line_number":1603,"context_line":"            return service"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9RiI%3D","line":1600,"updated":"2013-12-13 07:38:42.000000000","message":"We should set the vpnservice status to PENDING_UPDATE using self._resource_set_status first. It will check if the resource is pending delete.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"d2eff569fc6b43a031c3b62b2e2f6b5fa9a6e268","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"        return service"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    def update_vpnservice(self, context, vpnservice_id, vpnservice):"},{"line_number":1600,"context_line":"        service \u003d super(NvpAdvancedPlugin, self).update_vpnservice("},{"line_number":1601,"context_line":"            context, vpnservice_id, vpnservice)"},{"line_number":1602,"context_line":"        if vpnservice[\u0027vpnservice\u0027].get(\u0027admin_state_up\u0027) is None:"},{"line_number":1603,"context_line":"            return service"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Kz8%3D","line":1600,"in_reply_to":"AAAATn%2F9RiI%3D","updated":"2013-12-16 03:37:21.000000000","message":"It is a little different with LB status updating logic. update_vpnservice db operation would check whether the resource is in pending status. So I use vpnservice[\u0027vpnservice\u0027][\u0027status\u0027]\u003d\"PENDING_UPDATE\".","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"1c0a4aba23cf1285f243a14fb0be59a50cdee090","unresolved":false,"context_lines":[{"line_number":1614,"context_line":"        return service"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    def delete_vpnservice(self, context, vpnservice_id):"},{"line_number":1617,"context_line":"        try:"},{"line_number":1618,"context_line":"            self._vcns_delete_ipsec_config(context, vpnservice_id)"},{"line_number":1619,"context_line":"        except Exception:"},{"line_number":1620,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Rjc%3D","line":1617,"updated":"2013-12-13 07:38:42.000000000","message":"I think we set the vnpservice status to PENDING_DELETE first, just in case super().delete_vpnservice failed later.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"0ad5ad388db254136b847bdf22938f6a935bf208","unresolved":false,"context_lines":[{"line_number":1614,"context_line":"        return service"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    def delete_vpnservice(self, context, vpnservice_id):"},{"line_number":1617,"context_line":"        try:"},{"line_number":1618,"context_line":"            self._vcns_delete_ipsec_config(context, vpnservice_id)"},{"line_number":1619,"context_line":"        except Exception:"},{"line_number":1620,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Kbg%3D","line":1617,"in_reply_to":"AAAATn%2F9Khg%3D","updated":"2013-12-16 05:29:21.000000000","message":"Yes, It would just update ipsec config without context. Not necessary and have deleted it.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ab53361fe5a788e6a8e550d02d574bacae31ad57","unresolved":false,"context_lines":[{"line_number":1614,"context_line":"        return service"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    def delete_vpnservice(self, context, vpnservice_id):"},{"line_number":1617,"context_line":"        try:"},{"line_number":1618,"context_line":"            self._vcns_delete_ipsec_config(context, vpnservice_id)"},{"line_number":1619,"context_line":"        except Exception:"},{"line_number":1620,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Khg%3D","line":1617,"in_reply_to":"AAAATn%2F9Kz4%3D","updated":"2013-12-16 04:22:08.000000000","message":"then do you still need _vcns_update_ipsec_config in create_vpnservice?","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"d2eff569fc6b43a031c3b62b2e2f6b5fa9a6e268","unresolved":false,"context_lines":[{"line_number":1614,"context_line":"        return service"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    def delete_vpnservice(self, context, vpnservice_id):"},{"line_number":1617,"context_line":"        try:"},{"line_number":1618,"context_line":"            self._vcns_delete_ipsec_config(context, vpnservice_id)"},{"line_number":1619,"context_line":"        except Exception:"},{"line_number":1620,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Kz4%3D","line":1617,"in_reply_to":"AAAATn%2F9Rjc%3D","updated":"2013-12-16 03:37:21.000000000","message":"I just noticed that if at least one ipsec_site_connection is attached to the vpnservice, delete_vpnservice db ops would report InUse Error. So I cancel delete_vpnservice ops in plugin.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"1c0a4aba23cf1285f243a14fb0be59a50cdee090","unresolved":false,"context_lines":[{"line_number":1642,"context_line":""},{"line_number":1643,"context_line":"    def update_ipsec_site_connection(self, context, ipsec_site_connection_id,"},{"line_number":1644,"context_line":"                                     ipsec_site_connection):"},{"line_number":1645,"context_line":"        ipsec_site_conn \u003d super("},{"line_number":1646,"context_line":"            NvpAdvancedPlugin, self).update_ipsec_site_connection("},{"line_number":1647,"context_line":"                context, ipsec_site_connection_id, ipsec_site_connection)"},{"line_number":1648,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Rh4%3D","line":1645,"updated":"2013-12-13 07:38:42.000000000","message":"Same, set status to PENDING_UPDATE first.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"d2eff569fc6b43a031c3b62b2e2f6b5fa9a6e268","unresolved":false,"context_lines":[{"line_number":1642,"context_line":""},{"line_number":1643,"context_line":"    def update_ipsec_site_connection(self, context, ipsec_site_connection_id,"},{"line_number":1644,"context_line":"                                     ipsec_site_connection):"},{"line_number":1645,"context_line":"        ipsec_site_conn \u003d super("},{"line_number":1646,"context_line":"            NvpAdvancedPlugin, self).update_ipsec_site_connection("},{"line_number":1647,"context_line":"                context, ipsec_site_connection_id, ipsec_site_connection)"},{"line_number":1648,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9KyM%3D","line":1645,"in_reply_to":"AAAATn%2F9Rh4%3D","updated":"2013-12-16 03:37:21.000000000","message":"Done","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"1c0a4aba23cf1285f243a14fb0be59a50cdee090","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"        return ipsec_site_conn"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"    def delete_ipsec_site_connection(self, context, ipsec_site_conn_id):"},{"line_number":1662,"context_line":"        vpnservice_id \u003d self.get_ipsec_site_connection("},{"line_number":1663,"context_line":"            context, ipsec_site_conn_id)[\u0027vpnservice_id\u0027]"},{"line_number":1664,"context_line":"        try:"},{"line_number":1665,"context_line":"            self._vcns_update_ipsec_config("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Rhs%3D","line":1662,"updated":"2013-12-13 07:38:42.000000000","message":"Set status to PENDING_DELETE first.","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"d2eff569fc6b43a031c3b62b2e2f6b5fa9a6e268","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"        return ipsec_site_conn"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"    def delete_ipsec_site_connection(self, context, ipsec_site_conn_id):"},{"line_number":1662,"context_line":"        vpnservice_id \u003d self.get_ipsec_site_connection("},{"line_number":1663,"context_line":"            context, ipsec_site_conn_id)[\u0027vpnservice_id\u0027]"},{"line_number":1664,"context_line":"        try:"},{"line_number":1665,"context_line":"            self._vcns_update_ipsec_config("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9KwA%3D","line":1662,"in_reply_to":"AAAATn%2F9Rhs%3D","updated":"2013-12-16 03:37:21.000000000","message":"Done","commit_id":"ce11abd242fc1f1a9a42bca483321b0a509b85ed"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"a0d936f0ab777d8341ca169b5b658ea587a01c74","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            context, vpn_service.router_id)"},{"line_number":1518,"context_line":"        try:"},{"line_number":1519,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1520,"context_line":"        except exceptions.VcnsApiException:"},{"line_number":1521,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1522,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1523,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8e8%3D","line":1520,"updated":"2014-01-20 16:18:42.000000000","message":"You need to ignore the exception if it is resource not found exception.","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"69dff2b944029875812ab6e91135e7a4453822da","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            context, vpn_service.router_id)"},{"line_number":1518,"context_line":"        try:"},{"line_number":1519,"context_line":"            self.vcns_driver.delete_ipsec_config(edge_id)"},{"line_number":1520,"context_line":"        except exceptions.VcnsApiException:"},{"line_number":1521,"context_line":"            msg \u003d (_(\"Failed to delete ipsec VPN configuration \""},{"line_number":1522,"context_line":"                     \"with vpnservice: %(vpnservice_id)s on vShield Edge: \""},{"line_number":1523,"context_line":"                     \"%(edge_id)s\") % {\u0027vpnservice_id\u0027: vpnservice_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B5FE%3D","line":1520,"in_reply_to":"AAAAUH%2F%2B8e8%3D","updated":"2014-01-21 02:49:24.000000000","message":"I have logged and ignored the not found exception in driver level.","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"a0d936f0ab777d8341ca169b5b658ea587a01c74","unresolved":false,"context_lines":[{"line_number":1541,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1542,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"},{"line_number":1543,"context_line":"        for ipsec_site_conn in vpn_service.ipsec_site_connections:"},{"line_number":1544,"context_line":"            if (not removed_ipsec_conn_id or"},{"line_number":1545,"context_line":"                ipsec_site_conn.id !\u003d removed_ipsec_conn_id):"},{"line_number":1546,"context_line":"                site \u003d self._make_ipsec_site_connection_dict(ipsec_site_conn)"},{"line_number":1547,"context_line":"                ikepolicy \u003d self._make_ikepolicy_dict("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8Zo%3D","line":1544,"updated":"2014-01-20 16:18:42.000000000","message":"minor: looks like we can just use if (ipsec_site_conn.id !\u003d removed_ipsec_conn_id)","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"69dff2b944029875812ab6e91135e7a4453822da","unresolved":false,"context_lines":[{"line_number":1541,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1542,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"},{"line_number":1543,"context_line":"        for ipsec_site_conn in vpn_service.ipsec_site_connections:"},{"line_number":1544,"context_line":"            if (not removed_ipsec_conn_id or"},{"line_number":1545,"context_line":"                ipsec_site_conn.id !\u003d removed_ipsec_conn_id):"},{"line_number":1546,"context_line":"                site \u003d self._make_ipsec_site_connection_dict(ipsec_site_conn)"},{"line_number":1547,"context_line":"                ikepolicy \u003d self._make_ikepolicy_dict("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B5G8%3D","line":1544,"in_reply_to":"AAAAUH%2F%2B8Zo%3D","updated":"2014-01-21 02:49:24.000000000","message":"Done","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"a0d936f0ab777d8341ca169b5b658ea587a01c74","unresolved":false,"context_lines":[{"line_number":1575,"context_line":"            LOG.error(msg)"},{"line_number":1576,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"        if self._get_resource_router_id_binding("},{"line_number":1579,"context_line":"            context, vpn_db.VPNService, router_id\u003drouter_id):"},{"line_number":1580,"context_line":"            msg \u003d _(\"one vpnservice is already associated with the router: %s\""},{"line_number":1581,"context_line":"                    ) % router_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8HI%3D","line":1578,"updated":"2014-01-20 16:18:42.000000000","message":"I might have missed something. I don\u0027t see any call to create a router to vpnservice binding using _process_create_resource_router_id or _add_router_service_insertion_binding. Do you need such binding if the vpnservice already have router_id in the db model? If not, you shouldn\u0027t use _get_resource_router_id_binding because it will always return None. You should check if vpnservice db already has an entry with same router_id.","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"69dff2b944029875812ab6e91135e7a4453822da","unresolved":false,"context_lines":[{"line_number":1575,"context_line":"            LOG.error(msg)"},{"line_number":1576,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"        if self._get_resource_router_id_binding("},{"line_number":1579,"context_line":"            context, vpn_db.VPNService, router_id\u003drouter_id):"},{"line_number":1580,"context_line":"            msg \u003d _(\"one vpnservice is already associated with the router: %s\""},{"line_number":1581,"context_line":"                    ) % router_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B44A%3D","line":1578,"in_reply_to":"AAAAUH%2F%2B8HI%3D","updated":"2014-01-21 02:49:24.000000000","message":"Yes, I am wrong. I have fixed it and added the unit test case.","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"0f18d4db03f1a930b81e6eae3415697e58efc870","unresolved":false,"context_lines":[{"line_number":1541,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1542,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"},{"line_number":1543,"context_line":"        for ipsec_site_conn in vpn_service.ipsec_site_connections:"},{"line_number":1544,"context_line":"            if (ipsec_site_conn.id !\u003d removed_ipsec_conn_id):"},{"line_number":1545,"context_line":"                site \u003d self._make_ipsec_site_connection_dict(ipsec_site_conn)"},{"line_number":1546,"context_line":"                ikepolicy \u003d self._make_ikepolicy_dict("},{"line_number":1547,"context_line":"                    ipsec_site_conn.ikepolicy)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2B2ss%3D","line":1544,"updated":"2014-01-21 12:01:53.000000000","message":"Don\u0027t need parens.","commit_id":"3a48258b81a750fa6d94dd1c08db8d356995effd"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"1f48445c935439328b3c1a14b583b68fc15af4ac","unresolved":false,"context_lines":[{"line_number":1541,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1542,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"},{"line_number":1543,"context_line":"        for ipsec_site_conn in vpn_service.ipsec_site_connections:"},{"line_number":1544,"context_line":"            if (ipsec_site_conn.id !\u003d removed_ipsec_conn_id):"},{"line_number":1545,"context_line":"                site \u003d self._make_ipsec_site_connection_dict(ipsec_site_conn)"},{"line_number":1546,"context_line":"                ikepolicy \u003d self._make_ikepolicy_dict("},{"line_number":1547,"context_line":"                    ipsec_site_conn.ikepolicy)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2ByAk%3D","line":1544,"in_reply_to":"AAAAUH%2F%2B2ss%3D","updated":"2014-01-22 07:38:55.000000000","message":"Done","commit_id":"3a48258b81a750fa6d94dd1c08db8d356995effd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"                context, loadbalancer_db.Pool,"},{"line_number":1515,"context_line":"                pool_id, service_constants.ACTIVE)"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"    def _vcns_delete_ipsec_config(self, context, vpnservice_id):"},{"line_number":1518,"context_line":"        vpn_service \u003d self._get_vpnservice(context, vpnservice_id)"},{"line_number":1519,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_edge_binding("},{"line_number":1520,"context_line":"            context, vpn_service.router_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgJU%3D","line":1517,"updated":"2014-02-20 20:49:06.000000000","message":"Either I am missing something, or this method is never used. Can you shed some light? Perhaps you intended to use in around line 1661? If that\u0027s the case a UT seems to be due to catch this sorts of issues.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"                context, loadbalancer_db.Pool,"},{"line_number":1515,"context_line":"                pool_id, service_constants.ACTIVE)"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"    def _vcns_delete_ipsec_config(self, context, vpnservice_id):"},{"line_number":1518,"context_line":"        vpn_service \u003d self._get_vpnservice(context, vpnservice_id)"},{"line_number":1519,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_edge_binding("},{"line_number":1520,"context_line":"            context, vpn_service.router_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F72I%3D","line":1517,"in_reply_to":"AAAAUX%2F%2BgJU%3D","updated":"2014-02-24 01:51:44.000000000","message":"Sorry for confusing and this method is never used. The method was to clean all ipsec configs on one vshield edge corresponding to delete all ipsec sites (delete_vpnservice) on one vpnservice. But found that only if one ipsec site is in one vpnservice, delete_vpnservice would raise InUse error, so just leave it alone here. I would remove it in case of confusion.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1541,"context_line":"            LOG.error(msg)"},{"line_number":1542,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1545,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"},{"line_number":1546,"context_line":"        for ipsec_site_conn in vpn_service.ipsec_site_connections:"},{"line_number":1547,"context_line":"            if ipsec_site_conn.id !\u003d removed_ipsec_conn_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgG0%3D","line":1544,"updated":"2014-02-20 20:49:06.000000000","message":"does the vpn service support IPv6? If not, we might to fail gracefully here.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1541,"context_line":"            LOG.error(msg)"},{"line_number":1542,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"        external_ip \u003d vpn_service.router.gw_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1545,"context_line":"        subnet \u003d self._make_subnet_dict(vpn_service.subnet)"},{"line_number":1546,"context_line":"        for ipsec_site_conn in vpn_service.ipsec_site_connections:"},{"line_number":1547,"context_line":"            if ipsec_site_conn.id !\u003d removed_ipsec_conn_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7zc%3D","line":1544,"in_reply_to":"AAAAUX%2F%2BgG0%3D","updated":"2014-02-24 01:51:44.000000000","message":"Yes, the vpn service support IPv6.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"            return service"},{"line_number":1613,"context_line":"        try:"},{"line_number":1614,"context_line":"            self._vcns_update_ipsec_config(context, service[\u0027id\u0027])"},{"line_number":1615,"context_line":"        except Exception:"},{"line_number":1616,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1617,"context_line":"                self._resource_set_status("},{"line_number":1618,"context_line":"                    context, vpn_db.VPNService,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgFw%3D","line":1615,"updated":"2014-02-20 20:49:06.000000000","message":"can we catch only the exceptions we care about?","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"            return service"},{"line_number":1613,"context_line":"        try:"},{"line_number":1614,"context_line":"            self._vcns_update_ipsec_config(context, service[\u0027id\u0027])"},{"line_number":1615,"context_line":"        except Exception:"},{"line_number":1616,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1617,"context_line":"                self._resource_set_status("},{"line_number":1618,"context_line":"                    context, vpn_db.VPNService,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7pk%3D","line":1615,"in_reply_to":"AAAAUX%2F%2BgFw%3D","updated":"2014-02-24 01:51:44.000000000","message":"Whatever exception(VcnsBadRequest or VcnsApiException) raised in _vcns_update_ipsec_config func, I expect the \"except Exception\" would lead to status to ERROR and reraise the specific exception.  Does it satisfy my logic and what is the cons if exceptions are too board?","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"        try:"},{"line_number":1614,"context_line":"            self._vcns_update_ipsec_config(context, service[\u0027id\u0027])"},{"line_number":1615,"context_line":"        except Exception:"},{"line_number":1616,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1617,"context_line":"                self._resource_set_status("},{"line_number":1618,"context_line":"                    context, vpn_db.VPNService,"},{"line_number":1619,"context_line":"                    service[\u0027id\u0027], service_constants.ERROR, service)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgEo%3D","line":1616,"updated":"2014-02-20 20:49:06.000000000","message":"are we sure we want to reraise here? I think we should probably just set the status to error and return the service; this is what other vpn drivers seems to be doing unless I am barking at the wrong tree.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"        try:"},{"line_number":1614,"context_line":"            self._vcns_update_ipsec_config(context, service[\u0027id\u0027])"},{"line_number":1615,"context_line":"        except Exception:"},{"line_number":1616,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1617,"context_line":"                self._resource_set_status("},{"line_number":1618,"context_line":"                    context, vpn_db.VPNService,"},{"line_number":1619,"context_line":"                    service[\u0027id\u0027], service_constants.ERROR, service)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7nc%3D","line":1616,"in_reply_to":"AAAAUX%2F%2BgEo%3D","updated":"2014-02-24 01:51:44.000000000","message":"Yes, Other vpn driver would just set the status to error. But considering our NeutronServicePlugin combines both service plugin and service driver without agent driver, also all driver calls are synchronous which means driver call would return the result status and error reason immediately, does it be better to raise the specific error other than just the status","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"                self._resource_set_status("},{"line_number":1618,"context_line":"                    context, vpn_db.VPNService,"},{"line_number":1619,"context_line":"                    service[\u0027id\u0027], service_constants.ERROR, service)"},{"line_number":1620,"context_line":"        self._resource_set_status("},{"line_number":1621,"context_line":"            context, vpn_db.VPNService,"},{"line_number":1622,"context_line":"            service[\u0027id\u0027], service_constants.ACTIVE, service)"},{"line_number":1623,"context_line":"        return service"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgD4%3D","line":1620,"updated":"2014-02-20 20:49:06.000000000","message":"you could simplify this method by doing something like:\n\nstatus \u003d service_constants.ACTIVE\ntry\n ...\nexcept:\n  status \u003d service_constants.ERROR\nself._resource_set_status(...., status)","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"                self._resource_set_status("},{"line_number":1618,"context_line":"                    context, vpn_db.VPNService,"},{"line_number":1619,"context_line":"                    service[\u0027id\u0027], service_constants.ERROR, service)"},{"line_number":1620,"context_line":"        self._resource_set_status("},{"line_number":1621,"context_line":"            context, vpn_db.VPNService,"},{"line_number":1622,"context_line":"            service[\u0027id\u0027], service_constants.ACTIVE, service)"},{"line_number":1623,"context_line":"        return service"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7mE%3D","line":1620,"in_reply_to":"AAAAUX%2F%2BgD4%3D","updated":"2014-02-24 01:51:44.000000000","message":"I would receive the advise if raising the error is unnecessary.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1629,"context_line":"        try:"},{"line_number":1630,"context_line":"            self._vcns_update_ipsec_config("},{"line_number":1631,"context_line":"                context, ipsec_site_conn[\u0027vpnservice_id\u0027])"},{"line_number":1632,"context_line":"        except Exception:"},{"line_number":1633,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1634,"context_line":"                super(NvpAdvancedPlugin, self).delete_ipsec_site_connection("},{"line_number":1635,"context_line":"                    context, ipsec_site_conn[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgDk%3D","line":1632,"updated":"2014-02-20 20:49:06.000000000","message":"can we narrow the exception here, please?","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1648,"context_line":"        try:"},{"line_number":1649,"context_line":"            self._vcns_update_ipsec_config("},{"line_number":1650,"context_line":"                context, ipsec_site_conn[\u0027vpnservice_id\u0027])"},{"line_number":1651,"context_line":"        except Exception:"},{"line_number":1652,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1653,"context_line":"                self._resource_set_status("},{"line_number":1654,"context_line":"                    context, vpn_db.IPsecSiteConnection, ipsec_site_conn[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgDg%3D","line":1651,"updated":"2014-02-20 20:49:06.000000000","message":"same comments as before","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        vpnservice_id \u003d self.get_ipsec_site_connection("},{"line_number":1666,"context_line":"            context, ipsec_site_conn_id)[\u0027vpnservice_id\u0027]"},{"line_number":1667,"context_line":"        try:"},{"line_number":1668,"context_line":"            self._vcns_update_ipsec_config("},{"line_number":1669,"context_line":"                context, vpnservice_id, ipsec_site_conn_id)"},{"line_number":1670,"context_line":"        except Exception:"},{"line_number":1671,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgDU%3D","line":1668,"updated":"2014-02-20 20:49:06.000000000","message":"are we sure we want to update here?","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1667,"context_line":"        try:"},{"line_number":1668,"context_line":"            self._vcns_update_ipsec_config("},{"line_number":1669,"context_line":"                context, vpnservice_id, ipsec_site_conn_id)"},{"line_number":1670,"context_line":"        except Exception:"},{"line_number":1671,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1672,"context_line":"                self._resource_set_status("},{"line_number":1673,"context_line":"                    context, vpn_db.IPsecSiteConnection, ipsec_site_conn_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgDM%3D","line":1670,"updated":"2014-02-20 20:49:06.000000000","message":"see above","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":1620,"context_line":"        router_id \u003d vpnservice[\u0027vpnservice\u0027].get(\u0027router_id\u0027)"},{"line_number":1621,"context_line":"        if not self._is_advanced_service_router(context, router_id):"},{"line_number":1622,"context_line":"            msg \u003d _(\"router_id:%s is not an advanced router!\") % router_id"},{"line_number":1623,"context_line":"            LOG.error(msg)"},{"line_number":1624,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1625,"context_line":""},{"line_number":1626,"context_line":"        if self.get_vpnservices(context, filters\u003d{\u0027router_id\u0027: [router_id]}):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FL8%3D","line":1623,"updated":"2014-03-02 23:34:49.000000000","message":"I would consider reducing severity to WARN.\nThis might be a user error (wrong request), and unlikely to be a backend error.\n\nIn the near future testing jobs will automatically fail if ERROR level messages are present in logs.\n\nThis comments also applies to other places in the code.","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":1620,"context_line":"        router_id \u003d vpnservice[\u0027vpnservice\u0027].get(\u0027router_id\u0027)"},{"line_number":1621,"context_line":"        if not self._is_advanced_service_router(context, router_id):"},{"line_number":1622,"context_line":"            msg \u003d _(\"router_id:%s is not an advanced router!\") % router_id"},{"line_number":1623,"context_line":"            LOG.error(msg)"},{"line_number":1624,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1625,"context_line":""},{"line_number":1626,"context_line":"        if self.get_vpnservices(context, filters\u003d{\u0027router_id\u0027: [router_id]}):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2Bh8%3D","line":1623,"in_reply_to":"AAAAVn%2F%2F%2FL8%3D","updated":"2014-03-03 03:07:11.000000000","message":"Done","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1625,"context_line":""},{"line_number":1626,"context_line":"        if self.get_vpnservices(context, filters\u003d{\u0027router_id\u0027: [router_id]}):"},{"line_number":1627,"context_line":"            msg \u003d _(\"one vpnservice is already associated with the router: %s\""},{"line_number":1628,"context_line":"                    ) % router_id"},{"line_number":1629,"context_line":"            LOG.error(msg)"},{"line_number":1630,"context_line":"            raise nsx_exc.ServiceOverQuota("}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FL4%3D","line":1627,"updated":"2014-03-02 23:34:49.000000000","message":"pedant comment: one -\u003e a","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"            raise exceptions.VcnsBadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":1625,"context_line":""},{"line_number":1626,"context_line":"        if self.get_vpnservices(context, filters\u003d{\u0027router_id\u0027: [router_id]}):"},{"line_number":1627,"context_line":"            msg \u003d _(\"one vpnservice is already associated with the router: %s\""},{"line_number":1628,"context_line":"                    ) % router_id"},{"line_number":1629,"context_line":"            LOG.error(msg)"},{"line_number":1630,"context_line":"            raise nsx_exc.ServiceOverQuota("}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2Bfs%3D","line":1627,"in_reply_to":"AAAAVn%2F%2F%2FL4%3D","updated":"2014-03-03 03:07:11.000000000","message":"Done","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":1635,"context_line":"        self._resource_set_status("},{"line_number":1636,"context_line":"            context, vpn_db.VPNService,"},{"line_number":1637,"context_line":"            service[\u0027id\u0027], service_constants.ACTIVE, service)"},{"line_number":1638,"context_line":"        return service"},{"line_number":1639,"context_line":""},{"line_number":1640,"context_line":"    def update_vpnservice(self, context, vpnservice_id, vpnservice):"},{"line_number":1641,"context_line":"        vpnservice[\u0027vpnservice\u0027][\u0027status\u0027] \u003d service_constants.PENDING_UPDATE"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FLM%3D","line":1638,"updated":"2014-03-02 23:34:49.000000000","message":"Just a question... is there any backend operation needed here? Or from the VCNS perspective there\u0027s nothing to do as the edge appliance is already \"naturally\" a VPN service as well?","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":1635,"context_line":"        self._resource_set_status("},{"line_number":1636,"context_line":"            context, vpn_db.VPNService,"},{"line_number":1637,"context_line":"            service[\u0027id\u0027], service_constants.ACTIVE, service)"},{"line_number":1638,"context_line":"        return service"},{"line_number":1639,"context_line":""},{"line_number":1640,"context_line":"    def update_vpnservice(self, context, vpnservice_id, vpnservice):"},{"line_number":1641,"context_line":"        vpnservice[\u0027vpnservice\u0027][\u0027status\u0027] \u003d service_constants.PENDING_UPDATE"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2Bec%3D","line":1638,"in_reply_to":"AAAAVn%2F%2F%2FLM%3D","updated":"2014-03-03 03:07:11.000000000","message":"Yes. Since a vpn service is inserted into a router, from the VCNS perspective there\u0027s nothing to do as the edge appliance is already \"natuarally\" a VPN service by vcns_edge_router binding.","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":1645,"context_line":"        if vpnservice[\u0027vpnservice\u0027].get(\u0027admin_state_up\u0027) is None:"},{"line_number":1646,"context_line":"            self._resource_set_status("},{"line_number":1647,"context_line":"                context, vpn_db.VPNService,"},{"line_number":1648,"context_line":"                service[\u0027id\u0027], service_constants.ACTIVE, service)"},{"line_number":1649,"context_line":"            return service"},{"line_number":1650,"context_line":"        # Test whether there is one ipsec site connection attached to"},{"line_number":1651,"context_line":"        # the vpnservice. If not, just return without updating ipsec"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FFs%3D","line":1648,"updated":"2014-03-02 23:34:49.000000000","message":"Is there a reason for putting the status back to active in any case when the service is updated?\n\nThis comments also applies to line 1657","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":1645,"context_line":"        if vpnservice[\u0027vpnservice\u0027].get(\u0027admin_state_up\u0027) is None:"},{"line_number":1646,"context_line":"            self._resource_set_status("},{"line_number":1647,"context_line":"                context, vpn_db.VPNService,"},{"line_number":1648,"context_line":"                service[\u0027id\u0027], service_constants.ACTIVE, service)"},{"line_number":1649,"context_line":"            return service"},{"line_number":1650,"context_line":"        # Test whether there is one ipsec site connection attached to"},{"line_number":1651,"context_line":"        # the vpnservice. If not, just return without updating ipsec"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2Bc0%3D","line":1648,"in_reply_to":"AAAAVn%2F%2F%2FFs%3D","updated":"2014-03-03 03:07:11.000000000","message":"I hope i got your point. If the \"admin_state_up\" attribute is not updated or ipsec_site_connections is None, there is no need to do backend operation. So It is just a DB update operation and after that I put the status back to active.","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"}],"neutron/plugins/nicira/vshield/edge_ipsecvpn_driver.py":[{"author":{"_account_id":7617,"name":"Qin Li","email":"qili@vmware.com"},"change_message_id":"88fa4639efd226416227a3e47d36ac10a23f5839","unresolved":false,"context_lines":[{"line_number":24,"context_line":"ENCRYPTION_ALGORITHM_MAP \u003d {"},{"line_number":25,"context_line":"    \u00273des\u0027: \u00273des\u0027,"},{"line_number":26,"context_line":"    \u0027aes-128\u0027: \u0027aes\u0027,"},{"line_number":27,"context_line":"    \u0027aes-192\u0027: \u0027aes-256\u0027,"},{"line_number":28,"context_line":"    \u0027aes-256\u0027: \u0027aes-256\u0027"},{"line_number":29,"context_line":"}"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeYw%3D","line":27,"updated":"2013-11-05 08:19:53.000000000","message":"It is suggest not to do this kind of mapping. It is incorrect. We can return an un-support error when user configure aes-192.","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":24,"context_line":"ENCRYPTION_ALGORITHM_MAP \u003d {"},{"line_number":25,"context_line":"    \u00273des\u0027: \u00273des\u0027,"},{"line_number":26,"context_line":"    \u0027aes-128\u0027: \u0027aes\u0027,"},{"line_number":27,"context_line":"    \u0027aes-192\u0027: \u0027aes-256\u0027,"},{"line_number":28,"context_line":"    \u0027aes-256\u0027: \u0027aes-256\u0027"},{"line_number":29,"context_line":"}"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FQ9A%3D","line":27,"in_reply_to":"AAAATn%2F%2FeYw%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1bfa44dd322c6445681fe4e55aa9bc4ea1e9d803","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class EdgeIPsecVpnDriver():"},{"line_number":33,"context_line":"    \"\"\"Implementation of driver APIs for Edge"},{"line_number":34,"context_line":"       IPsec VPN feature configuration"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":"    def _convert_ipsec_site(self, site,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeUI%3D","line":33,"updated":"2013-11-05 08:33:46.000000000","message":"Nit: PEP8 for doc string","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class EdgeIPsecVpnDriver():"},{"line_number":33,"context_line":"    \"\"\"Implementation of driver APIs for Edge"},{"line_number":34,"context_line":"       IPsec VPN feature configuration"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":"    def _convert_ipsec_site(self, site,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FQ8w%3D","line":33,"in_reply_to":"AAAATn%2F%2FeUI%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7617,"name":"Qin Li","email":"qili@vmware.com"},"change_message_id":"88fa4639efd226416227a3e47d36ac10a23f5839","unresolved":false,"context_lines":[{"line_number":34,"context_line":"       IPsec VPN feature configuration"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":"    def _convert_ipsec_site(self, site,"},{"line_number":37,"context_line":"                            enabled\u003dTrue, dhGroup\u003d\"dh2\", enablePfs\u003dTrue):"},{"line_number":38,"context_line":"            ###Some IPsec VPN configurations in VSE edge are by default and,"},{"line_number":39,"context_line":"            ###cann\u0027t modify them. so here just extract values which can be"},{"line_number":40,"context_line":"            ###updated in VSE IPsec VPN."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeYU%3D","line":37,"updated":"2013-11-05 08:19:53.000000000","message":"if dhgroup is not set as input, then disable pfs. Edge only support dh2 and dh5, for other return error.","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":34,"context_line":"       IPsec VPN feature configuration"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":"    def _convert_ipsec_site(self, site,"},{"line_number":37,"context_line":"                            enabled\u003dTrue, dhGroup\u003d\"dh2\", enablePfs\u003dTrue):"},{"line_number":38,"context_line":"            ###Some IPsec VPN configurations in VSE edge are by default and,"},{"line_number":39,"context_line":"            ###cann\u0027t modify them. so here just extract values which can be"},{"line_number":40,"context_line":"            ###updated in VSE IPsec VPN."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FQxg%3D","line":37,"in_reply_to":"AAAATn%2F%2FeYU%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7617,"name":"Qin Li","email":"qili@vmware.com"},"change_message_id":"88fa4639efd226416227a3e47d36ac10a23f5839","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            ###In VSE, Phase 1 and Phase 2 share the same"},{"line_number":58,"context_line":"            ###encryption and authentication algorithms setting,"},{"line_number":59,"context_line":"            ###so here we just use IKEPolicy to do configuration"},{"line_number":60,"context_line":"            \u0027encryptionAlgorithm\u0027: ENCRYPTION_ALGORITHM_MAP.get("},{"line_number":61,"context_line":"                site[\u0027ikepolicy\u0027].get(\u0027encryption_algorithm\u0027))}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def update_ipsec_config(self, edge_id, sites):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeXo%3D","line":60,"updated":"2013-11-05 08:19:53.000000000","message":"use algorithm in ipsecpolicy, it is better do to matching check between IKE algorithm and IPSec algorithm, it not matching, return error or a warning.","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            ###In VSE, Phase 1 and Phase 2 share the same"},{"line_number":58,"context_line":"            ###encryption and authentication algorithms setting,"},{"line_number":59,"context_line":"            ###so here we just use IKEPolicy to do configuration"},{"line_number":60,"context_line":"            \u0027encryptionAlgorithm\u0027: ENCRYPTION_ALGORITHM_MAP.get("},{"line_number":61,"context_line":"                site[\u0027ikepolicy\u0027].get(\u0027encryption_algorithm\u0027))}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def update_ipsec_config(self, edge_id, sites):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FQxU%3D","line":60,"in_reply_to":"AAAATn%2F%2FeXo%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done. Right now, just a error reported in LOG.","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1bfa44dd322c6445681fe4e55aa9bc4ea1e9d803","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def update_ipsec_config(self, edge_id, sites):"},{"line_number":64,"context_line":"        ipsec_config \u003d {\u0027featureType\u0027: \"ipsec_4.0\","},{"line_number":65,"context_line":"                        \u0027enabled\u0027: True}"},{"line_number":66,"context_line":"        vse_sites \u003d []"},{"line_number":67,"context_line":"        for site in sites:"},{"line_number":68,"context_line":"            vse_site \u003d self._convert_ipsec_site(site)"},{"line_number":69,"context_line":"            vse_sites.append(vse_site)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FeVY%3D","line":66,"updated":"2013-11-05 08:33:46.000000000","message":"Build with list comprehension?","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"93f9f8ac04b99884d37ba0b356e20914446cc4ac","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def update_ipsec_config(self, edge_id, sites):"},{"line_number":64,"context_line":"        ipsec_config \u003d {\u0027featureType\u0027: \"ipsec_4.0\","},{"line_number":65,"context_line":"                        \u0027enabled\u0027: True}"},{"line_number":66,"context_line":"        vse_sites \u003d []"},{"line_number":67,"context_line":"        for site in sites:"},{"line_number":68,"context_line":"            vse_site \u003d self._convert_ipsec_site(site)"},{"line_number":69,"context_line":"            vse_sites.append(vse_site)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FQw8%3D","line":66,"in_reply_to":"AAAATn%2F%2FeVY%3D","updated":"2013-11-12 10:12:05.000000000","message":"Done","commit_id":"39343c972a9915d259d574672f2eae1955095c9d"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class EdgeIPsecVpnDriver():"},{"line_number":36,"context_line":"    \"\"\"Implementation of driver APIs for Edge IPsec VPN"},{"line_number":37,"context_line":"    bulk configuration."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    def _check_ikepolicy_ipsecpolicy_allowed(self, ikepolicy, ipsecpolicy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPJk%3D","line":36,"updated":"2013-11-12 14:35:15.000000000","message":"Nit: PEP8 on docstrings for classes and functions. (one line summary with period, blank line, rest of docstring lines, blank lines around class comments,...). Same for other docstrings in this file.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class EdgeIPsecVpnDriver():"},{"line_number":36,"context_line":"    \"\"\"Implementation of driver APIs for Edge IPsec VPN"},{"line_number":37,"context_line":"    bulk configuration."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    def _check_ikepolicy_ipsecpolicy_allowed(self, ikepolicy, ipsecpolicy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMu4%3D","line":36,"in_reply_to":"AAAATn%2F%2FPJk%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done. Thank you for your patience. Really got it now.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if ikepolicy[\u0027ike_version\u0027] !\u003d \u0027v1\u0027:"},{"line_number":46,"context_line":"            msg \u003d _(\"Only v1 ike version is supported on vshield \""},{"line_number":47,"context_line":"                    \"Edge right now!\")"},{"line_number":48,"context_line":"            LOG.exception(msg)"},{"line_number":49,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ikepolicy\u0027,"},{"line_number":50,"context_line":"                                          msg\u003dmsg)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMYA%3D","line":48,"updated":"2013-11-13 05:12:50.000000000","message":"I wonder, is it ok to use LOG.exception() when no exception is being caught. Should it be LOG.error()?\nSame applies to a few places below.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if ikepolicy[\u0027ike_version\u0027] !\u003d \u0027v1\u0027:"},{"line_number":46,"context_line":"            msg \u003d _(\"Only v1 ike version is supported on vshield \""},{"line_number":47,"context_line":"                    \"Edge right now!\")"},{"line_number":48,"context_line":"            LOG.exception(msg)"},{"line_number":49,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ikepolicy\u0027,"},{"line_number":50,"context_line":"                                          msg\u003dmsg)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLxY%3D","line":48,"in_reply_to":"AAAATn%2F%2FMYA%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                          msg\u003dmsg)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # In VSE, Phase 1 and Phase 2 share the same encryption_algorithm"},{"line_number":53,"context_line":"        # and authentication algorithms setting. So here need a consistence"},{"line_number":54,"context_line":"        # check and would just record inconsistence ERROR and use ipsecpolicy"},{"line_number":55,"context_line":"        # to do configuration regardless of ikepolicy"},{"line_number":56,"context_line":"        if (ikepolicy[\u0027auth_algorithm\u0027] !\u003d ipsecpolicy[\u0027auth_algorithm\u0027] or"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPJM%3D","line":53,"updated":"2013-11-12 14:35:15.000000000","message":"consistence -\u003e consistent","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                          msg\u003dmsg)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # In VSE, Phase 1 and Phase 2 share the same encryption_algorithm"},{"line_number":53,"context_line":"        # and authentication algorithms setting. So here need a consistence"},{"line_number":54,"context_line":"        # check and would just record inconsistence ERROR and use ipsecpolicy"},{"line_number":55,"context_line":"        # to do configuration regardless of ikepolicy"},{"line_number":56,"context_line":"        if (ikepolicy[\u0027auth_algorithm\u0027] !\u003d ipsecpolicy[\u0027auth_algorithm\u0027] or"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLxU%3D","line":53,"in_reply_to":"AAAATn%2F%2FPJM%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            ikepolicy[\u0027encryption_algorithm\u0027] !\u003d ipsecpolicy["},{"line_number":58,"context_line":"                \u0027encryption_algorithm\u0027] or"},{"line_number":59,"context_line":"            ikepolicy[\u0027pfs\u0027] !\u003d ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":60,"context_line":"            msg \u003d _(\"IKEPolicy and IPsecPolicy should keep consistency \""},{"line_number":61,"context_line":"                    \"on auth_algorithm, encryption_algorithm and pfs for VSE.\")"},{"line_number":62,"context_line":"            LOG.exception(msg)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPHI%3D","line":60,"updated":"2013-11-12 14:35:15.000000000","message":"\"should have consistent auth_algorithm, ...\"?","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            ikepolicy[\u0027encryption_algorithm\u0027] !\u003d ipsecpolicy["},{"line_number":58,"context_line":"                \u0027encryption_algorithm\u0027] or"},{"line_number":59,"context_line":"            ikepolicy[\u0027pfs\u0027] !\u003d ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":60,"context_line":"            msg \u003d _(\"IKEPolicy and IPsecPolicy should keep consistency \""},{"line_number":61,"context_line":"                    \"on auth_algorithm, encryption_algorithm and pfs for VSE.\")"},{"line_number":62,"context_line":"            LOG.exception(msg)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMss%3D","line":60,"in_reply_to":"AAAATn%2F%2FPHI%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done. I would pay attention on my expression.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            ikepolicy[\u0027pfs\u0027] !\u003d ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":60,"context_line":"            msg \u003d _(\"IKEPolicy and IPsecPolicy should keep consistency \""},{"line_number":61,"context_line":"                    \"on auth_algorithm, encryption_algorithm and pfs for VSE.\")"},{"line_number":62,"context_line":"            LOG.exception(msg)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Check whether encryption_algorithm is allowed."},{"line_number":65,"context_line":"        encryption_algorithm \u003d ENCRYPTION_ALGORITHM_MAP.get("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FNyY%3D","line":62,"updated":"2013-11-13 05:12:50.000000000","message":"LOG.error()?","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            ikepolicy[\u0027pfs\u0027] !\u003d ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":60,"context_line":"            msg \u003d _(\"IKEPolicy and IPsecPolicy should keep consistency \""},{"line_number":61,"context_line":"                    \"on auth_algorithm, encryption_algorithm and pfs for VSE.\")"},{"line_number":62,"context_line":"            LOG.exception(msg)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Check whether encryption_algorithm is allowed."},{"line_number":65,"context_line":"        encryption_algorithm \u003d ENCRYPTION_ALGORITHM_MAP.get("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLwU%3D","line":62,"in_reply_to":"AAAATn%2F%2FNyY%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        encryption_algorithm \u003d ENCRYPTION_ALGORITHM_MAP.get("},{"line_number":66,"context_line":"            ipsecpolicy.get(\u0027encryption_algorithm\u0027), None)"},{"line_number":67,"context_line":"        if not encryption_algorithm:"},{"line_number":68,"context_line":"            msg \u003d (_(\"encryption_algorithm: %s is not supported on VSE. 3des, \""},{"line_number":69,"context_line":"                     \"aes-128 and aes-256 are supported on VSE right now.\") %"},{"line_number":70,"context_line":"                   ipsecpolicy[\u0027encryption_algorithm\u0027])"},{"line_number":71,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPGY%3D","line":68,"updated":"2013-11-12 14:35:15.000000000","message":"Nit: outer parens not needed.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        encryption_algorithm \u003d ENCRYPTION_ALGORITHM_MAP.get("},{"line_number":66,"context_line":"            ipsecpolicy.get(\u0027encryption_algorithm\u0027), None)"},{"line_number":67,"context_line":"        if not encryption_algorithm:"},{"line_number":68,"context_line":"            msg \u003d (_(\"encryption_algorithm: %s is not supported on VSE. 3des, \""},{"line_number":69,"context_line":"                     \"aes-128 and aes-256 are supported on VSE right now.\") %"},{"line_number":70,"context_line":"                   ipsecpolicy[\u0027encryption_algorithm\u0027])"},{"line_number":71,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMrM%3D","line":68,"in_reply_to":"AAAATn%2F%2FPGY%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            msg \u003d (_(\"encryption_algorithm: %s is not supported on VSE. 3des, \""},{"line_number":69,"context_line":"                     \"aes-128 and aes-256 are supported on VSE right now.\") %"},{"line_number":70,"context_line":"                   ipsecpolicy[\u0027encryption_algorithm\u0027])"},{"line_number":71,"context_line":"            LOG.exception(msg)"},{"line_number":72,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":73,"context_line":"                                          msg\u003dmsg)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FNyU%3D","line":71,"updated":"2013-11-13 05:12:50.000000000","message":"LOG.error?","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            msg \u003d (_(\"encryption_algorithm: %s is not supported on VSE. 3des, \""},{"line_number":69,"context_line":"                     \"aes-128 and aes-256 are supported on VSE right now.\") %"},{"line_number":70,"context_line":"                   ipsecpolicy[\u0027encryption_algorithm\u0027])"},{"line_number":71,"context_line":"            LOG.exception(msg)"},{"line_number":72,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":73,"context_line":"                                          msg\u003dmsg)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLxI%3D","line":71,"in_reply_to":"AAAATn%2F%2FNyU%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                                          msg\u003dmsg)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Check whether pfs is allowed."},{"line_number":76,"context_line":"        if not PFS_MAP.get(ipsecpolicy[\u0027pfs\u0027], None):"},{"line_number":77,"context_line":"            msg \u003d _(\"pfs: %s is not supported on VSE. group2 and group5 \""},{"line_number":78,"context_line":"                    \"are supported on VSE right now.\") % ipsecpolicy[\u0027pfs\u0027]"},{"line_number":79,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FNzA%3D","line":76,"updated":"2013-11-13 05:12:50.000000000","message":"nit: None is the default parameter for .get(), so it could be omitted","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                                          msg\u003dmsg)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Check whether pfs is allowed."},{"line_number":76,"context_line":"        if not PFS_MAP.get(ipsecpolicy[\u0027pfs\u0027], None):"},{"line_number":77,"context_line":"            msg \u003d _(\"pfs: %s is not supported on VSE. group2 and group5 \""},{"line_number":78,"context_line":"                    \"are supported on VSE right now.\") % ipsecpolicy[\u0027pfs\u0027]"},{"line_number":79,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLwk%3D","line":76,"in_reply_to":"AAAATn%2F%2FNzA%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ac00b4159283281db018afae0253bdc093320bf8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Bo Lin, VMware"},{"line_number":18,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":19,"context_line":"from neutron.plugins.nicira.vshield.common import ("},{"line_number":20,"context_line":"    exceptions as vcns_exc)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FKw0%3D","line":17,"updated":"2013-11-13 13:09:39.000000000","message":"i do not think that the author is required","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Bo Lin, VMware"},{"line_number":18,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":19,"context_line":"from neutron.plugins.nicira.vshield.common import ("},{"line_number":20,"context_line":"    exceptions as vcns_exc)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIgg%3D","line":17,"in_reply_to":"AAAATn%2F%2FKw0%3D","updated":"2013-11-14 05:38:52.000000000","message":"Since it is a specific implementation for VMware, it is convenient for communication if someone else want to do some changes on the file.","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"647740199e01b62b79da48432c8e038edc01ea04","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self._check_ikepolicy_ipsecpolicy_allowed("},{"line_number":85,"context_line":"            site[\u0027ikepolicy\u0027], site[\u0027ipsecpolicy\u0027])"},{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \u0027enabled\u0027: site[\u0027site\u0027].get(\u0027admin_state_up\u0027),"},{"line_number":88,"context_line":"            \u0027enablePfs\u0027: enablePfs,"},{"line_number":89,"context_line":"            \u0027dhGroup\u0027: PFS_MAP.get(site[\u0027ipsecpolicy\u0027][\u0027pfs\u0027]),"},{"line_number":90,"context_line":"            \u0027name\u0027: site[\u0027site\u0027].get(\u0027name\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FK1U%3D","line":87,"updated":"2013-11-13 12:50:21.000000000","message":"In an earlier version, you had a default for enabled\u003dTrue. Will site[\u0027site\u0027] always have \u0027admin_state_up\u0027 attribute, or can it be None? If it can, you could use a default here.","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self._check_ikepolicy_ipsecpolicy_allowed("},{"line_number":85,"context_line":"            site[\u0027ikepolicy\u0027], site[\u0027ipsecpolicy\u0027])"},{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \u0027enabled\u0027: site[\u0027site\u0027].get(\u0027admin_state_up\u0027),"},{"line_number":88,"context_line":"            \u0027enablePfs\u0027: enablePfs,"},{"line_number":89,"context_line":"            \u0027dhGroup\u0027: PFS_MAP.get(site[\u0027ipsecpolicy\u0027][\u0027pfs\u0027]),"},{"line_number":90,"context_line":"            \u0027name\u0027: site[\u0027site\u0027].get(\u0027name\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIjs%3D","line":87,"in_reply_to":"AAAATn%2F%2FK1U%3D","updated":"2013-11-14 05:38:52.000000000","message":"site[\u0027site\u0027] is retrieved from get_ipsec_site_connection in neutron.db.vpn.vpn_db.py, and always has \u0027admin_state_up\u0027 attribute. Through seeing the neutron.extensions.vpnaas, we can see that the default value of admin_state_up is True.","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"647740199e01b62b79da48432c8e038edc01ea04","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \u0027enabled\u0027: site[\u0027site\u0027].get(\u0027admin_state_up\u0027),"},{"line_number":88,"context_line":"            \u0027enablePfs\u0027: enablePfs,"},{"line_number":89,"context_line":"            \u0027dhGroup\u0027: PFS_MAP.get(site[\u0027ipsecpolicy\u0027][\u0027pfs\u0027]),"},{"line_number":90,"context_line":"            \u0027name\u0027: site[\u0027site\u0027].get(\u0027name\u0027),"},{"line_number":91,"context_line":"            \u0027description\u0027: site[\u0027site\u0027].get(\u0027description\u0027),"},{"line_number":92,"context_line":"            \u0027localId\u0027: site[\u0027external_ip\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FK1o%3D","line":89,"updated":"2013-11-13 12:50:21.000000000","message":"In an earlier version, you had a default value of \u0027dh2\u0027 for a dhGroup parameter. Is is expected that site[\u0027ipsecpolicy\u0027][\u0027pfs\u0027] will always be in the map, or should a default be assigned here?","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \u0027enabled\u0027: site[\u0027site\u0027].get(\u0027admin_state_up\u0027),"},{"line_number":88,"context_line":"            \u0027enablePfs\u0027: enablePfs,"},{"line_number":89,"context_line":"            \u0027dhGroup\u0027: PFS_MAP.get(site[\u0027ipsecpolicy\u0027][\u0027pfs\u0027]),"},{"line_number":90,"context_line":"            \u0027name\u0027: site[\u0027site\u0027].get(\u0027name\u0027),"},{"line_number":91,"context_line":"            \u0027description\u0027: site[\u0027site\u0027].get(\u0027description\u0027),"},{"line_number":92,"context_line":"            \u0027localId\u0027: site[\u0027external_ip\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIi8%3D","line":89,"in_reply_to":"AAAATn%2F%2FK1o%3D","updated":"2013-11-14 05:38:52.000000000","message":"The default value of \u0027dh2\u0027 in an earlier version is just a default regardless of the ipsecpolicy pfs value for VSE. I add the mapping relation in the version, and if site[\u0027ipsecpolicy\u0027][\u0027pfs\u0027] isn\u0027t in the PFS_MAP, i would raise an unsupported error.","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ac00b4159283281db018afae0253bdc093320bf8","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def delete_ipsec_config(self, edge_id):"},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            self.vcns.delete_ipsec_config(edge_id)"},{"line_number":120,"context_line":"        except vcns_exc.VcnsApiException as e:"},{"line_number":121,"context_line":"            LOG.exception(_(\"Failed to delete ipsec vpn configuration \""},{"line_number":122,"context_line":"                            \"with edge_id: %s\"), edge_id)"},{"line_number":123,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FKwk%3D","line":120,"updated":"2013-11-13 13:09:39.000000000","message":"same point here with exceptions","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def delete_ipsec_config(self, edge_id):"},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            self.vcns.delete_ipsec_config(edge_id)"},{"line_number":120,"context_line":"        except vcns_exc.VcnsApiException as e:"},{"line_number":121,"context_line":"            LOG.exception(_(\"Failed to delete ipsec vpn configuration \""},{"line_number":122,"context_line":"                            \"with edge_id: %s\"), edge_id)"},{"line_number":123,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIkQ%3D","line":120,"in_reply_to":"AAAATn%2F%2FKwk%3D","updated":"2013-11-14 05:38:52.000000000","message":"Done","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c57fade91e666a970933da7987b9786e16042539","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class EdgeIPsecVpnDriver():"},{"line_number":40,"context_line":"    \"\"\"Driver APIs for Edge IPsec VPN bulk configuration.\"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _check_ikepolicy_ipsecpolicy_allowed(self, ikepolicy, ipsecpolicy):"},{"line_number":43,"context_line":"        \"\"\"Check whether ikepolicy and ipsecpolicy are allowed on vshield edge."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9JFg%3D","line":40,"updated":"2013-12-16 12:18:44.000000000","message":"Nit: PEP 257 add a blank line before docstring for class.","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2f2346dd662d4bf385f7e2ba81aa7aa31dbc3124","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class EdgeIPsecVpnDriver():"},{"line_number":40,"context_line":"    \"\"\"Driver APIs for Edge IPsec VPN bulk configuration.\"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _check_ikepolicy_ipsecpolicy_allowed(self, ikepolicy, ipsecpolicy):"},{"line_number":43,"context_line":"        \"\"\"Check whether ikepolicy and ipsecpolicy are allowed on vshield edge."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9EkM%3D","line":40,"in_reply_to":"AAAATn%2F9JFg%3D","updated":"2013-12-17 05:05:07.000000000","message":"Done","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"a0d936f0ab777d8341ca169b5b658ea587a01c74","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        # Check validation of IKEPolicy."},{"line_number":51,"context_line":"        if ikepolicy[\u0027ike_version\u0027] !\u003d \u0027v1\u0027:"},{"line_number":52,"context_line":"            msg \u003d _(\"Unsupported ike_version: %s! Only \u0027v1\u0027 ike version is \""},{"line_number":53,"context_line":"                    \"supported on vshield Edge right now!\""},{"line_number":54,"context_line":"                    ) % ikepolicy[\u0027ike_version\u0027]"},{"line_number":55,"context_line":"            LOG.error(msg)"},{"line_number":56,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ikepolicy\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B70w%3D","line":53,"updated":"2014-01-20 16:18:42.000000000","message":"minor: you can remove \"right now\" from the message.","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"69dff2b944029875812ab6e91135e7a4453822da","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        # Check validation of IKEPolicy."},{"line_number":51,"context_line":"        if ikepolicy[\u0027ike_version\u0027] !\u003d \u0027v1\u0027:"},{"line_number":52,"context_line":"            msg \u003d _(\"Unsupported ike_version: %s! Only \u0027v1\u0027 ike version is \""},{"line_number":53,"context_line":"                    \"supported on vshield Edge right now!\""},{"line_number":54,"context_line":"                    ) % ikepolicy[\u0027ike_version\u0027]"},{"line_number":55,"context_line":"            LOG.error(msg)"},{"line_number":56,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ikepolicy\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B410%3D","line":53,"in_reply_to":"AAAAUH%2F%2B70w%3D","updated":"2014-01-21 02:49:24.000000000","message":"Done","commit_id":"3cfc730514638167a64c39d7a021493fa2708480"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"d4d8a8a5bc0ed4acd219ac33005b2cead92bd5b5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhFA%3D","line":1,"updated":"2014-02-20 18:58:59.000000000","message":"Pull VIM line on new files.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7ks%3D","line":1,"in_reply_to":"AAAAUX%2F%2BhFA%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: linb, VMware"},{"line_number":18,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":19,"context_line":"from neutron.plugins.nicira.vshield.common import ("},{"line_number":20,"context_line":"    exceptions as vcns_exc)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgVA%3D","line":17,"updated":"2014-02-20 20:49:06.000000000","message":"Please consider removing author line.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: linb, VMware"},{"line_number":18,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":19,"context_line":"from neutron.plugins.nicira.vshield.common import ("},{"line_number":20,"context_line":"    exceptions as vcns_exc)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7kw%3D","line":17,"in_reply_to":"AAAAUX%2F%2BgVA%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        if not PFS_MAP.get(ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":83,"context_line":"            msg \u003d _(\"Unsupported pfs: %s! \u0027group2\u0027 and \u0027group5\u0027 \""},{"line_number":84,"context_line":"                    \"are supported on VSE right now.\") % ipsecpolicy[\u0027pfs\u0027]"},{"line_number":85,"context_line":"            LOG.exception(msg)"},{"line_number":86,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":87,"context_line":"                                          msg\u003dmsg)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgCQ%3D","line":85,"updated":"2014-02-20 20:49:06.000000000","message":"no exception to be traced here. This should be log.error","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        if not PFS_MAP.get(ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":83,"context_line":"            msg \u003d _(\"Unsupported pfs: %s! \u0027group2\u0027 and \u0027group5\u0027 \""},{"line_number":84,"context_line":"                    \"are supported on VSE right now.\") % ipsecpolicy[\u0027pfs\u0027]"},{"line_number":85,"context_line":"            LOG.exception(msg)"},{"line_number":86,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":87,"context_line":"                                          msg\u003dmsg)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7j0%3D","line":85,"in_reply_to":"AAAAUX%2F%2BgCQ%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done, again and again, i always make the error :{","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"d4d8a8a5bc0ed4acd219ac33005b2cead92bd5b5","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Check whether transform protocol is allowed."},{"line_number":90,"context_line":"        if ipsecpolicy[\u0027transform_protocol\u0027] not in TRANSFORM_PROTOCOL_ALLOWED:"},{"line_number":91,"context_line":"            msg \u003d _(\"Unsupported transform protocol: %s! \u0027esp\u0027 is supported\""},{"line_number":92,"context_line":"                    \"by default on VSE right now.\""},{"line_number":93,"context_line":"                    ) % ipsecpolicy[\u0027transform_protocol\u0027]"},{"line_number":94,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhEo%3D","line":91,"updated":"2014-02-20 18:58:59.000000000","message":"Missing space at end of string for continuation.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Check whether transform protocol is allowed."},{"line_number":90,"context_line":"        if ipsecpolicy[\u0027transform_protocol\u0027] not in TRANSFORM_PROTOCOL_ALLOWED:"},{"line_number":91,"context_line":"            msg \u003d _(\"Unsupported transform protocol: %s! \u0027esp\u0027 is supported\""},{"line_number":92,"context_line":"                    \"by default on VSE right now.\""},{"line_number":93,"context_line":"                    ) % ipsecpolicy[\u0027transform_protocol\u0027]"},{"line_number":94,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7jE%3D","line":91,"in_reply_to":"AAAAUX%2F%2BhEo%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Unsupported transform protocol: %s! \u0027esp\u0027 is supported\""},{"line_number":92,"context_line":"                    \"by default on VSE right now.\""},{"line_number":93,"context_line":"                    ) % ipsecpolicy[\u0027transform_protocol\u0027]"},{"line_number":94,"context_line":"            LOG.exception(msg)"},{"line_number":95,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":96,"context_line":"                                          msg\u003dmsg)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgCM%3D","line":94,"updated":"2014-02-20 20:49:06.000000000","message":"ditto","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Unsupported transform protocol: %s! \u0027esp\u0027 is supported\""},{"line_number":92,"context_line":"                    \"by default on VSE right now.\""},{"line_number":93,"context_line":"                    ) % ipsecpolicy[\u0027transform_protocol\u0027]"},{"line_number":94,"context_line":"            LOG.exception(msg)"},{"line_number":95,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":96,"context_line":"                                          msg\u003dmsg)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7jA%3D","line":94,"in_reply_to":"AAAAUX%2F%2BgCM%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"d4d8a8a5bc0ed4acd219ac33005b2cead92bd5b5","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # Check whether encapsulation mode is allowed."},{"line_number":99,"context_line":"        if ipsecpolicy[\u0027encapsulation_mode\u0027] not in ENCAPSULATION_MODE_ALLOWED:"},{"line_number":100,"context_line":"            msg \u003d _(\"Unsupported encapsulation mode: %s! \u0027tunnel\u0027 is supported\""},{"line_number":101,"context_line":"                    \"by default on VSE right now.\""},{"line_number":102,"context_line":"                    ) % ipsecpolicy[\u0027encapsulation_mode\u0027]"},{"line_number":103,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhEk%3D","line":100,"updated":"2014-02-20 18:58:59.000000000","message":"ditto.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            msg \u003d _(\"Unsupported encapsulation mode: %s! \u0027tunnel\u0027 is supported\""},{"line_number":101,"context_line":"                    \"by default on VSE right now.\""},{"line_number":102,"context_line":"                    ) % ipsecpolicy[\u0027encapsulation_mode\u0027]"},{"line_number":103,"context_line":"            LOG.exception(msg)"},{"line_number":104,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":105,"context_line":"                                          msg\u003dmsg)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BgA0%3D","line":103,"updated":"2014-02-20 20:49:06.000000000","message":"so would be here","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            msg \u003d _(\"Unsupported encapsulation mode: %s! \u0027tunnel\u0027 is supported\""},{"line_number":101,"context_line":"                    \"by default on VSE right now.\""},{"line_number":102,"context_line":"                    ) % ipsecpolicy[\u0027encapsulation_mode\u0027]"},{"line_number":103,"context_line":"            LOG.exception(msg)"},{"line_number":104,"context_line":"            raise vcns_exc.VcnsBadRequest(resource\u003d\u0027ipsecpolicy\u0027,"},{"line_number":105,"context_line":"                                          msg\u003dmsg)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7ic%3D","line":103,"in_reply_to":"AAAAUX%2F%2BgA0%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        try:"},{"line_number":143,"context_line":"            self.vcns.delete_ipsec_config(edge_id)"},{"line_number":144,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":145,"context_line":"            LOG.exception(_(\"IPsec config not found on edge: %s\"), edge_id)"},{"line_number":146,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":147,"context_line":"            LOG.exception(_(\"Failed to delete ipsec vpn configuration \""},{"line_number":148,"context_line":"                            \"with edge_id: %s\"), edge_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Bf%2F8%3D","line":145,"updated":"2014-02-20 20:49:06.000000000","message":"maybe here you want to log at a warn level as it doe not sound to be critical","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        try:"},{"line_number":143,"context_line":"            self.vcns.delete_ipsec_config(edge_id)"},{"line_number":144,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":145,"context_line":"            LOG.exception(_(\"IPsec config not found on edge: %s\"), edge_id)"},{"line_number":146,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":147,"context_line":"            LOG.exception(_(\"Failed to delete ipsec vpn configuration \""},{"line_number":148,"context_line":"                            \"with edge_id: %s\"), edge_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7iQ%3D","line":145,"in_reply_to":"AAAAUX%2F%2Bf%2F8%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FEs%3D","line":1,"updated":"2014-03-02 23:34:49.000000000","message":"please update to 2014","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BcY%3D","line":1,"in_reply_to":"AAAAVn%2F%2F%2FEs%3D","updated":"2014-03-03 03:07:11.000000000","message":"Done","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            ikepolicy[\u0027pfs\u0027] !\u003d ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":63,"context_line":"            msg \u003d _(\"IKEPolicy and IPsecPolicy should have consistent \""},{"line_number":64,"context_line":"                    \"auth_algorithm, encryption_algorithm and pfs for VSE!\")"},{"line_number":65,"context_line":"            LOG.error(msg)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # Check whether encryption_algorithm is allowed."},{"line_number":68,"context_line":"        encryption_algorithm \u003d ENCRYPTION_ALGORITHM_MAP.get("}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FFU%3D","line":65,"updated":"2014-03-02 23:34:49.000000000","message":"consider LOG.warn rather than error","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            ikepolicy[\u0027pfs\u0027] !\u003d ipsecpolicy[\u0027pfs\u0027]):"},{"line_number":63,"context_line":"            msg \u003d _(\"IKEPolicy and IPsecPolicy should have consistent \""},{"line_number":64,"context_line":"                    \"auth_algorithm, encryption_algorithm and pfs for VSE!\")"},{"line_number":65,"context_line":"            LOG.error(msg)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # Check whether encryption_algorithm is allowed."},{"line_number":68,"context_line":"        encryption_algorithm \u003d ENCRYPTION_ALGORITHM_MAP.get("}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BcU%3D","line":65,"in_reply_to":"AAAAVn%2F%2F%2FFU%3D","updated":"2014-03-03 03:07:11.000000000","message":"Done","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"}],"neutron/tests/unit/db/vpn/test_db_vpnaas.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                 if k in dpd))"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _set_active(self, model, resource_id):"},{"line_number":384,"context_line":"        service_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":385,"context_line":"            constants.VPN]"},{"line_number":386,"context_line":"        adminContext \u003d context.get_admin_context()"},{"line_number":387,"context_line":"        with adminContext.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMX0%3D","line":384,"updated":"2013-11-13 05:12:50.000000000","message":"I think you can use self.plugin here since it\u0027s set in L409.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                 if k in dpd))"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _set_active(self, model, resource_id):"},{"line_number":384,"context_line":"        service_plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":385,"context_line":"            constants.VPN]"},{"line_number":386,"context_line":"        adminContext \u003d context.get_admin_context()"},{"line_number":387,"context_line":"        with adminContext.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLu0%3D","line":384,"in_reply_to":"AAAATn%2F%2FMX0%3D","updated":"2013-11-13 09:03:43.000000000","message":"In this file, I just extract useful functions from VPNPluginDbTestCase class into VPNTestMixin. Thus i can inherit VPNTestMixin class rather than VPNPluginDbTestCase to use these functions.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ac00b4159283281db018afae0253bdc093320bf8","unresolved":false,"context_lines":[{"line_number":404,"context_line":"            plugin_str,"},{"line_number":405,"context_line":"            service_plugins\u003dservice_plugins"},{"line_number":406,"context_line":"        )"},{"line_number":407,"context_line":"        self._subnet_id \u003d \"0c798ed8-33ba-11e2-8b28-000c291c4d14\""},{"line_number":408,"context_line":"        self.core_plugin \u003d TestVpnCorePlugin"},{"line_number":409,"context_line":"        self.plugin \u003d vpn_plugin.VPNPlugin()"},{"line_number":410,"context_line":"        ext_mgr \u003d PluginAwareExtensionManager("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FKwA%3D","line":407,"updated":"2013-11-13 13:09:39.000000000","message":"why not use uuiduitls.generate_uuid","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b610be8da209b987c45147c5adf366f7e8a1275c","unresolved":false,"context_lines":[{"line_number":404,"context_line":"            plugin_str,"},{"line_number":405,"context_line":"            service_plugins\u003dservice_plugins"},{"line_number":406,"context_line":"        )"},{"line_number":407,"context_line":"        self._subnet_id \u003d \"0c798ed8-33ba-11e2-8b28-000c291c4d14\""},{"line_number":408,"context_line":"        self.core_plugin \u003d TestVpnCorePlugin"},{"line_number":409,"context_line":"        self.plugin \u003d vpn_plugin.VPNPlugin()"},{"line_number":410,"context_line":"        ext_mgr \u003d PluginAwareExtensionManager("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FIfA%3D","line":407,"in_reply_to":"AAAATn%2F%2FKwA%3D","updated":"2013-11-14 05:38:52.000000000","message":"Done","commit_id":"d6d106c5d04b1c1df3a9b7986b338ad8f11f5dd5"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c57fade91e666a970933da7987b9786e16042539","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                            \u0027ipsec_site_connection\u0027][\u0027id\u0027]"},{"line_number":370,"context_line":"                    )"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def _check_ipsec_site_connection(self, ipsec_site_connection, keys, dpd):"},{"line_number":373,"context_line":"        self.assertEqual("},{"line_number":374,"context_line":"            keys,"},{"line_number":375,"context_line":"            dict((k, v) for k, v"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9I%2BM%3D","line":372,"updated":"2013-12-16 12:18:44.000000000","message":"Consider renaming \u0027keys\u0027 as it is a dict.","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2f2346dd662d4bf385f7e2ba81aa7aa31dbc3124","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                            \u0027ipsec_site_connection\u0027][\u0027id\u0027]"},{"line_number":370,"context_line":"                    )"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def _check_ipsec_site_connection(self, ipsec_site_connection, keys, dpd):"},{"line_number":373,"context_line":"        self.assertEqual("},{"line_number":374,"context_line":"            keys,"},{"line_number":375,"context_line":"            dict((k, v) for k, v"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9Ejs%3D","line":372,"in_reply_to":"AAAATn%2F9I%2BM%3D","updated":"2013-12-17 05:05:07.000000000","message":"I expect minim changes on the file. All i did on this file is to migrate some basic funcs such as _check_ipsec_site_connection and _set_active from class VPNPluginDTestCase into class VPNTestMixin. So now I would just keep the nits.","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c57fade91e666a970933da7987b9786e16042539","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                    )"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def _check_ipsec_site_connection(self, ipsec_site_connection, keys, dpd):"},{"line_number":373,"context_line":"        self.assertEqual("},{"line_number":374,"context_line":"            keys,"},{"line_number":375,"context_line":"            dict((k, v) for k, v"},{"line_number":376,"context_line":"                 in ipsec_site_connection.items()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9I%2BI%3D","line":373,"updated":"2013-12-16 12:18:44.000000000","message":"Maybe able to use assertDictContainsSubset()?","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2f2346dd662d4bf385f7e2ba81aa7aa31dbc3124","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                    )"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def _check_ipsec_site_connection(self, ipsec_site_connection, keys, dpd):"},{"line_number":373,"context_line":"        self.assertEqual("},{"line_number":374,"context_line":"            keys,"},{"line_number":375,"context_line":"            dict((k, v) for k, v"},{"line_number":376,"context_line":"                 in ipsec_site_connection.items()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9Ejo%3D","line":373,"in_reply_to":"AAAATn%2F9I%2BI%3D","updated":"2013-12-17 05:05:07.000000000","message":"The same.","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"}],"neutron/tests/unit/nicira/test_vpnaas_plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8bfad7137ad431428259fae900dae38f934b2ddb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def setUp(self):"},{"line_number":69,"context_line":"        # Save the global RESOURCE_ATTRIBUTE_MAP"},{"line_number":70,"context_line":"        self.saved_attr_map \u003d {}"},{"line_number":71,"context_line":"        for resource, attrs in attributes.RESOURCE_ATTRIBUTE_MAP.iteritems():"},{"line_number":72,"context_line":"            self.saved_attr_map[resource] \u003d attrs.copy()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        super(TestVpnPlugin, self).setUp(ext_mgr\u003dVpnTestExtensionManager())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FPCw%3D","line":71,"updated":"2013-11-12 14:35:15.000000000","message":"items() vs iteritems() for python3 compatibility","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def setUp(self):"},{"line_number":69,"context_line":"        # Save the global RESOURCE_ATTRIBUTE_MAP"},{"line_number":70,"context_line":"        self.saved_attr_map \u003d {}"},{"line_number":71,"context_line":"        for resource, attrs in attributes.RESOURCE_ATTRIBUTE_MAP.iteritems():"},{"line_number":72,"context_line":"            self.saved_attr_map[resource] \u003d attrs.copy()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        super(TestVpnPlugin, self).setUp(ext_mgr\u003dVpnTestExtensionManager())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMvY%3D","line":71,"in_reply_to":"AAAATn%2F%2FPCw%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                  \u0027vpnsname\u0027: \u0027vpnservice1\u0027,"},{"line_number":137,"context_line":"                  \u0027subnet_cidr\u0027: \u002710.2.0.0/24\u0027,"},{"line_number":138,"context_line":"                  \u0027subnet_version\u0027: 4}"},{"line_number":139,"context_line":"        if setup_overrides is not None:"},{"line_number":140,"context_line":"            params.update(setup_overrides)"},{"line_number":141,"context_line":"        keys \u003d {\u0027name\u0027: \u0027connection1\u0027,"},{"line_number":142,"context_line":"                \u0027description\u0027: \u0027my-ipsec-connection\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMWk%3D","line":139,"updated":"2013-11-13 05:12:50.000000000","message":"if setup_overrides:","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                  \u0027vpnsname\u0027: \u0027vpnservice1\u0027,"},{"line_number":137,"context_line":"                  \u0027subnet_cidr\u0027: \u002710.2.0.0/24\u0027,"},{"line_number":138,"context_line":"                  \u0027subnet_version\u0027: 4}"},{"line_number":139,"context_line":"        if setup_overrides is not None:"},{"line_number":140,"context_line":"            params.update(setup_overrides)"},{"line_number":141,"context_line":"        keys \u003d {\u0027name\u0027: \u0027connection1\u0027,"},{"line_number":142,"context_line":"                \u0027description\u0027: \u0027my-ipsec-connection\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLus%3D","line":139,"in_reply_to":"AAAATn%2F%2FMWk%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                \u0027psk\u0027: \u0027abcd\u0027,"},{"line_number":150,"context_line":"                \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":151,"context_line":"                \u0027admin_state_up\u0027: True}"},{"line_number":152,"context_line":"        if key_overrides is not None:"},{"line_number":153,"context_line":"            keys.update(key_overrides)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        ike_keys \u003d {\u0027name\u0027: params[\u0027ikename\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMWw%3D","line":152,"updated":"2013-11-13 05:12:50.000000000","message":"if key_overrides:","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                \u0027psk\u0027: \u0027abcd\u0027,"},{"line_number":150,"context_line":"                \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":151,"context_line":"                \u0027admin_state_up\u0027: True}"},{"line_number":152,"context_line":"        if key_overrides is not None:"},{"line_number":153,"context_line":"            keys.update(key_overrides)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        ike_keys \u003d {\u0027name\u0027: params[\u0027ikename\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLuo%3D","line":152,"in_reply_to":"AAAATn%2F%2FMWw%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    \u0027encryption_algorithm\u0027: \u0027aes-128\u0027,"},{"line_number":158,"context_line":"                    \u0027ike_version\u0027: \u0027v1\u0027,"},{"line_number":159,"context_line":"                    \u0027pfs\u0027: \u0027group5\u0027}"},{"line_number":160,"context_line":"        if ike_key_overrides is not None:"},{"line_number":161,"context_line":"            ike_keys.update(ike_key_overrides)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        ipsec_keys \u003d {\u0027name\u0027: params[\u0027ipsecname\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMWs%3D","line":160,"updated":"2013-11-13 05:12:50.000000000","message":"same as above","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    \u0027encryption_algorithm\u0027: \u0027aes-128\u0027,"},{"line_number":158,"context_line":"                    \u0027ike_version\u0027: \u0027v1\u0027,"},{"line_number":159,"context_line":"                    \u0027pfs\u0027: \u0027group5\u0027}"},{"line_number":160,"context_line":"        if ike_key_overrides is not None:"},{"line_number":161,"context_line":"            ike_keys.update(ike_key_overrides)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        ipsec_keys \u003d {\u0027name\u0027: params[\u0027ipsecname\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLuk%3D","line":160,"in_reply_to":"AAAATn%2F%2FMWs%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                      \u0027auth_algorithm\u0027: \u0027sha1\u0027,"},{"line_number":165,"context_line":"                      \u0027encryption_algorithm\u0027: \u0027aes-128\u0027,"},{"line_number":166,"context_line":"                      \u0027pfs\u0027: \u0027group5\u0027}"},{"line_number":167,"context_line":"        if ipsec_key_overrides is not None:"},{"line_number":168,"context_line":"            ipsec_keys.update(ipsec_key_overrides)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        dpd \u003d {\u0027action\u0027: \u0027hold\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMWo%3D","line":167,"updated":"2013-11-13 05:12:50.000000000","message":"same","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                      \u0027auth_algorithm\u0027: \u0027sha1\u0027,"},{"line_number":165,"context_line":"                      \u0027encryption_algorithm\u0027: \u0027aes-128\u0027,"},{"line_number":166,"context_line":"                      \u0027pfs\u0027: \u0027group5\u0027}"},{"line_number":167,"context_line":"        if ipsec_key_overrides is not None:"},{"line_number":168,"context_line":"            ipsec_keys.update(ipsec_key_overrides)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        dpd \u003d {\u0027action\u0027: \u0027hold\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLug%3D","line":167,"in_reply_to":"AAAATn%2F%2FMWo%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                             pfs\u003dipsec_keys[\u0027pfs\u0027]),"},{"line_number":183,"context_line":"            self.subnet(cidr\u003dparams[\u0027subnet_cidr\u0027],"},{"line_number":184,"context_line":"                        ip_version\u003dparams[\u0027subnet_version\u0027]),"},{"line_number":185,"context_line":"            self.router()) as ("},{"line_number":186,"context_line":"                ikepolicy, ipsecpolicy, subnet, router):"},{"line_number":187,"context_line":"                with self.vpnservice(name\u003dparams[\u0027vpnsname\u0027], subnet\u003dsubnet,"},{"line_number":188,"context_line":"                                     router\u003drouter) as vpnservice1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMW0%3D","line":185,"updated":"2013-11-13 05:12:50.000000000","message":"nit: i think would be a bit more readable if formatted like the following:\n\n    self.router()\n) as (ikepolicy, ipsecpolicy, subnet, router):","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                             pfs\u003dipsec_keys[\u0027pfs\u0027]),"},{"line_number":183,"context_line":"            self.subnet(cidr\u003dparams[\u0027subnet_cidr\u0027],"},{"line_number":184,"context_line":"                        ip_version\u003dparams[\u0027subnet_version\u0027]),"},{"line_number":185,"context_line":"            self.router()) as ("},{"line_number":186,"context_line":"                ikepolicy, ipsecpolicy, subnet, router):"},{"line_number":187,"context_line":"                with self.vpnservice(name\u003dparams[\u0027vpnsname\u0027], subnet\u003dsubnet,"},{"line_number":188,"context_line":"                                     router\u003drouter) as vpnservice1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLuE%3D","line":185,"in_reply_to":"AAAATn%2F%2FMW0%3D","updated":"2013-11-13 09:03:43.000000000","message":"Right, Done.","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                \u0027subnet_cidr\u0027: \u002710.2.0.0/24\u0027,"},{"line_number":264,"context_line":"                \u0027subnet_version\u0027: 4,"},{"line_number":265,"context_line":"                \u0027make_active\u0027: True}"},{"line_number":266,"context_line":"        if overrides is not None:"},{"line_number":267,"context_line":"            keys.update(overrides)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        with contextlib.nested("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMXk%3D","line":266,"updated":"2013-11-13 05:12:50.000000000","message":"if overrides:","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                \u0027subnet_cidr\u0027: \u002710.2.0.0/24\u0027,"},{"line_number":264,"context_line":"                \u0027subnet_version\u0027: 4,"},{"line_number":265,"context_line":"                \u0027make_active\u0027: True}"},{"line_number":266,"context_line":"        if overrides is not None:"},{"line_number":267,"context_line":"            keys.update(overrides)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        with contextlib.nested("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLuc%3D","line":266,"in_reply_to":"AAAATn%2F%2FMXk%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"cd211dd76d3048b97a58467c08616ca5b00ce332","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                    description\u003dkeys[\u0027description\u0027]"},{"line_number":298,"context_line":"                ) as ipsec_site_connection:"},{"line_number":299,"context_line":"                    data \u003d {\u0027ipsec_site_connection\u0027: update}"},{"line_number":300,"context_line":"                    if keys.get(\u0027make_active\u0027, None):"},{"line_number":301,"context_line":"                        self._set_active("},{"line_number":302,"context_line":"                            vpn_db.IPsecSiteConnection,"},{"line_number":303,"context_line":"                            (ipsec_site_connection[\u0027ipsec_site_connection\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FMXg%3D","line":300,"updated":"2013-11-13 05:12:50.000000000","message":"None could be omitted","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"4f9d0c4d6cb2e83855caaeafefb503b8040fcfc8","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                    description\u003dkeys[\u0027description\u0027]"},{"line_number":298,"context_line":"                ) as ipsec_site_connection:"},{"line_number":299,"context_line":"                    data \u003d {\u0027ipsec_site_connection\u0027: update}"},{"line_number":300,"context_line":"                    if keys.get(\u0027make_active\u0027, None):"},{"line_number":301,"context_line":"                        self._set_active("},{"line_number":302,"context_line":"                            vpn_db.IPsecSiteConnection,"},{"line_number":303,"context_line":"                            (ipsec_site_connection[\u0027ipsec_site_connection\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FLuQ%3D","line":300,"in_reply_to":"AAAATn%2F%2FMXg%3D","updated":"2013-11-13 09:03:43.000000000","message":"Done","commit_id":"931d5521ef555819595a83b93449c77dec54e833"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c57fade91e666a970933da7987b9786e16042539","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def test_update_vpnservice(self):"},{"line_number":132,"context_line":"        \"\"\"Test case to update a vpnservice.\"\"\""},{"line_number":133,"context_line":"        name \u003d \u0027new_vpnservice1\u0027"},{"line_number":134,"context_line":"        keys \u003d [(\u0027name\u0027, name)]"},{"line_number":135,"context_line":"        with contextlib.nested("},{"line_number":136,"context_line":"            self.subnet(cidr\u003d\u002710.2.0.0/24\u0027),"},{"line_number":137,"context_line":"            self.router()) as (subnet, router):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9JCc%3D","line":134,"updated":"2013-12-16 12:18:44.000000000","message":"Can a better name than keys be used here?\n\nWhy not make this a dict?\n\nMaybe use assertDictContainsSubset() then in L156?","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2f2346dd662d4bf385f7e2ba81aa7aa31dbc3124","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def test_update_vpnservice(self):"},{"line_number":132,"context_line":"        \"\"\"Test case to update a vpnservice.\"\"\""},{"line_number":133,"context_line":"        name \u003d \u0027new_vpnservice1\u0027"},{"line_number":134,"context_line":"        keys \u003d [(\u0027name\u0027, name)]"},{"line_number":135,"context_line":"        with contextlib.nested("},{"line_number":136,"context_line":"            self.subnet(cidr\u003d\u002710.2.0.0/24\u0027),"},{"line_number":137,"context_line":"            self.router()) as (subnet, router):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9EVc%3D","line":134,"in_reply_to":"AAAATn%2F9JCc%3D","updated":"2013-12-17 05:05:07.000000000","message":"Right, Done","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c57fade91e666a970933da7987b9786e16042539","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if setup_overrides:"},{"line_number":171,"context_line":"            params.update(setup_overrides)"},{"line_number":172,"context_line":"        keys \u003d {\u0027name\u0027: \u0027connection1\u0027,"},{"line_number":173,"context_line":"                \u0027description\u0027: \u0027my-ipsec-connection\u0027,"},{"line_number":174,"context_line":"                \u0027peer_address\u0027: \u0027192.168.1.10\u0027,"},{"line_number":175,"context_line":"                \u0027peer_id\u0027: \u0027192.168.1.10\u0027,"},{"line_number":176,"context_line":"                \u0027peer_cidrs\u0027: [\u0027192.168.2.0/24\u0027, \u0027192.168.3.0/24\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9JAU%3D","line":173,"updated":"2013-12-16 12:18:44.000000000","message":"Better name for keys, as it is a dict?\n\nSame in other tests...","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2f2346dd662d4bf385f7e2ba81aa7aa31dbc3124","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if setup_overrides:"},{"line_number":171,"context_line":"            params.update(setup_overrides)"},{"line_number":172,"context_line":"        keys \u003d {\u0027name\u0027: \u0027connection1\u0027,"},{"line_number":173,"context_line":"                \u0027description\u0027: \u0027my-ipsec-connection\u0027,"},{"line_number":174,"context_line":"                \u0027peer_address\u0027: \u0027192.168.1.10\u0027,"},{"line_number":175,"context_line":"                \u0027peer_id\u0027: \u0027192.168.1.10\u0027,"},{"line_number":176,"context_line":"                \u0027peer_cidrs\u0027: [\u0027192.168.2.0/24\u0027, \u0027192.168.3.0/24\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9EUg%3D","line":173,"in_reply_to":"AAAATn%2F9JAU%3D","updated":"2013-12-17 05:05:07.000000000","message":"Done. Replace keys with expected.","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c57fade91e666a970933da7987b9786e16042539","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                    self.assertEqual(expected_status_int, res.status_int)"},{"line_number":342,"context_line":"                    if expected_status_int \u003d\u003d 200:"},{"line_number":343,"context_line":"                        res_dict \u003d self.deserialize(self.fmt, res)"},{"line_number":344,"context_line":"                        for k, v in update.items():"},{"line_number":345,"context_line":"                            self.assertEqual("},{"line_number":346,"context_line":"                                res_dict[\u0027ipsec_site_connection\u0027][k], v)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9I%2Bs%3D","line":344,"updated":"2013-12-16 12:18:44.000000000","message":"assertDictContainsSubset()?","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"33377a7c8cf7ce44c81ef0710c0c0f3a4be39c8a","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                    self.assertEqual(expected_status_int, res.status_int)"},{"line_number":342,"context_line":"                    if expected_status_int \u003d\u003d 200:"},{"line_number":343,"context_line":"                        res_dict \u003d self.deserialize(self.fmt, res)"},{"line_number":344,"context_line":"                        for k, v in update.items():"},{"line_number":345,"context_line":"                            self.assertEqual("},{"line_number":346,"context_line":"                                res_dict[\u0027ipsec_site_connection\u0027][k], v)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9EAI%3D","line":344,"in_reply_to":"AAAATn%2F9EUM%3D","updated":"2013-12-17 06:23:35.000000000","message":"Hmm, python 2.6 didn\u0027t have this func and it would be deprecated since 3.2. So I would have to change it back.","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2f2346dd662d4bf385f7e2ba81aa7aa31dbc3124","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                    self.assertEqual(expected_status_int, res.status_int)"},{"line_number":342,"context_line":"                    if expected_status_int \u003d\u003d 200:"},{"line_number":343,"context_line":"                        res_dict \u003d self.deserialize(self.fmt, res)"},{"line_number":344,"context_line":"                        for k, v in update.items():"},{"line_number":345,"context_line":"                            self.assertEqual("},{"line_number":346,"context_line":"                                res_dict[\u0027ipsec_site_connection\u0027][k], v)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9EUM%3D","line":344,"in_reply_to":"AAAATn%2F9I%2Bs%3D","updated":"2013-12-17 05:05:07.000000000","message":"Done","commit_id":"142edbd8c09a8475f92b73247d989fbb0316ddaa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Bf%2B4%3D","line":1,"updated":"2014-02-20 20:49:06.000000000","message":"please remove","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7gk%3D","line":1,"in_reply_to":"AAAAUX%2F%2Bf%2B4%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: linb, VMware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"},{"line_number":20,"context_line":"import copy"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Bf%2B0%3D","line":17,"updated":"2014-02-20 20:49:06.000000000","message":"please remove","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: linb, VMware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"},{"line_number":20,"context_line":"import copy"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7gg%3D","line":17,"in_reply_to":"AAAAUX%2F%2Bf%2B0%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b8d25116b0a4b3305292088e0940f5b3e29b7169","unresolved":false,"context_lines":[{"line_number":32,"context_line":"_uuid \u003d uuidutils.generate_uuid"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"VPNAAS_PLUGIN_CLASS \u003d ("},{"line_number":35,"context_line":"    \"neutron.plugins.nicira.NeutronServicePlugin.NvpAdvancedPlugin\""},{"line_number":36,"context_line":")"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Bf%2Bc%3D","line":35,"updated":"2014-02-20 20:49:06.000000000","message":"please consider using variable in __init__ for nicira unit tests.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b93fa35ae2b36df657fde6880a712f5e4c57d26a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"_uuid \u003d uuidutils.generate_uuid"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"VPNAAS_PLUGIN_CLASS \u003d ("},{"line_number":35,"context_line":"    \"neutron.plugins.nicira.NeutronServicePlugin.NvpAdvancedPlugin\""},{"line_number":36,"context_line":")"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2F7fo%3D","line":35,"in_reply_to":"AAAAUX%2F%2Bf%2Bc%3D","updated":"2014-02-24 01:51:44.000000000","message":"Done.","commit_id":"14cc97a6a16ae4bfa44a15f700b10a9396ae2632"}],"neutron/tests/unit/nicira/vshield/fake_vcns.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"44c91c6caa4a342014d8092bffac9913e72470c6","unresolved":false,"context_lines":[{"line_number":539,"context_line":"    #"},{"line_number":540,"context_line":"    def update_ipsec_config(self, edge_id, ipsec_config):"},{"line_number":541,"context_line":"        self.fake_ipsecvpn_dict[edge_id] \u003d ipsec_config"},{"line_number":542,"context_line":"        header \u003d {\u0027status\u0027: 204}"},{"line_number":543,"context_line":"        response \u003d \"\""},{"line_number":544,"context_line":"        return self.return_helper(header, response)"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FGBo%3D","line":542,"updated":"2013-11-14 13:53:23.000000000","message":"Consider using webob.exc.HTTPNoContent here and in other status codes for readability.","commit_id":"35ce1f43f8bdef93929947edd7828d60361fb8e4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"2b259002ae5d42ed9680918500a87f0e663afade","unresolved":false,"context_lines":[{"line_number":539,"context_line":"    #"},{"line_number":540,"context_line":"    def update_ipsec_config(self, edge_id, ipsec_config):"},{"line_number":541,"context_line":"        self.fake_ipsecvpn_dict[edge_id] \u003d ipsec_config"},{"line_number":542,"context_line":"        header \u003d {\u0027status\u0027: 204}"},{"line_number":543,"context_line":"        response \u003d \"\""},{"line_number":544,"context_line":"        return self.return_helper(header, response)"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FEpI%3D","line":542,"in_reply_to":"AAAATn%2F%2FGBo%3D","updated":"2013-11-14 19:45:23.000000000","message":"i think it\u0027s ok to use numeric representation since they are used in other places in this file as well.\nAlso, those numbers are known by anyone who knows HTTP.\nI think choosing numbers vs constants in this case is a matter of author\u0027s personal taste and then a matter of style consistency within a given file.","commit_id":"35ce1f43f8bdef93929947edd7828d60361fb8e4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d6c1a697f0ce62a165f8041f6dc3b1703937221e","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    #"},{"line_number":538,"context_line":"    #Fake Edge IPsec VPNaaS call"},{"line_number":539,"context_line":"    #"},{"line_number":540,"context_line":"    def update_ipsec_config(self, edge_id, ipsec_config):"},{"line_number":541,"context_line":"        self.fake_ipsecvpn_dict[edge_id] \u003d ipsec_config"},{"line_number":542,"context_line":"        header \u003d {\u0027status\u0027: 204}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BE7U%3D","line":539,"updated":"2013-12-02 20:01:26.000000000","message":"nit: see hackings.rst for commenting style","commit_id":"8c04e724556fc693b4dd66d4ebcb6339d60cc2e9"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"b324ca23e51da0568022cc88b01765c62754530a","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    #"},{"line_number":538,"context_line":"    #Fake Edge IPsec VPNaaS call"},{"line_number":539,"context_line":"    #"},{"line_number":540,"context_line":"    def update_ipsec_config(self, edge_id, ipsec_config):"},{"line_number":541,"context_line":"        self.fake_ipsecvpn_dict[edge_id] \u003d ipsec_config"},{"line_number":542,"context_line":"        header \u003d {\u0027status\u0027: 204}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BCvA%3D","line":539,"in_reply_to":"AAAATn%2F%2BE7U%3D","updated":"2013-12-03 05:31:51.000000000","message":"Done","commit_id":"8c04e724556fc693b4dd66d4ebcb6339d60cc2e9"}],"neutron/tests/unit/vmware/test_nsx_plugin.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"71e3fd9cc135e64a4c5d4b21d8e1a99f344843ae","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                                      pnet.SEGMENTATION_ID))"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"class TestL3NatTestCase(L3NatTest,"},{"line_number":474,"context_line":"                        test_l3_plugin.L3NatDBIntTestCase,"},{"line_number":475,"context_line":"                        NsxPluginV2TestCase):"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F0Xg%3D","line":473,"updated":"2014-02-28 03:22:41.000000000","message":"was moving this definition here necessary? I recall Salvatore\u0027s doing something in the other direction.","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d501eea380ea7b417694d478514eda961c550a41","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                                      pnet.SEGMENTATION_ID))"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"class TestL3NatTestCase(L3NatTest,"},{"line_number":474,"context_line":"                        test_l3_plugin.L3NatDBIntTestCase,"},{"line_number":475,"context_line":"                        NsxPluginV2TestCase):"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2Fi0%3D","line":473,"in_reply_to":"AAAAVX%2F%2F0Ts%3D","updated":"2014-03-02 20:55:35.000000000","message":"If we could avoid running tests more than necessary, it would be better.","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"80f740a954e2cadae04554cd3c3505419b502881","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                                      pnet.SEGMENTATION_ID))"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"class TestL3NatTestCase(L3NatTest,"},{"line_number":474,"context_line":"                        test_l3_plugin.L3NatDBIntTestCase,"},{"line_number":475,"context_line":"                        NsxPluginV2TestCase):"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F0Ts%3D","line":473,"in_reply_to":"AAAAVX%2F%2F0Xg%3D","updated":"2014-02-28 03:34:09.000000000","message":"Since VPNaaS service needs the router must have gateway, so I need the \"_create_l3_ext_network\" definition to create an external network. Then in case of inheriting TestL3NatTestCase leading to duplicate test cases, I extract the definition into L3NatTest. Is it not good to do the operation, if so, i would define the \"_create_l3_ext_network\" call in my own Test class.","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"}],"neutron/tests/unit/vmware/vshield/test_vpnaas_plugin.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e11bd584ad912ba900de57f1e65052887bbdcdff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2FEA%3D","line":1,"updated":"2014-03-02 23:34:49.000000000","message":"please update to 2014","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"54358d22e6d4c12fb4623c0f24765f6008ae3515","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BbA%3D","line":1,"in_reply_to":"AAAAVn%2F%2F%2FEA%3D","updated":"2014-03-03 03:07:11.000000000","message":"Done","commit_id":"91adb83d6a56de83b057a6c7f554bd8f0fdf7bd8"}]}
