I have in my q-svc log this line: 2014-07-27 19:46:02.243 DEBUG neutron.service [-] service_providers.service_provider = ['VPN:fake_junos_vpnaas:neutron.services.vpn.service_drivers.fake_service_driver.FakeServiceDriver:default'] from (pid=2770) log_opt_values /usr/local/lib/python2.7/dist-packages/oslo/config/cfg.py:1988
proving that service driver is loaded. When I have default configuration in /etc/neutron/vpn_agent.ini I see this line, loading OpenSwan driver: 014-07-27 19:41:48.955 DEBUG neutron.openstack.common.service [req-4cdcc041-cc13-4fe8-97d3-e743eab43f84 None None] vpnagent.vpn_device_driver = ['neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver'] from (pid=30265) log_opt_values /usr/local/lib/python2.7/dist-packages/oslo/config/cfg.py:1988 Using my configuration I don't see the equivalent line loading my device driver and I don't see any error. I don't know how to proceed. <http://dana.i2cat.net> <http://www.i2cat.net/en> Julio C. Barrera Juez [image: View my profile on LinkedIn] <http://es.linkedin.com/in/jcbarrera/en> Office phone: (+34) 93 357 99 27 (ext. 527) Office mobile phone: (+34) 625 66 77 26 Distributed Applications and Networks Area (DANA) i2CAT Foundation, Barcelona On 24 July 2014 20:34, Paul Michali (pcm) <[email protected]> wrote: > Check /etc/neutron/neutron.conf and see if your service driver is > correctly specified for VPN. You can also check the q-svc and q-vpn logs at > the beginning to see if the service and device drivers were actually loaded > by the plugin and agent, respectively. You can check vpn_agent.ini in same > area, to see if your device driver is called out. > > Regards, > > PCM (Paul Michali) > > MAIL …..…. [email protected] > IRC ……..… pcm_ (irc.freenode.com) > TW ………... @pmichali > GPG Key … 4525ECC253E31A83 > Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83 > > > > On Jul 24, 2014, at 2:11 PM, Julio Carlos Barrera Juez < > [email protected]> wrote: > > Hi again. > > With previous days code, we don't experience any error in our logs, but we > don't see any logs in q-svc nor q-vpn. When we execute any Neutron VPN > command like neutron vpn-ikepolicy-list we receive: > > 404 Not Found > > The resource could not be found. > > > And in q-svc logs we see: > > 2014-07-24 19:50:37.587 DEBUG routes.middleware > [req-8efb06d9-36fb-44e4-ab94-2221daadd2a5 demo > 4af34184cec14e70a15dee0508f16e7e] No route matched for GET > /vpn/ikepolicies.json from (pid=4998) __call__ > /usr/lib/python2.7/dist-packages/routes/middleware.py:97 > 2014-07-24 19:50:37.588 DEBUG routes.middleware > [req-8efb06d9-36fb-44e4-ab94-2221daadd2a5 demo > 4af34184cec14e70a15dee0508f16e7e] No route matched for GET > /vpn/ikepolicies.json from (pid=4998) __call__ > /usr/lib/python2.7/dist-packages/routes/middleware.py:97 > > Why logs in our plugin are not printed? > Why /usr/lib/python2.7/dist-packages/routes/middleware.py is not finding > our service driver? > > Thanks. > > > <http://dana.i2cat.net/> <http://www.i2cat.net/en> > Julio C. Barrera Juez [image: View my profile on LinkedIn] > <http://es.linkedin.com/in/jcbarrera/en> > Office phone: (+34) 93 357 99 27 (ext. 527) > Office mobile phone: (+34) 625 66 77 26 > Distributed Applications and Networks Area (DANA) > i2CAT Foundation, Barcelona > > > On 18 July 2014 12:56, Paul Michali (pcm) <[email protected]> wrote: > >> No docs, it’s an internal API between service and device driver (so you >> can implement it however you desire. You can look at the reference and >> Cisco ones for examples (they are currently both the same, although the >> Cisco one will likely change in the future). You’ll need to define a >> “topic” for the RPC between the two drivers that is unique to your >> implementation. Again, look at the existing ones and look for “topic” >> variable to see what strings they map to. >> >> From service driver to device driver, there is only one API, >> vpnservice_updated(), and in the other direction there are >> two, get_vpn_services_on_host() and udpate_status(). >> >> Regards, >> >> >> PCM (Paul Michali) >> >> MAIL …..…. [email protected] >> IRC ……..… pcm_ (irc.freenode.com) >> TW ………... @pmichali >> GPG Key … 4525ECC253E31A83 >> Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83 >> >> >> >> On Jul 18, 2014, at 2:30 AM, Julio Carlos Barrera Juez < >> [email protected]> wrote: >> >> Is there any documentation about these RPC messages? Or de we need to use >> examples as guide? >> >> Once again, thank you Paul. >> >> <http://dana.i2cat.net/> <http://www.i2cat.net/en> >> Julio C. Barrera Juez [image: View my profile on LinkedIn] >> <http://es.linkedin.com/in/jcbarrera/en> >> Office phone: (+34) 93 357 99 27 (ext. 527) >> Office mobile phone: (+34) 625 66 77 26 >> Distributed Applications and Networks Area (DANA) >> i2CAT Foundation, Barcelona >> >> >> On 17 July 2014 20:37, Paul Michali (pcm) <[email protected]> wrote: >> >>> So you have your driver loading… great! >>> >>> The service driver will log in screen-q-*svc*.log, provided you have >>> the service driver called out in neutron.conf (as the only one for VPN). >>> >>> Later, you’ll need the supporting RPC classes to send messages from >>> service driver to device driver… >>> >>> >>> Regards, >>> >>> >>> PCM (Paul Michali) >>> >>> MAIL …..…. [email protected] >>> IRC ……..… pcm_ (irc.freenode.com) >>> TW ………... @pmichali >>> GPG Key … 4525ECC253E31A83 >>> Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83 >>> >>> >>> >>> On Jul 17, 2014, at 2:18 PM, Julio Carlos Barrera Juez < >>> [email protected]> wrote: >>> >>> We have followed your advices: >>> >>> - We created our fake device driver located in the same level as other >>> device drivers >>> (/opt/stack/neutron/neutron/services/vpn//device_drivers/fake_device_driver.py): >>> >>> import abc >>> import six >>> >>> from neutron.openstack.common import log >>> from neutron.services.vpn import device_drivers >>> >>> >>> LOG = log.getLogger(__name__) >>> >>> @six.add_metaclass(abc.ABCMeta) >>> class FakeDeviceDriver(device_drivers.DeviceDriver): >>> ''' >>> classdocs >>> ''' >>> >>> def __init__(self, agent, host): >>> pass >>> >>> def sync(self, context, processes): >>> pass >>> >>> def create_router(self, process_id): >>> pass >>> >>> def destroy_router(self, process_id): >>> pass >>> >>> >>> - Our service driver located in >>> /opt/stack/neutron/neutron/services/vpn/service_drivers/fake_service_driver.py: >>> >>> from neutron.openstack.common import log >>> >>> LOG = log.getLogger(__name__) >>> >>> class FakeServiceDriver(): >>> ''' >>> classdocs >>> ''' >>> >>> def get_vpnservices(self, context, filters=None, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_vpnservice(self, context, vpnservice_id, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def create_vpnservice(self, context, vpnservice): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def update_vpnservice(self, context, vpnservice_id, vpnservice): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def delete_vpnservice(self, context, vpnservice_id): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_ipsec_site_connections(self, context, filters=None, >>> fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_ipsec_site_connection(self, context, >>> ipsecsite_conn_id, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_ikepolicy(self, context, ikepolicy_id, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_ikepolicies(self, context, filters=None, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def create_ikepolicy(self, context, ikepolicy): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def update_ikepolicy(self, context, ikepolicy_id, ikepolicy): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def delete_ikepolicy(self, context, ikepolicy_id): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_ipsecpolicies(self, context, filters=None, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def get_ipsecpolicy(self, context, ipsecpolicy_id, fields=None): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def create_ipsecpolicy(self, context, ipsecpolicy): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def update_ipsecpolicy(self, context, ipsecpolicy_id, ipsecpolicy): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> def delete_ipsecpolicy(self, context, ipsecpolicy_id): >>> LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__) >>> pass >>> >>> >>> >>> - Our /etc/neutron/vpn_agent.ini: >>> >>> [DEFAULT] >>> # VPN-Agent configuration file >>> # Note vpn-agent inherits l3-agent, so you can use configs on l3-agent >>> also >>> >>> [vpnagent] >>> # vpn device drivers which vpn agent will use >>> # If we want to use multiple drivers, we need to define this option >>> multiple times. >>> # >>> vpn_device_driver=neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver >>> # >>> vpn_device_driver=neutron.services.vpn.device_drivers.cisco_ipsec.CiscoCsrIPsecDriver >>> # vpn_device_driver=another_driver >>> >>> # custom config >>> # implementation location: >>> /opt/stack/neutron/neutron/services/vpn//device_drivers/fake_device_driver.py >>> >>> vpn_device_driver=neutron.services.vpn.device_drivers.fake_device_driver.FakeDeviceDriver >>> >>> [ipsec] >>> # Status check interval >>> # ipsec_status_check_interval=60 >>> >>> >>> It seems now everything is working and q-vpn starts. In one line in his >>> log we see: >>> >>> 2014-07-16 21:59:45.009 DEBUG neutron.openstack.common.service >>> [req-fb6ed9ca-0e71-4783-804b-81ea34b16679 None None] >>> service_providers.service_provider = >>> ['VPN:fake_junos_vpnaas:neutron.services.vpn.service_drivers.fake_service_driver.FakeServiceDriver:default'] >>> from (pid=14423) log_opt_values >>> /usr/local/lib/python2.7/dist-packages/oslo/config/cfg.py:1988 >>> >>> But now we don't know how to continue. We don't any of our logs in q-vpn >>> when we execute commands like: >>> >>> neutron vpn-ipsecpolicy-create test-ike-policy >>> neutron vpn-ikepolicy-list >>> neutron vpn-service-list >>> >>> We don't see any error anyway. >>> >>> How we could proceed? >>> >>> Thank you. >>> >>> <http://dana.i2cat.net/> <http://www.i2cat.net/en> >>> Julio C. Barrera Juez [image: View my profile on LinkedIn] >>> <http://es.linkedin.com/in/jcbarrera/en> >>> Office phone: (+34) 93 357 99 27 (ext. 527) >>> Office mobile phone: (+34) 625 66 77 26 >>> Distributed Applications and Networks Area (DANA) >>> i2CAT Foundation, Barcelona >>> >>> >>> On 17 July 2014 14:18, Paul Michali (pcm) <[email protected]> wrote: >>> >>>> See line @PCM >>>> >>>> >>>> PCM (Paul Michali) >>>> >>>> MAIL …..…. [email protected] >>>> IRC ……..… pcm_ (irc.freenode.com) >>>> TW ………... @pmichali >>>> GPG Key … 4525ECC253E31A83 >>>> Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83 >>>> >>>> >>>> >>>> On Jul 17, 2014, at 6:32 AM, Julio Carlos Barrera Juez < >>>> [email protected]> wrote: >>>> >>>> I have __init__.py in the directory. Sorry my code is not public, but >>>> I can show you some contents, anyway is an experiment with no functional >>>> code. >>>> >>>> >>>> @PCM Could you provide a patch with the files so we could patch it into >>>> a local repo and try things? I’m assuming since it is an experiment with no >>>> functional code that maybe there’s nothing proprietary? :) >>>> >>>> >>>> >>>> >>>> My /etc/neutron/vpn_agent.ini: >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> [DEFAULT] >>>> [vpnagent] >>>> # implementation location: >>>> /opt/stack/neutron/neutron/services/vpn/junos_vpnaas/device_drivers/fake_device_driver.py >>>> >>>> vpn_device_driver=neutron.services.vpn.junos_vpnaas.device_drivers.fake_device_driver.FakeDeviceDriver >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> @PCM Hmmm… Just a wild guess... I’m wondering if this is the issue. You >>>> class would need to inherit from the base device driver class. Does your >>>> fake_device_driver.py have the correct import paths? I say that, because >>>> your hierarchy is different. For example, the layout currently is… >>>> >>>> neutron/services/vpn/ - plugin >>>> neutron/services/vpn/device_drivers/ - reference and Cisco device >>>> drivers >>>> neutron/services/vpn/service_drivers/ - reference and Cisco service >>>> drivers >>>> >>>> Your hierarchy has another level… >>>> >>>> neutron/services/vpn/*junos_vpnaas*/device_drivers/ >>>> >>>> I’m wondering if there is some import wrong. For example, the reference >>>> device driver has: >>>> >>>> from neutron.services.vpn import device_drivers >>>> … >>>> @six.add_metaclass(abc.ABCMeta) >>>> class IPsecDriver(*device_drivers.DeviceDrive*r): >>>> """VPN Device Driver for IPSec. >>>> >>>> Where the import is used to access the base class DeviceDriver. If >>>> you’re doing the same, that file may be failing to load. >>>> >>>> Regards, >>>> >>>> PCM >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> FakeDeviceDriver is an empty class with a constructor located in file >>>> /opt/stack/neutron/neutron/services/vpn/junos_vpnaas/device_drivers/fake_device_driver.py. >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> I don't have access to my devstask instance, but the error was produced in >>>> q-vpn service: >>>> >>>> DeviceDriverImportError: Can not load driver >>>> :neutron.services.vpn.junos_vpnaas.device_drivers.fake_device_driver.FakeDeviceDriver >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> I can provide full stack this afternoon. >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> Thank you. >>>> >>>> >>>> <http://dana.i2cat.net/> <http://www.i2cat.net/en> >>>> Julio C. Barrera Juez [image: View my profile on LinkedIn] >>>> <http://es.linkedin.com/in/jcbarrera/en> >>>> Office phone: (+34) 93 357 99 27 (ext. 527) >>>> Office mobile phone: (+34) 625 66 77 26 >>>> Distributed Applications and Networks Area (DANA) >>>> i2CAT Foundation, Barcelona >>>> >>>> >>>> On 16 July 2014 20:59, Paul Michali (pcm) <[email protected]> wrote: >>>> >>>>> Do you have a repo with the code that is visible to the public? >>>>> >>>>> What does the /etc/neutron/vpn_agent.ini look like? >>>>> >>>>> Can you put the log output of the actual error messages seen? >>>>> >>>>> Regards, >>>>> >>>>> PCM (Paul Michali) >>>>> >>>>> MAIL …..…. [email protected] >>>>> IRC ……..… pcm_ (irc.freenode.com) >>>>> TW ………... @pmichali >>>>> GPG Key … 4525ECC253E31A83 >>>>> Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83 >>>>> >>>>> >>>>> >>>>> On Jul 16, 2014, at 2:43 PM, Julio Carlos Barrera Juez < >>>>> [email protected]> wrote: >>>>> >>>>> I am fighting with this for months. I want to develop a VPN Neutron >>>>> plugin, but it is almost impossible to realize how to achieve it. this is >>>>> a >>>>> thread I opened months ago and Paul Mchali helped me a lot: >>>>> http://lists.openstack.org/pipermail/openstack-dev/2014-February/028389.html >>>>> >>>>> I want to know the minimum requirements to develop a device driver and >>>>> a service driver for a VPN Neutron plugin. I tried adding an empty device >>>>> driver and I got this error: >>>>> >>>>> DeviceDriverImportError: Can not load driver >>>>> :neutron.services.vpn.junos_vpnaas.device_drivers.fake_device_driver.FakeDeviceDriver >>>>> >>>>> Both Python file and class exists, but the implementation is empty. >>>>> What is the problem? What I need to include in this file/class to avoid >>>>> this error? >>>>> >>>>> Thank you. >>>>> >>>>> <http://dana.i2cat.net/> <http://www.i2cat.net/en> >>>>> Julio C. Barrera Juez [image: View my profile on LinkedIn] >>>>> <http://es.linkedin.com/in/jcbarrera/en> >>>>> Office phone: (+34) 93 357 99 27 (ext. 527) >>>>> Office mobile phone: (+34) 625 66 77 26 >>>>> Distributed Applications and Networks Area (DANA) >>>>> i2CAT Foundation, Barcelona >>>>> _______________________________________________ >>>>> OpenStack-dev mailing list >>>>> [email protected] >>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> OpenStack-dev mailing list >>>>> [email protected] >>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>> >>>>> >>>> _______________________________________________ >>>> OpenStack-dev mailing list >>>> [email protected] >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>>> >>>> >>>> _______________________________________________ >>>> OpenStack-dev mailing list >>>> [email protected] >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>>> >>> _______________________________________________ >>> OpenStack-dev mailing list >>> [email protected] >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >>> >>> _______________________________________________ >>> OpenStack-dev mailing list >>> [email protected] >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >> _______________________________________________ >> OpenStack-dev mailing list >> [email protected] >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> >> >> _______________________________________________ >> OpenStack-dev mailing list >> [email protected] >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> > _______________________________________________ > OpenStack-dev mailing list > [email protected] > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > > > _______________________________________________ > OpenStack-dev mailing list > [email protected] > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > >
_______________________________________________ OpenStack-dev mailing list [email protected] http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
