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) <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. > > <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) <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. >> >> <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) <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.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) <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. >>>> >>>> <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 >>>> 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