<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">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.<div><br></div><div>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().</div><div><br></div><div>Regards,</div><div><br></div><div><br><div apple-content-edited="true">
<div><div>PCM (Paul Michali)</div><div><br></div><div>MAIL …..…. <a href="mailto:pcm@cisco.com">pcm@cisco.com</a></div><div>IRC ……..… pcm_ (<a href="http://irc.freenode.com">irc.freenode.com</a>)</div><div>TW ………... @pmichali</div><div>GPG Key … 4525ECC253E31A83</div><div>Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83</div></div><div><br></div><br class="Apple-interchange-newline">
</div>
<br><div><div>On Jul 18, 2014, at 2:30 AM, Julio Carlos Barrera Juez <<a href="mailto:juliocarlos.barrera@i2cat.net">juliocarlos.barrera@i2cat.net</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr">Is there any documentation about these RPC messages? Or de we need to use examples as guide?<div><br></div><div>Once again, thank you Paul.</div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr">

<div><a href="http://dana.i2cat.net/" target="_blank"><img src="http://dana.i2cat.net/wp-content/uploads/2011/12/LOGO-DANA_2.jpg" width="96" height="64"></a>  <a href="http://www.i2cat.net/en" target="_blank"><img src="http://www.i2cat.net/sites/all/themes/elegantica/logo.png" width="200" height="53"></a><font size="1"><font style="font-family:Helvetica"><br>

</font></font></div><font style="font-size:x-small;font-family:Helvetica">Julio C. Barrera Juez  </font><a href="http://es.linkedin.com/in/jcbarrera/en" target="_blank"><img src="https://static.licdn.com/scds/common/u/img/webpromo/btn_liprofile_blue_80x15.png" alt="View my profile on LinkedIn"></a><div>

<div><font size="1">Office phone: (+34) 93 357 99 27 (ext. 527)</font></div><div><font size="1"><font style="font-family:Helvetica">Office mobile phone: (+34) 625 66 77 26<br>Distributed Applications and Networks Area (DANA)<br>

i2CAT Foundation, Barcelona</font><br></font></div></div></div></div>
<br><br><div class="gmail_quote">On 17 July 2014 20:37, Paul Michali (pcm) <span dir="ltr"><<a href="mailto:pcm@cisco.com" target="_blank">pcm@cisco.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word">So you have your driver loading… great!<div><br></div><div>The service driver will log in screen-q-<b>svc</b>.log, provided you have the service driver called out in neutron.conf (as the only one for VPN).</div>

<div><br></div><div>Later, you’ll need the supporting RPC classes to send messages from service driver to device driver…</div><div><br></div><div><br></div><div>Regards,</div><div><br></div><div><div class=""><br><div>
<div><div>PCM (Paul Michali)</div><div><br></div><div>MAIL …..…. <a href="mailto:pcm@cisco.com" target="_blank">pcm@cisco.com</a></div><div>IRC ……..… pcm_ (<a href="http://irc.freenode.com/" target="_blank">irc.freenode.com</a>)</div>

<div>TW ………... @pmichali</div><div>GPG Key … 4525ECC253E31A83</div><div>Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83</div></div><div><br></div><br>
</div>
<br></div><div><div class="h5"><div><div>On Jul 17, 2014, at 2:18 PM, Julio Carlos Barrera Juez <<a href="mailto:juliocarlos.barrera@i2cat.net" target="_blank">juliocarlos.barrera@i2cat.net</a>> wrote:</div><br><blockquote type="cite">

<div dir="ltr">We have followed your advices:<div><br></div><div>- 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):</div>



<div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>import abc</div><div>import six</div><div><br></div><div><div>from neutron.openstack.common import log</div>

</div><div>from neutron.services.vpn import device_drivers</div><div><br></div><div><br></div><div>LOG = log.getLogger(__name__)</div><div><br></div><div><div>@six.add_metaclass(abc.ABCMeta)</div>

</div><div>class FakeDeviceDriver(device_drivers.DeviceDriver):</div><div>    '''</div><div>    classdocs</div><div>    '''</div><div>    </div>

<div>    def __init__(self, agent, host):</div><div>        pass</div><div><br></div><div>    def sync(self, context, processes):</div><div>        pass</div><div>

<br></div><div>    def create_router(self, process_id):</div><div>        pass</div><div><br></div><div>    def destroy_router(self, process_id):</div><div><div>        pass</div>

</div></blockquote><div><br></div><div>- Our service driver located in /opt/stack/neutron/neutron/services/vpn/service_drivers/fake_service_driver.py:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">



<div><font face="arial, helvetica, sans-serif">from neutron.openstack.common import log</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">LOG = log.getLogger(__name__)</font></div>

</div><div><font face="arial, helvetica, sans-serif"> </font></div><div><font face="arial, helvetica, sans-serif">class FakeServiceDriver():</font></div><div><div><font face="arial, helvetica, sans-serif">    '''</font></div>



</div><div><font face="arial, helvetica, sans-serif">    classdocs</font></div><div><font face="arial, helvetica, sans-serif">    '''</font></div><div><div><font face="arial, helvetica, sans-serif">     </font></div>



</div><div><font face="arial, helvetica, sans-serif">    def get_vpnservices(self, context, filters=None, fields=None):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def get_vpnservice(self, context, vpnservice_id, fields=None):</font></div>



</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><br></div><div><font face="arial, helvetica, sans-serif">    def create_vpnservice(self, context, vpnservice):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def update_vpnservice(self, context, vpnservice_id, vpnservice):</font></div>



</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><br></div><div><font face="arial, helvetica, sans-serif">    def delete_vpnservice(self, context, vpnservice_id):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def get_ipsec_site_connections(self, context, filters=None, fields=None):</font></div>



</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><br></div><div><font face="arial, helvetica, sans-serif">    def get_ipsec_site_connection(self, context,</font></div><div><div><font face="arial, helvetica, sans-serif">        ipsecsite_conn_id, fields=None):</font></div>



</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">    def get_ikepolicy(self, context, ikepolicy_id, fields=None):</font></div><div>

<div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div></div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div>

<div><br></div></div><div><font face="arial, helvetica, sans-serif">    def get_ikepolicies(self, context, filters=None, fields=None):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def create_ikepolicy(self, context, ikepolicy):</font></div>

</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><br></div><div><font face="arial, helvetica, sans-serif">    def update_ikepolicy(self, context, ikepolicy_id, ikepolicy):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def delete_ikepolicy(self, context, ikepolicy_id):</font></div>

</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">    def get_ipsecpolicies(self, context, filters=None, fields=None):</font></div>
<div>
<div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div></div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div>

<div><br></div></div><div><font face="arial, helvetica, sans-serif">    def get_ipsecpolicy(self, context, ipsecpolicy_id, fields=None):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def create_ipsecpolicy(self, context, ipsecpolicy):</font></div>

</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div><div><br></div><div><font face="arial, helvetica, sans-serif">    def update_ipsecpolicy(self, context, ipsecpolicy_id, ipsecpolicy):</font></div><div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div>



</div><div><font face="arial, helvetica, sans-serif">        pass</font></div><div><br></div><div><div><font face="arial, helvetica, sans-serif">    def delete_ipsecpolicy(self, context, ipsecpolicy_id):</font></div>

</div><div><font face="arial, helvetica, sans-serif">        LOG.info('XXXXXXXXXXXXXX Calling method: ' + __name__)</font></div><div><div><font face="arial, helvetica, sans-serif">        pass</font></div>

</div></blockquote><div><br></div><div><br></div><div>- Our /etc/neutron/vpn_agent.ini:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>[DEFAULT]</div><div><div># VPN-Agent configuration file</div>



</div><div># Note vpn-agent inherits l3-agent, so you can use configs on l3-agent also</div><div><br></div><div>[vpnagent]</div><div><div># vpn device drivers which vpn agent will use</div>

</div><div># If we want to use multiple drivers,  we need to define this option multiple times.</div><div># vpn_device_driver=neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver</div><div><div>
# vpn_device_driver=neutron.services.vpn.device_drivers.cisco_ipsec.CiscoCsrIPsecDriver</div>
</div><div># vpn_device_driver=another_driver</div><div><br></div><div># custom config</div><div><div># implementation location: /opt/stack/neutron/neutron/services/vpn//device_drivers/fake_device_driver.py</div>

</div><div>vpn_device_driver=neutron.services.vpn.device_drivers.fake_device_driver.FakeDeviceDriver</div><div><br></div><div>[ipsec]</div><div># Status check interval</div><div>

<div># ipsec_status_check_interval=60</div></div><div><br></div><div><br></div></blockquote>It seems now everything is working and q-vpn starts. In one line in his log we see:<div></div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">



<div>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</div>



<div><br></div></blockquote>But now we don't know how to continue. We don't any of our logs in q-vpn when we execute commands like:<div><br></div><div>neutron vpn-ipsecpolicy-create test-ike-policy<br></div><div>


neutron vpn-ikepolicy-list<br>
</div><div>neutron vpn-service-list<br></div><div><br></div><div>We don't see any error anyway.</div><div><br></div><div>How we could proceed?</div><div><br></div><div>Thank you.</div></div><div class="gmail_extra"><br clear="all">



<div><div dir="ltr"><div><a href="http://dana.i2cat.net/" target="_blank"><img src="http://dana.i2cat.net/wp-content/uploads/2011/12/LOGO-DANA_2.jpg" width="96" height="64"></a>  <a href="http://www.i2cat.net/en" target="_blank"><img src="http://www.i2cat.net/sites/all/themes/elegantica/logo.png" width="200" height="53"></a><font size="1"><font style="font-family:Helvetica"><br>



</font></font></div><font style="font-size:x-small;font-family:Helvetica">Julio C. Barrera Juez  </font><a href="http://es.linkedin.com/in/jcbarrera/en" target="_blank"><img src="https://static.licdn.com/scds/common/u/img/webpromo/btn_liprofile_blue_80x15.png" alt="View my profile on LinkedIn"></a><div>



<div><font size="1">Office phone: <a href="tel:%28%2B34%29%2093%20357%2099%2027" value="+34933579927" target="_blank">(+34) 93 357 99 27</a> (ext. 527)</font></div><div><font size="1"><font style="font-family:Helvetica">Office mobile phone: <a href="tel:%28%2B34%29%20625%2066%2077%2026" value="+34625667726" target="_blank">(+34) 625 66 77 26</a><br>

Distributed Applications and Networks Area (DANA)<br>

i2CAT Foundation, Barcelona</font><br></font></div></div></div></div>
<br><br><div class="gmail_quote">On 17 July 2014 14:18, Paul Michali (pcm) <span dir="ltr"><<a href="mailto:pcm@cisco.com" target="_blank">pcm@cisco.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word"><div>See line @PCM</div><div><br></div><div><div><br><div>
<div><div>PCM (Paul Michali)</div><div><br></div><div>MAIL …..…. <a href="mailto:pcm@cisco.com" target="_blank">pcm@cisco.com</a></div><div>IRC ……..… pcm_ (<a href="http://irc.freenode.com/" target="_blank">irc.freenode.com</a>)</div>



<div>TW ………... @pmichali</div><div>GPG Key … 4525ECC253E31A83</div><div>Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83</div></div><div><br></div><br>
</div>
<br></div><div><div><div>On Jul 17, 2014, at 6:32 AM, Julio Carlos Barrera Juez <<a href="mailto:juliocarlos.barrera@i2cat.net" target="_blank">juliocarlos.barrera@i2cat.net</a>> wrote:</div><br><blockquote type="cite">



<div dir="ltr">I have <span style="font-family:arial,sans-serif;font-size:13px">__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.</span></div>



</blockquote><div><br></div></div>@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? :)<div>



<div><br></div><div><br></div><div><br></div><blockquote type="cite"><div dir="ltr"><div>

<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">My </span><span style="font-family:arial,sans-serif;font-size:13px">/etc/neutron/vpn_agent.ini</span><span style="font-family:arial,sans-serif;font-size:13px">:</span><span style="color:rgb(83,83,83);font-family:'andale mono','lucida console',monospace;font-size:12px;line-height:18.001798629760742px;white-space:pre-wrap">    </span></div>





<div><pre style="margin-top:1.5em;margin-bottom:1.5em;padding:0px;border:0px;vertical-align:baseline"><div style="color:rgb(83,83,83);font-family:'andale mono','lucida console',monospace;font-size:12px;line-height:18.001798629760742px;white-space:pre-wrap">





<ol><div>[DEFAULT]</div>
<div>[vpnagent]</div><div># implementation location: /opt/stack/neutron/neutron/services/vpn/junos_vpnaas/device_drivers/fake_device_driver.py</div><div>vpn_device_driver=neutron.services.vpn.junos_vpnaas.device_drivers.fake_device_driver.FakeDeviceDriver</div>



</ol></div></pre></div></div></blockquote><div><br></div></div>@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…</div>



<div><br></div><div>neutron/services/vpn/  - plugin</div><div>neutron/services/vpn/device_drivers/ - reference and Cisco device drivers</div><div>neutron/services/vpn/service_drivers/ - reference and Cisco service drivers</div>



<div><br></div><div>Your hierarchy has another level…</div><div><br></div><div>neutron/services/vpn/<b>junos_vpnaas</b>/device_drivers/</div><div><br></div><div>I’m wondering if there is some import wrong. For example, the reference device driver has:</div>



<div><br></div><div><div>from neutron.services.vpn import device_drivers</div><div>…</div><div><div>@six.add_metaclass(abc.ABCMeta)</div><div>class IPsecDriver(<b>device_drivers.DeviceDrive</b>r):</div><div>    """VPN Device Driver for IPSec.</div>



</div><div><br></div><div>Where the import is used to access the base class DeviceDriver. If you’re doing the same, that file may be failing to load.</div><div><br></div><div>Regards,</div><div><br></div><div>PCM</div><div>



<div><div><br></div><blockquote type="cite"><div dir="ltr"><div><pre style="margin-top:1.5em;margin-bottom:1.5em;padding:0px;border:0px;vertical-align:baseline"><div><div style="color:rgb(83,83,83);font-family:'andale mono','lucida console',monospace;font-size:12px;line-height:18.001798629760742px;white-space:pre-wrap">



<ol>

<br></ol></div>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.<font color="#535353" face="andale mono, lucida console, monospace"><span style="line-height:18.001798629760742px;white-space:pre-wrap"><br>





</span></font></div><div><br></div><div>I don't have access to my devstask instance, but the error was produced in q-vpn service:</div></pre></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<div><pre style="margin-top:1.5em;margin-bottom:1.5em;padding:0px;border:0px;vertical-align:baseline"><div><span style="font-family:arial,sans-serif;font-size:13px;white-space:normal">DeviceDriverImportError: Can not load driver :neutron.services.vpn.junos_</span><span style="font-family:arial,sans-serif;font-size:13px;white-space:normal">vpnaas.device_drivers.fake_</span><span style="font-family:arial,sans-serif;font-size:13px;white-space:normal">device_driver.FakeDeviceDriver</span></div>





</pre></div></blockquote><div><pre style="margin-top:1.5em;margin-bottom:1.5em;padding:0px;border:0px;vertical-align:baseline"><div><span style="font-family:arial,sans-serif;font-size:13px;white-space:normal">I can provide full stack this afternoon.</span></div>





<div><span style="font-family:arial,sans-serif;font-size:13px;white-space:normal"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px;white-space:normal">Thank you.</span></div>

</pre></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><div><a href="http://dana.i2cat.net/" target="_blank"><img src="http://dana.i2cat.net/wp-content/uploads/2011/12/LOGO-DANA_2.jpg" width="96" height="64"></a>  <a href="http://www.i2cat.net/en" target="_blank"><img src="http://www.i2cat.net/sites/all/themes/elegantica/logo.png" width="200" height="53"></a><font size="1"><font style="font-family:Helvetica"><br>





</font></font></div><font style="font-size:x-small;font-family:Helvetica">Julio C. Barrera Juez  </font><a href="http://es.linkedin.com/in/jcbarrera/en" target="_blank"><img src="https://static.licdn.com/scds/common/u/img/webpromo/btn_liprofile_blue_80x15.png" alt="View my profile on LinkedIn"></a><div>





<div><font size="1">Office phone: <a href="tel:%28%2B34%29%2093%20357%2099%2027" value="+34933579927" target="_blank">(+34) 93 357 99 27</a> (ext. 527)</font></div><div><font size="1"><font style="font-family:Helvetica">Office mobile phone: <a href="tel:%28%2B34%29%20625%2066%2077%2026" value="+34625667726" target="_blank">(+34) 625 66 77 26</a><br>



Distributed Applications and Networks Area (DANA)<br>

i2CAT Foundation, Barcelona</font><br></font></div></div></div></div>
<br><br><div class="gmail_quote">On 16 July 2014 20:59, Paul Michali (pcm) <span dir="ltr"><<a href="mailto:pcm@cisco.com" target="_blank">pcm@cisco.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div style="word-wrap:break-word">Do you have a repo with the code that is visible to the public?<div><br></div><div>What does the /etc/neutron/vpn_agent.ini look like?</div><div><br></div><div>Can you put the log output of the actual error messages seen?</div>





<div><br></div><div>Regards,</div><div><br></div><div><div>
<div><div>PCM (Paul Michali)</div><div><br></div><div>MAIL …..…. <a href="mailto:pcm@cisco.com" target="_blank">pcm@cisco.com</a></div><div>IRC ……..… pcm_ (<a href="http://irc.freenode.com/" target="_blank">irc.freenode.com</a>)</div>





<div>TW ………... @pmichali</div><div>GPG Key … 4525ECC253E31A83</div><div>Fingerprint .. 307A 96BB 1A4C D2C7 931D 8D2D 4525 ECC2 53E3 1A83</div></div><div><br></div><br>
</div>
<br><div><div><div>On Jul 16, 2014, at 2:43 PM, Julio Carlos Barrera Juez <<a href="mailto:juliocarlos.barrera@i2cat.net" target="_blank">juliocarlos.barrera@i2cat.net</a>> wrote:</div><br></div>

<blockquote type="cite"><div><div dir="ltr">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: <a href="http://lists.openstack.org/pipermail/openstack-dev/2014-February/028389.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2014-February/028389.html</a><div>







<br></div><div>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:</div><div><br></div><div>DeviceDriverImportError: Can not load driver :neutron.services.vpn.junos_vpnaas.device_drivers.fake_device_driver.FakeDeviceDriver</div>







<div><br></div><div>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?</div><div><br></div><div>Thank you.<br><div><br clear="all">







<div><div dir="ltr"><div><a href="http://dana.i2cat.net/" target="_blank"><img src="http://dana.i2cat.net/wp-content/uploads/2011/12/LOGO-DANA_2.jpg" width="96" height="64"></a>  <a href="http://www.i2cat.net/en" target="_blank"><img src="http://www.i2cat.net/sites/all/themes/elegantica/logo.png" width="200" height="53"></a><font size="1"><font style="font-family:Helvetica"><br>







</font></font></div><font style="font-size:x-small;font-family:Helvetica">Julio C. Barrera Juez  </font><a href="http://es.linkedin.com/in/jcbarrera/en" target="_blank"><img src="https://static.licdn.com/scds/common/u/img/webpromo/btn_liprofile_blue_80x15.png" alt="View my profile on LinkedIn"></a><div>







<div><font size="1">Office phone: <a href="tel:%28%2B34%29%2093%20357%2099%2027" value="+34933579927" target="_blank">(+34) 93 357 99 27</a> (ext. 527)</font></div><div><font size="1"><font style="font-family:Helvetica">Office mobile phone: <a href="tel:%28%2B34%29%20625%2066%2077%2026" value="+34625667726" target="_blank">(+34) 625 66 77 26</a><br>





Distributed Applications and Networks Area (DANA)<br>

i2CAT Foundation, Barcelona</font><br></font></div></div></div></div>
</div></div></div></div><div>
_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>





</div></blockquote></div><br></div></div><br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>



</blockquote></div></div></div><br></div></div><br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>

</blockquote></div><br></div></div></div></div><br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev<br></blockquote></div><br></div></body></html>