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 …..…. p...@cisco.com 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 <juliocarlos.barr...@i2cat.net> 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. > > > > Julio C. Barrera Juez > 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) <p...@cisco.com> 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 …..…. p...@cisco.com > 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 > <juliocarlos.barr...@i2cat.net> wrote: > >> Is there any documentation about these RPC messages? Or de we need to use >> examples as guide? >> >> Once again, thank you Paul. >> >> >> Julio C. Barrera Juez >> 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) <p...@cisco.com> 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 …..…. p...@cisco.com >> 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 >> <juliocarlos.barr...@i2cat.net> 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. >>> >>> >>> Julio C. Barrera Juez >>> 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) <p...@cisco.com> wrote: >>> See line @PCM >>> >>> >>> PCM (Paul Michali) >>> >>> MAIL …..…. p...@cisco.com >>> 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 >>> <juliocarlos.barr...@i2cat.net> 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.DeviceDriver): >>> """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. >>>> >>>> >>>> >>>> >>>> Julio C. Barrera Juez >>>> 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) <p...@cisco.com> 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 …..…. p...@cisco.com >>>> 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 >>>> <juliocarlos.barr...@i2cat.net> 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. >>>>> >>>>> >>>>> Julio C. Barrera Juez >>>>> 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 >>>>> OpenStack-dev@lists.openstack.org >>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>>> >>>> _______________________________________________ >>>> OpenStack-dev mailing list >>>> OpenStack-dev@lists.openstack.org >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>>> >>>> _______________________________________________ >>>> OpenStack-dev mailing list >>>> OpenStack-dev@lists.openstack.org >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >>> _______________________________________________ >>> OpenStack-dev mailing list >>> OpenStack-dev@lists.openstack.org >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >>> _______________________________________________ >>> OpenStack-dev mailing list >>> OpenStack-dev@lists.openstack.org >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> >> _______________________________________________ >> OpenStack-dev mailing list >> OpenStack-dev@lists.openstack.org >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> >> _______________________________________________ >> OpenStack-dev mailing list >> OpenStack-dev@lists.openstack.org >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev