<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"><font style="font-family:Helvetica">Office phone: (+34) 93 357 99 27 (ext. 527)</font></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>