[openstack-dev] A question about strange behavior of oslo.config in eclipse
Joshua Zhang
joshua.zhang at canonical.com
Mon Feb 23 06:29:22 UTC 2015
Hi Doug,
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 ?
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.
*[1]*, 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.
Traceback (most recent call last):
File "/usr/local/bin/neutron-server", line 9, in <module>
load_entry_point('neutron==2015.1.dev202', 'console_scripts',
'neutron-server')()
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py",
line 521, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py",
line 2632, in load_entry_point
return ep.load()
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py",
line 2312, in load
return self.resolve()
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py",
line 2318, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/bak/openstack/neutron/neutron/cmd/eventlet/server/__init__.py",
line 13, in <module>
from neutron import server
File "/bak/openstack/neutron/neutron/server/__init__.py", line 26, in
<module>
from neutron.common import config
File "/bak/openstack/neutron/neutron/common/config.py", line 25, in
<module>
import oslo_messaging
File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/__init__.py",
line 18, in <module>
from .notify import *
File
"/usr/local/lib/python2.7/dist-packages/oslo_messaging/notify/__init__.py",
line 23, in <module>
from .notifier import *
File
"/usr/local/lib/python2.7/dist-packages/oslo_messaging/notify/notifier.py",
line 32, in <module>
help='Driver or drivers to handle sending notifications.'),
File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line
1108, in __init__
item_type=types.MultiString(),
AttributeError: 'module' object has no attribute 'MultiString'
*[2] *
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
2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher Traceback
(most recent call last):
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
2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher
executor_callback))
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
2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher
localcontext.clear_local_context()
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
2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher
delattr(_STORE, _KEY)
2015-02-22 14:56:24.117 28042 TRACE oslo_messaging.rpc.dispatcher
AttributeError:
_oslo_messaging_localcontext_9bb7d928d1a042e085f354eb118e98a0
On Sat, Feb 14, 2015 at 7:05 AM, Doug Hellmann <doug at doughellmann.com>
wrote:
>
>
> On Thu, Feb 12, 2015, at 07:19 AM, Joshua Zhang wrote:
> > Hi Doug,
> >
> > Thank you very much for your reply. I don't have any codes, so no any
> > special codes as well.
> > Only thing I did is that:
> > 1, use devstack to install a fresh openstack env, all are ok.
> > 2, import neutron-vpnaas directory (no any my own codes) into eclipse
> > as
> > pydev project, for example, run unit test
> > (neutron_vpnaas.tests.unit.services.vpn.test_vpn_service ) in eclipse, it
> > throws the following exception.
> > 3, but this unit test can be run well in bash, see
> > http://paste.openstack.org/show/172016/
> > 4, this unit test can also be run well in eclipse as long as I edit
> > neutron/openstack/common/policy.py file to change oslo.config into
> > oslo_config.
> >
> >
> > ======================================================================
> > ERROR: test_add_nat_rule
> >
> (neutron_vpnaas.tests.unit.services.vpn.test_vpn_service.TestVPNDeviceDriverCallsToService)
> >
> neutron_vpnaas.tests.unit.services.vpn.test_vpn_service.TestVPNDeviceDriverCallsToService.test_add_nat_rule
> > ----------------------------------------------------------------------
> > _StringException: Traceback (most recent call last):
> > File
> >
> "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py",
> > line 98, in setUp
> > super(TestVPNDeviceDriverCallsToService, self).setUp()
> > File
> >
> "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py",
> > line 53, in setUp
> > super(VPNBaseTestCase, self).setUp()
> > File "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/base.py", line
> > 36, in setUp
> > override_nvalues()
> > File "/bak/openstack/neutron-vpnaas/neutron_vpnaas/tests/base.py", line
> > 30, in override_nvalues
> > cfg.CONF.set_override('policy_file', neutron_policy)
>
> Yes, this line is trying to force the value of a policy module
> configuration value but the test file does not previously import the
> module where that option is defined.
>
> For now, you should investigate the fixture class in oslo.config [1],
> and update the test class to use ConfigOpts.import_opt() to ensure the
> policy option is defined.
>
> After the oslo.policy library is released (and neutron is updated to use
> it instead of the incubated version of that code), the tests will need
> to be changed again to use an API to update the setting because
> configuration options are not part of the public API for Oslo libraries.
> I filed a bug against oslo.policy to track the need for that change [2].
>
> Doug
>
> [1] http://docs.openstack.org/developer/oslo.config/fixture.html
> [2] https://bugs.launchpad.net/oslo.policy/+bug/1421869
>
> > File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line
> > 1679, in __inner
> > result = f(self, *args, **kwargs)
> > File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line
> > 1949, in set_override
> > opt_info = self._get_opt_info(name, group)
> > File "/usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py", line
> > 2262, in _get_opt_info
> > raise NoSuchOptError(opt_name, group)
> > NoSuchOptError: no such option: policy_file
> >
> > On Tue, Feb 10, 2015 at 10:38 PM, Doug Hellmann <doug at doughellmann.com>
> > wrote:
> >
> > >
> > >
> > > On Tue, Feb 10, 2015, at 04:29 AM, Joshua Zhang wrote:
> > > > Hi Stacker,
> > > > A question about oslo.config, maybe a very silly question. but pls
> > > > tell
> > > > me if you know, thanks in advance.
> > > >
> > > > I know oslo has removed 'olso' namespace, oslo.config has been
> changed
> > > > to oslo_config, it also retains backwards compat.
> > > >
> > > > I found I can run openstack successfully, but as long as I run
> > > > something
> > > > in eclipse/pydev it always said like 'NoSuchOptError: no such option:
> > > > policy_file'. I can change 'oslo.config' to 'oslo_config' in
> > > > neutron/openstack/common/policy.py temporarily to bypass this problem
> > > > when
> > > > I want to debug something in eclipse. But I want to know why? who can
> > > > help
> > > > me to explain ? thanks.
> > >
> > > It sounds like you have code in one module using an option defined
> > > somewhere else and relying on import ordering to cause that option to
> be
> > > defined. The import_opt() method of the ConfigOpts class is meant to
> > > help make these cross-module option dependencies explicit [1]. If you
> > > provide a more detailed traceback I may be able to give more specific
> > > advice about where changes are needed.
> > >
> > > Doug
> > >
> > > [1]
> > >
> > >
> http://docs.openstack.org/developer/oslo.config/configopts.html?highlight=import_opt#oslo_config.cfg.ConfigOpts.import_opt
> > >
> > > >
> > > >
> > > > --
> > > > Best Regards
> > > > Zhang Hua(张华)
> > > > Software Engineer | Canonical
> > > > IRC: zhhuabj
> > > >
> > >
> __________________________________________________________________________
> > > > OpenStack Development Mailing List (not for usage questions)
> > > > Unsubscribe:
> > > > OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> > > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> > >
> > >
> __________________________________________________________________________
> > > OpenStack Development Mailing List (not for usage questions)
> > > Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> > >
> >
> >
> >
> > --
> > Best Regards
> > Zhang Hua(张华)
> > Software Engineer | Canonical
> > IRC: zhhuabj
>
--
Best Regards
Zhang Hua(张华)
Software Engineer | Canonical
IRC: zhhuabj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150223/9e52929d/attachment.html>
More information about the OpenStack-dev
mailing list