)]}'
{"neutron/services/vpn/common/constants.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","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 2014 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Bhlg%3D","line":1,"updated":"2014-02-20 18:39:38.000000000","message":"remove vim line on all new files","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"}],"neutron/services/vpn/device_drivers/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class BaseProcess(object):"},{"line_number":24,"context_line":"    @abc.abstractmethod"},{"line_number":25,"context_line":"    def ensure_configs(self):"},{"line_number":26,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2BvY%3D","line":23,"updated":"2014-01-31 12:54:17.000000000","message":"Should this be BaseSwanProcess (or some such) as it is an ABS for OpenSwan/StrongSwan type device drivers?","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class BaseProcess(object):"},{"line_number":24,"context_line":"    @abc.abstractmethod"},{"line_number":25,"context_line":"    def ensure_configs(self):"},{"line_number":26,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FBU%3D","line":23,"updated":"2014-02-23 03:29:17.000000000","message":"This class is extra and does not add value.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class BaseProcess(object):"},{"line_number":24,"context_line":"    @abc.abstractmethod"},{"line_number":25,"context_line":"    def ensure_configs(self):"},{"line_number":26,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxGE%3D","line":23,"in_reply_to":"AAAAU3%2F%2F%2FBU%3D","updated":"2014-02-24 21:56:43.000000000","message":"This is existing class which wsa moved to new file. So, it shows up as new class. It is extended by \u0027 BaseSwanProcess\u0027 and \u0027OpenVPNProcess\u0027.  These methods are implemented those classes.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"}],"neutron/services/vpn/device_drivers/ipsec.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    return JINJA_ENV.get_template(template_file)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class BaseSwanProcess(device_drivers.BaseProcess):"},{"line_number":90,"context_line":"    \"\"\"Swan Family Process Manager"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    This class manages start/restart/stop ipsec process."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2Bus%3D","line":89,"updated":"2014-01-31 12:54:17.000000000","message":"IF BaseProcess -\u003e BaseSwanProcess, could this be renamed?\n\nMaybe BaseOpenSwanProcess?","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"}],"neutron/services/vpn/device_drivers/linux.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return JINJA_ENV.get_template(template_file)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class BaseLinuxProcess(device_drivers.BaseProcess):"},{"line_number":42,"context_line":"    \"\"\"Linux Process Manager"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    This class manages start/restart/stop linux process."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FBQ%3D","line":41,"updated":"2014-02-23 03:29:17.000000000","message":"Should inherit from object.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return JINJA_ENV.get_template(template_file)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class BaseLinuxProcess(device_drivers.BaseProcess):"},{"line_number":42,"context_line":"    \"\"\"Linux Process Manager"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    This class manages start/restart/stop linux process."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxEA%3D","line":41,"in_reply_to":"AAAAU3%2F%2F%2FBQ%3D","updated":"2014-02-24 21:56:43.000000000","message":"\u0027BaseSwanProcess\u0027 and \u0027OpenVPNProcess\u0027 implement BaseProcess. Some of the helper functions are implemented in LinuxProcess.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"}],"neutron/services/vpn/device_drivers/sslvpn.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def ensure_config_file(self, template, vpnservice):"},{"line_number":97,"context_line":"        \"\"\"Update config file,  based on current settings for service.\"\"\""},{"line_number":98,"context_line":"        config_file_name \u003d self._get_config_filename(\u0027ca.crt\u0027)"},{"line_number":99,"context_line":"        utils.replace_file(config_file_name, vpnservice[\u0027ssl_vpn_connections\u0027][0][\u0027vpncredential\u0027][\u0027ca\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        config_file_name \u003d self._get_config_filename(\u0027server.crt\u0027)"},{"line_number":102,"context_line":"        utils.replace_file(config_file_name, vpnservice[\u0027ssl_vpn_connections\u0027][0][\u0027vpncredential\u0027][\u0027server_certificate\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0nY%3D","line":99,"updated":"2014-02-18 19:58:14.000000000","message":"IMO, we should take care all associated vpn connections","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def get_status(self):"},{"line_number":184,"context_line":"        #TODO(rajesh) get and update connection status"},{"line_number":185,"context_line":"        raise RuntimeError()"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def restart(self):"},{"line_number":188,"context_line":"        \"\"\"Restart the process.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0m8%3D","line":185,"updated":"2014-02-18 19:58:14.000000000","message":"Why we need to raise this error?","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        \"\"\""},{"line_number":199,"context_line":"        if not self.namespace:"},{"line_number":200,"context_line":"            return"},{"line_number":201,"context_line":"        #TODO (Rajesh) Start OpenVPN server"},{"line_number":202,"context_line":"        config_file_name \u003d self._get_config_filename(\u0027openvpn.conf\u0027)"},{"line_number":203,"context_line":"        self._execute([self.binary,"},{"line_number":204,"context_line":"                       \u0027--tls-server\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0mw%3D","line":201,"updated":"2014-02-18 19:58:14.000000000","message":"Is this TODO still valid?","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                       ])"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def stop(self):"},{"line_number":209,"context_line":"        #Stop process using whack"},{"line_number":210,"context_line":"        #Note this will also stop pluto"},{"line_number":211,"context_line":"        self.disconnect()"},{"line_number":212,"context_line":"        #TODO (Rajesh) Stop OpenVPN server"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0ms%3D","line":209,"updated":"2014-02-18 19:58:14.000000000","message":"This comment is invalid","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        vpnservices \u003d self.agent_rpc.get_vpn_services_on_host("},{"line_number":376,"context_line":"            context, self.host)"},{"line_number":377,"context_line":"        router_ids \u003d [vpnservice[\u0027router_id\u0027] for vpnservice in vpnservices]"},{"line_number":378,"context_line":"        # Ensure the ipsec process is enabled"},{"line_number":379,"context_line":"        for vpnservice in vpnservices:"},{"line_number":380,"context_line":"            process \u003d self.ensure_process(vpnservice[\u0027router_id\u0027],"},{"line_number":381,"context_line":"                                          vpnservice\u003dvpnservice)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0mU%3D","line":378,"updated":"2014-02-18 19:58:14.000000000","message":"ssl vpn?","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                                          vpnservice\u003dvpnservice)"},{"line_number":382,"context_line":"            process.update()"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        # Delete any IPSec processes that are"},{"line_number":385,"context_line":"        # associated with routers, but are not running the VPN service."},{"line_number":386,"context_line":"        for router in routers:"},{"line_number":387,"context_line":"            #We are using router id as process_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0mM%3D","line":384,"updated":"2014-02-18 19:58:14.000000000","message":"ssl vpn?","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"a337b40e470e45629441773c5500e6bae617b614","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                process \u003d self.ensure_process(process_id)"},{"line_number":391,"context_line":"                self.destroy_router(process_id)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        # Delete any IPSec processes running"},{"line_number":394,"context_line":"        # VPN that do not have an associated router."},{"line_number":395,"context_line":"        process_ids \u003d [process_id"},{"line_number":396,"context_line":"                       for process_id in self.processes"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B0mI%3D","line":393,"updated":"2014-02-18 19:58:14.000000000","message":"ssl vpn?","commit_id":"df22b8fa4abbe2b2a8b2e3040a7746847ab4b417"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def get_connection_status(self, conn_id):"},{"line_number":96,"context_line":"        if conn_id not in self._connection_status:"},{"line_number":97,"context_line":"            self.connection_status[conn_id] \u003d {"},{"line_number":98,"context_line":"                \u0027status\u0027: None"},{"line_number":99,"context_line":"            }"},{"line_number":100,"context_line":"        return self.connection_status[conn_id]"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhNg%3D","line":97,"updated":"2014-02-20 18:39:38.000000000","message":"Where is the connection_status deleted, when connections are deleted? I think this is a problem in the core IPSec device driver too (just noticed when I did my VPN plugin and haven\u0027t had time to file a bug).","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        \"\"\"Update Status based on vpnservice configuration.\"\"\""},{"line_number":174,"context_line":"        super(OpenVPNProcess, self).update()"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        self.vpnservice[\u0027status\u0027] \u003d self.status"},{"line_number":177,"context_line":"        for ssl_vpn_conn in self.vpnservice[\u0027ssl_vpn_connections\u0027]:"},{"line_number":178,"context_line":"            if plugin_utils.in_pending_status(ssl_vpn_conn[\u0027status\u0027]):"},{"line_number":179,"context_line":"                conn_id \u003d ssl_vpn_conn[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Bhf8%3D","line":176,"updated":"2014-02-20 18:39:38.000000000","message":"If there is only one connection, should the service status reflect the status of that sole connection (rather than having service up and sole connection down)?","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, conf, root_helper, process_id,"},{"line_number":74,"context_line":"                 vpnservice, namespace):"},{"line_number":75,"context_line":"        self. binary \u003d \"openvpn\""},{"line_number":76,"context_line":"        self. CONFIG_DIRS \u003d ["},{"line_number":77,"context_line":"            \u0027var/run\u0027,"},{"line_number":78,"context_line":"            \u0027log\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAs%3D","line":75,"updated":"2014-02-23 03:29:17.000000000","message":"Why the space here?","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, conf, root_helper, process_id,"},{"line_number":74,"context_line":"                 vpnservice, namespace):"},{"line_number":75,"context_line":"        self. binary \u003d \"openvpn\""},{"line_number":76,"context_line":"        self. CONFIG_DIRS \u003d ["},{"line_number":77,"context_line":"            \u0027var/run\u0027,"},{"line_number":78,"context_line":"            \u0027log\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxD0%3D","line":75,"in_reply_to":"AAAAU3%2F%2F%2FAs%3D","updated":"2014-02-24 21:56:43.000000000","message":"Done","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def __init__(self, conf, root_helper, process_id,"},{"line_number":74,"context_line":"                 vpnservice, namespace):"},{"line_number":75,"context_line":"        self. binary \u003d \"openvpn\""},{"line_number":76,"context_line":"        self. CONFIG_DIRS \u003d ["},{"line_number":77,"context_line":"            \u0027var/run\u0027,"},{"line_number":78,"context_line":"            \u0027log\u0027,"},{"line_number":79,"context_line":"            \u0027etc\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAo%3D","line":76,"updated":"2014-02-23 03:29:17.000000000","message":"space?  Also why is that var in all caps?","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def __init__(self, conf, root_helper, process_id,"},{"line_number":74,"context_line":"                 vpnservice, namespace):"},{"line_number":75,"context_line":"        self. binary \u003d \"openvpn\""},{"line_number":76,"context_line":"        self. CONFIG_DIRS \u003d ["},{"line_number":77,"context_line":"            \u0027var/run\u0027,"},{"line_number":78,"context_line":"            \u0027log\u0027,"},{"line_number":79,"context_line":"            \u0027etc\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxC8%3D","line":76,"in_reply_to":"AAAAU3%2F%2F%2FAo%3D","updated":"2014-02-24 21:56:43.000000000","message":"Will remove space. The variable names are used in IPSEC and common code. If required, I could change is existing IPSEC code as well. Not sure why CAPS was used in IPSEC.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            \u0027etc/openvpn\u0027,"},{"line_number":81,"context_line":"        ]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self. DIALECT_MAP \u003d {"},{"line_number":84,"context_line":"        }"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        config_dir \u003d os.path.join("}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAk%3D","line":83,"updated":"2014-02-23 03:29:17.000000000","message":"space and same observation","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            \u0027etc/openvpn\u0027,"},{"line_number":81,"context_line":"        ]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self. DIALECT_MAP \u003d {"},{"line_number":84,"context_line":"        }"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        config_dir \u003d os.path.join("}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxCk%3D","line":83,"in_reply_to":"AAAAU3%2F%2F%2FAk%3D","updated":"2014-02-24 21:56:43.000000000","message":"This is existing class which wsa moved to new file. So, it shows up as new class. It is extended by \u0027 BaseSwanProcess\u0027 and \u0027OpenVPNProcess\u0027.  These methods are implemented those classes.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":278,"context_line":"class SslVpnDriver(device_drivers.DeviceDriver):"},{"line_number":279,"context_line":"    \"\"\"VPN Device Driver for IPSec."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    This class is designed for use with L3-agent now."},{"line_number":282,"context_line":"    However this driver will be used with another agent in future."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAc%3D","line":279,"updated":"2014-02-23 03:29:17.000000000","message":"Shouldn\u0027t this be SSL?","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":278,"context_line":"class SslVpnDriver(device_drivers.DeviceDriver):"},{"line_number":279,"context_line":"    \"\"\"VPN Device Driver for IPSec."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    This class is designed for use with L3-agent now."},{"line_number":282,"context_line":"    However this driver will be used with another agent in future."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxAE%3D","line":279,"in_reply_to":"AAAAU3%2F%2F%2FAc%3D","updated":"2014-02-24 21:56:43.000000000","message":"We have to find a consistent way to do this. We have used SSLVPN, SslVpn and SSLVpn. I will change everything to SSLVPN.","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        vpnservices \u003d self.agent_rpc.get_vpn_services_on_host("},{"line_number":439,"context_line":"            context, self.host)"},{"line_number":440,"context_line":"        router_ids \u003d [vpnservice[\u0027router_id\u0027] for vpnservice in vpnservices]"},{"line_number":441,"context_line":"        # Ensure the ipsec process is enabled"},{"line_number":442,"context_line":"        for vpnservice in vpnservices:"},{"line_number":443,"context_line":"            process \u003d self.ensure_process(vpnservice[\u0027router_id\u0027],"},{"line_number":444,"context_line":"                                          vpnservice\u003dvpnservice)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAY%3D","line":441,"updated":"2014-02-23 03:29:17.000000000","message":"ssl?","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        vpnservices \u003d self.agent_rpc.get_vpn_services_on_host("},{"line_number":439,"context_line":"            context, self.host)"},{"line_number":440,"context_line":"        router_ids \u003d [vpnservice[\u0027router_id\u0027] for vpnservice in vpnservices]"},{"line_number":441,"context_line":"        # Ensure the ipsec process is enabled"},{"line_number":442,"context_line":"        for vpnservice in vpnservices:"},{"line_number":443,"context_line":"            process \u003d self.ensure_process(vpnservice[\u0027router_id\u0027],"},{"line_number":444,"context_line":"                                          vpnservice\u003dvpnservice)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FxAA%3D","line":441,"in_reply_to":"AAAAU3%2F%2F%2FAY%3D","updated":"2014-02-24 21:56:43.000000000","message":"Done","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                                          vpnservice\u003dvpnservice)"},{"line_number":445,"context_line":"            process.update()"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        # Delete any IPSec processes that are"},{"line_number":448,"context_line":"        # associated with routers, but are not running the VPN service."},{"line_number":449,"context_line":"        for router in routers:"},{"line_number":450,"context_line":"            #We are using router id as process_id"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAU%3D","line":447,"updated":"2014-02-23 03:29:17.000000000","message":"ssl?","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                                          vpnservice\u003dvpnservice)"},{"line_number":445,"context_line":"            process.update()"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        # Delete any IPSec processes that are"},{"line_number":448,"context_line":"        # associated with routers, but are not running the VPN service."},{"line_number":449,"context_line":"        for router in routers:"},{"line_number":450,"context_line":"            #We are using router id as process_id"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2Fw%2F8%3D","line":447,"in_reply_to":"AAAAU3%2F%2F%2FAU%3D","updated":"2014-02-24 21:56:43.000000000","message":"Done","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e1baa9cb17b337f3610ec9967bf34b14000b834c","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                process \u003d self.ensure_process(process_id)"},{"line_number":454,"context_line":"                self.destroy_router(process_id)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        # Delete any IPSec processes running"},{"line_number":457,"context_line":"        # VPN that do not have an associated router."},{"line_number":458,"context_line":"        process_ids \u003d [process_id"},{"line_number":459,"context_line":"                       for process_id in self.processes"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FAQ%3D","line":456,"updated":"2014-02-23 03:29:17.000000000","message":"ssl?","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"},{"author":{"_account_id":7752,"name":"Rajesh Mohan","email":"rajesh.mlists@gmail.com","username":"rajesh.mohan"},"change_message_id":"a96e5c008ce59f8f2dbde78a1c88a2ee43010e00","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                process \u003d self.ensure_process(process_id)"},{"line_number":454,"context_line":"                self.destroy_router(process_id)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        # Delete any IPSec processes running"},{"line_number":457,"context_line":"        # VPN that do not have an associated router."},{"line_number":458,"context_line":"        process_ids \u003d [process_id"},{"line_number":459,"context_line":"                       for process_id in self.processes"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2Fw%2F4%3D","line":456,"in_reply_to":"AAAAU3%2F%2F%2FAQ%3D","updated":"2014-02-24 21:56:43.000000000","message":"Done","commit_id":"839d82c39c750a2b8c5c40efd765ea77f5b25eb0"}],"neutron/services/vpn/plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _get_driver_for_ipsec_site_connection(self, context,"},{"line_number":44,"context_line":"                                              ipsec_site_connection):"},{"line_number":45,"context_line":"        vpnservice \u003d vpn_consts.IPSEC"},{"line_number":46,"context_line":"        return self._get_driver_for_vpnservice(vpnservice)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def create_ipsec_site_connection(self, context, ipsec_site_connection):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2Bs0%3D","line":45,"updated":"2014-01-31 12:54:17.000000000","message":"I see the note being removed about service type framework. Is the plan to handle that differently that what was proposed in the review for service type framework support? If not, then we should probably base this on that change set.","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _get_driver_for_ssl_vpn_connection(self, context,"},{"line_number":88,"context_line":"                                           ssl_vpn_connection):"},{"line_number":89,"context_line":"        vpnservice \u003d vpn_consts.SSL"},{"line_number":90,"context_line":"        return self._get_driver_for_vpnservice(vpnservice)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def create_ssl_vpn_connection(self, context, ssl_vpn_connection):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2Bso%3D","line":89,"updated":"2014-01-31 12:54:17.000000000","message":"Service type framework support for SSL VPN?","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"}],"neutron/services/vpn/service_drivers/ipsec.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def update_ipsec_site_connection("},{"line_number":58,"context_line":"        self, context, old_ipsec_site_connection, ipsec_site_connection):"},{"line_number":59,"context_line":"        pdb.set_trace()"},{"line_number":60,"context_line":"        vpnservice \u003d self.service_plugin._get_vpnservice("},{"line_number":61,"context_line":"            context, ipsec_site_connection[\u0027vpnservice_id\u0027])"},{"line_number":62,"context_line":"        self.agent_rpc.vpnservice_updated(context, vpnservice[\u0027router_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2Brk%3D","line":59,"updated":"2014-01-31 12:54:17.000000000","message":"Remove and pdb import.","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"}],"neutron/services/vpn/service_drivers/vpn.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def create_rpc_dispatcher(self):"},{"line_number":44,"context_line":"        return n_rpc.PluginRpcDispatcher([self])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_vpn_services_on_host(self, context, host\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Retuns the vpnservices on the host.\"\"\""},{"line_number":48,"context_line":"        plugin \u003d self.driver.service_plugin"},{"line_number":49,"context_line":"        vpnservices \u003d plugin._get_agent_hosting_vpn_services("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2BqI%3D","line":46,"updated":"2014-01-31 12:54:17.000000000","message":"Should this be filtering on they type of service (IPSec, SSL-VPN)?","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"70acc2e32b198638ef524788c770bb47baf00156","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        for l3_agent in l3_agents:"},{"line_number":82,"context_line":"            LOG.debug(_(\u0027Notify agent at %(topic)s.%(host)s the message \u0027"},{"line_number":83,"context_line":"                        \u0027%(method)s\u0027),"},{"line_number":84,"context_line":"                      {\u0027topic\u0027: topics.IPSEC_AGENT_TOPIC,"},{"line_number":85,"context_line":"                       \u0027host\u0027: l3_agent.host,"},{"line_number":86,"context_line":"                       \u0027method\u0027: method})"},{"line_number":87,"context_line":"            self.cast("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9%2Bpw%3D","line":84,"updated":"2014-01-31 12:54:17.000000000","message":"Won\u0027t there be topic for IPSec and different one for SSL VPN?\n\nHere and L90","commit_id":"3b4842db2b6f7322d3c1aef052e23642030e92de"}],"neutron/tests/unit/services/vpn/device_drivers/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            sync.assert_called_once_with(context, [])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_create_router(self):"},{"line_number":49,"context_line":"        process_id \u003d _uuid()"},{"line_number":50,"context_line":"        process \u003d mock.Mock()"},{"line_number":51,"context_line":"        process.vpnservice \u003d self.FAKE_VPN_SERVICE"},{"line_number":52,"context_line":"        self.driver.processes \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhVw%3D","line":49,"updated":"2014-02-20 18:39:38.000000000","message":"Put common logic into a helper function or as part of setup?","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"}],"neutron/tests/unit/services/vpn/device_drivers/test_sslvpn.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \u0027shutil.rmtree\u0027,"},{"line_number":51,"context_line":"        ])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_sync_added(self):"},{"line_number":54,"context_line":"        self.driver.agent_rpc.get_vpn_services_on_host.return_value \u003d ["},{"line_number":55,"context_line":"            self.FAKE_VPN_SERVICE]"},{"line_number":56,"context_line":"        context \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhTY%3D","line":53,"updated":"2014-02-20 18:39:38.000000000","message":"Additional test cases for other events causing sync?","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"}],"neutron/tests/unit/services/vpn/test_sslvpn_extension.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"_get_path \u003d test_api_v2._get_path"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class SslvpnTestExtensionManager(object):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_resources(self):"},{"line_number":47,"context_line":"        # Add the resources to the global attribute map"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhR4%3D","line":44,"updated":"2014-02-20 18:39:38.000000000","message":"Consistency of naming, see Sslvpn, SSLVpn, SSLVPN.","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"}],"neutron/tests/unit/services/vpn/test_vpncredential_extension.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                              group\u003d\u0027QUOTAS\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def tearDown(self):"},{"line_number":97,"context_line":"        self._plugin_patcher.stop()"},{"line_number":98,"context_line":"        self.api \u003d None"},{"line_number":99,"context_line":"        self.plugin \u003d None"},{"line_number":100,"context_line":"        cfg.CONF.reset()"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhPM%3D","line":97,"updated":"2014-02-20 18:39:38.000000000","message":"Could do addCleanup() in setUp() to stop all patches.","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"df988f880e81f99fe004244fb16eb491f1294ce0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self._plugin_patcher.stop()"},{"line_number":98,"context_line":"        self.api \u003d None"},{"line_number":99,"context_line":"        self.plugin \u003d None"},{"line_number":100,"context_line":"        cfg.CONF.reset()"},{"line_number":101,"context_line":"        super(VpncredentialExtensionTestCase, self).tearDown()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_vpn_credential_create(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2BhPE%3D","line":100,"updated":"2014-02-20 18:39:38.000000000","message":"Is this needed? I thought base test class does this (but am not sure).","commit_id":"b7a5c2ca423896b8d00440fce84f864d8e4fd9b0"}]}
