<div dir="ltr">Hi Doug,<br><br>     I can't find above error when using the latest codes (2015-02-22), but new error occur ( see [1] ).  I feel it has no concern with the code(ConfigOpts.import_opt), the same code can be run in both bash and pycharm, it just didn't work in eclipse+pydev. It looks like there are some conflicts between oslo/monkey patch and pydev. You are python expert, could you give me some input by the following traceback ?<br><br>     Another question,  'Gevent compatible debugging' feature both in eclipse and pycharm doesn't work, changing 'thread=False' for monkey patch may cause the error [2], so now I have to get back to use pdb to debug openstack. Could you have some idea to make oslo/monkey patch is more friendly for IDE ? many thanks.<br><br><b>[1]</b>, traceback when running 'neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini' in eclipse+pydev env. while we can run this command well in bash and pycharm.<br><br>Traceback (most recent call last):<br>  File "/usr/local/bin/neutron-server", line 9, in <module><br>    load_entry_point('neutron==2015.1.dev202', 'console_scripts', 'neutron-server')()<br>  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 521, in load_entry_point<br>    return get_distribution(dist).load_entry_point(group, name)<br>  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2632, in load_entry_point<br>    return ep.load()<br>  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2312, in load<br>    return self.resolve()<br>  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2318, in resolve<br>    module = __import__(self.module_name, fromlist=['__name__'], level=0)<br>  File "/bak/openstack/neutron/neutron/cmd/eventlet/server/__init__.py", line 13, in <module><br>    from neutron import server<br>  File "/bak/openstack/neutron/neutron/server/__init__.py", line 26, in <module><br>    from neutron.common import config<br>  File "/bak/openstack/neutron/neutron/common/config.py", line 25, in <module><br>    import oslo_messaging<br>  File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/__init__.py", line 18, in <module><br>    from .notify import *<br>  File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/notify/__init__.py", line 23, in <module><br>    from .notifier import *<br>  File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/notify/notifier.py", line 32, in <module><br>    help='Driver or drivers to handle sending notifications.'),<br>  File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line 1108, in __init__<br>    item_type=types.MultiString(),<br>AttributeError: 'module' object has no attribute 'MultiString'<br><br><br><b>[2] </b><br>  <br>2015-02-22 14:56:24.117 ERROR oslo_messaging.rpc.dispatcher [req-65501748-3db5-43b6-b00e-732565d2192a TestNetworkVPNaaS-1393357785 TestNetworkVPNaaS-1147259963] Exception during message handling: _oslo_messaging_localcontext_9bb7d928d1a042e085f354eb118e98a0<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher Traceback (most recent call last):<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher   File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatch_and_reply<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher     executor_callback))<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher   File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 188, in _dispatch<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher     localcontext.clear_local_context()<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher   File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/localcontext.py", line 55, in clear_local_context<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher     delattr(_STORE, _KEY)<br>2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher AttributeError: _oslo_messaging_localcontext_9bb7d928d1a042e085f354eb118e98a0<br><br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 14, 2015 at 7:05 AM, Doug Hellmann <span dir="ltr"><<a href="mailto:doug@doughellmann.com" target="_blank">doug@doughellmann.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><br>
<br>
On Thu, Feb 12, 2015, at 07:19 AM, Joshua Zhang wrote:<br>
> Hi Doug,<br>
><br>
>    Thank you very much for your reply. I don't have any codes, so no any<br>
> special codes as well.<br>
>    Only thing I did is that:<br>
>    1, use devstack to install a fresh openstack env, all are ok.<br>
>    2, import neutron-vpnaas directory (no any my own codes) into eclipse<br>
>    as<br>
> pydev project, for example, run unit test<br>
> (neutron_vpnaas.tests.unit.services.vpn.test_vpn_service ) in eclipse, it<br>
> throws the following exception.<br>
>    3, but this unit test can be run well in bash, see<br>
> <a href="http://paste.openstack.org/show/172016/" target="_blank">http://paste.openstack.org/show/172016/</a><br>
>    4, this unit test can also be run well in eclipse as long as I edit<br>
> neutron/openstack/common/policy.py file to change oslo.config into<br>
> oslo_config.<br>
><br>
><br>
> ======================================================================<br>
> ERROR: test_add_nat_rule<br>
> (neutron_vpnaas.tests.unit.services.vpn.test_vpn_service.TestVPNDeviceDriverCallsToService)<br>
> neutron_vpnaas.tests.unit.services.vpn.test_vpn_service.TestVPNDeviceDriverCallsToService.test_add_nat_rule<br>
> ----------------------------------------------------------------------<br>
> _StringException: Traceback (most recent call last):<br>
>   File<br>
> "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py",<br>
> line 98, in setUp<br>
>     super(TestVPNDeviceDriverCallsToService, self).setUp()<br>
>   File<br>
> "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py",<br>
> line 53, in setUp<br>
>     super(VPNBaseTestCase, self).setUp()<br>
>   File "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/base.py", line<br>
> 36, in setUp<br>
>     override_nvalues()<br>
>   File "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/base.py", line<br>
> 30, in override_nvalues<br>
>     cfg.CONF.set_override('policy_file', neutron_policy)<br>
<br>
</div></div>Yes, this line is trying to force the value of a policy module<br>
configuration value but the test file does not previously import the<br>
module where that option is defined.<br>
<br>
For now, you should investigate the fixture class in oslo.config [1],<br>
and update the test class to use ConfigOpts.import_opt() to ensure the<br>
policy option is defined.<br>
<br>
After the oslo.policy library is released (and neutron is updated to use<br>
it instead of the incubated version of that code), the tests will need<br>
to be changed again to use an API to update the setting because<br>
configuration options are not part of the public API for Oslo libraries.<br>
I filed a bug against oslo.policy to track the need for that change [2].<br>
<br>
Doug<br>
<br>
[1] <a href="http://docs.openstack.org/developer/oslo.config/fixture.html" target="_blank">http://docs.openstack.org/developer/oslo.config/fixture.html</a><br>
[2] <a href="https://bugs.launchpad.net/oslo.policy/+bug/1421869" target="_blank">https://bugs.launchpad.net/oslo.policy/+bug/1421869</a><br>
<div class="HOEnZb"><div class="h5"><br>
>   File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line<br>
> 1679, in __inner<br>
>     result = f(self, *args, **kwargs)<br>
>   File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line<br>
> 1949, in set_override<br>
>     opt_info = self._get_opt_info(name, group)<br>
>   File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line<br>
> 2262, in _get_opt_info<br>
>     raise NoSuchOptError(opt_name, group)<br>
> NoSuchOptError: no such option: policy_file<br>
><br>
> On Tue, Feb 10, 2015 at 10:38 PM, Doug Hellmann <<a href="mailto:doug@doughellmann.com">doug@doughellmann.com</a>><br>
> wrote:<br>
><br>
> ><br>
> ><br>
> > On Tue, Feb 10, 2015, at 04:29 AM, Joshua Zhang wrote:<br>
> > > Hi Stacker,<br>
> > >    A question about oslo.config, maybe a very silly question. but pls<br>
> > >    tell<br>
> > > me if you know, thanks in advance.<br>
> > ><br>
> > >    I know oslo has removed 'olso' namespace, oslo.config has been changed<br>
> > > to oslo_config, it also retains backwards compat.<br>
> > ><br>
> > >    I found I can run openstack successfully, but as long as I run<br>
> > >    something<br>
> > > in eclipse/pydev it always said like 'NoSuchOptError: no such option:<br>
> > > policy_file'. I can change 'oslo.config' to 'oslo_config' in<br>
> > > neutron/openstack/common/policy.py temporarily to bypass this problem<br>
> > > when<br>
> > > I want to debug something in eclipse. But I want to know why? who can<br>
> > > help<br>
> > > me to explain ? thanks.<br>
> ><br>
> > It sounds like you have code in one module using an option defined<br>
> > somewhere else and relying on import ordering to cause that option to be<br>
> > defined. The import_opt() method of the ConfigOpts class is meant to<br>
> > help make these cross-module option dependencies explicit [1]. If you<br>
> > provide a more detailed traceback I may be able to give more specific<br>
> > advice about where changes are needed.<br>
> ><br>
> > Doug<br>
> ><br>
> > [1]<br>
> ><br>
> > <a href="http://docs.openstack.org/developer/oslo.config/configopts.html?highlight=import_opt#oslo_config.cfg.ConfigOpts.import_opt" target="_blank">http://docs.openstack.org/developer/oslo.config/configopts.html?highlight=import_opt#oslo_config.cfg.ConfigOpts.import_opt</a><br>
> ><br>
> > ><br>
> > ><br>
> > > --<br>
> > > Best Regards<br>
> > > Zhang Hua(张华)<br>
> > > Software Engineer | Canonical<br>
> > > IRC:  zhhuabj<br>
> > ><br>
> > __________________________________________________________________________<br>
> > > OpenStack Development Mailing List (not for usage questions)<br>
> > > Unsubscribe:<br>
> > > <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</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>
> > __________________________________________________________________________<br>
> > OpenStack Development Mailing List (not for usage questions)<br>
> > Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</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>
><br>
><br>
><br>
> --<br>
> Best Regards<br>
> Zhang Hua(张华)<br>
> Software Engineer | Canonical<br>
> IRC:  zhhuabj<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div>Best Regards</div><div>Zhang Hua(张华)</div><div>Software Engineer | Canonical</div><div>IRC:  zhhuabj</div></div></div>
</div>