nova-api调试错误之 URI scheme not known: 'call'

    继续调试nova-api,发现错误:

 File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 244, in loadcontext
    % (scheme, ', '.join(_loaders.keys())))

LookupError: URI scheme not known: 'call' (from egg, config)

单独拿出来调试,call是什么东西呢?看看配置文件,有点像地址前缀:

[root@xgtest scripts]# grep call /etc/nova/api-paste.ini    

use = call:nova.api.auth:pipeline_factory

use = call:nova.api.openstack.urlmap:urlmap_factory

use = call:nova.api.openstack.urlmap:urlmap_factory

use = call:nova.api.auth:pipeline_factory

use = call:nova.api.auth:pipeline_factory

在看看其他前缀呢?    

[root@xgtest scripts]# grep egg /etc/nova/api-paste.ini     

use = egg:Paste#urlmap

use = egg:Paste#urlmap

这就明白了,直接跟代码里面去:


def _loadconfig(object_type, uri, path, name, relative_to,

                global_conf):

301     isabs = os.path.isabs(path)

302     # De-Windowsify the paths:

303     path = path.replace('\\', '/')

304     if not isabs:

305         if not relative_to:

306             raise ValueError(

307                 "Cannot resolve relative uri %r; no relative_to keyword "

308                 "argument given" % uri)

309         relative_to = relative_to.replace('\\', '/')

310         if relative_to.endswith('/'):

311             path = relative_to + path

312         else:

313             path = relative_to + '/' + path

314     if path.startswith('///'):

315         path = path[2:]

316     path = unquote(path)

317     loader = ConfigLoader(path)

318     if global_conf:

319         loader.update_defaults(global_conf, overwrite=False)

320     return loader.get_context(object_type, name, global_conf)

321 

322 _loaders['config'] = _loadconfig

323 

324 

325 def _loadegg(object_type, uri, spec, name, relative_to,

326              global_conf):

327     loader = EggLoader(spec)

328     return loader.get_context(object_type, name, global_conf

330 _loaders['egg'] = _loadegg

333 def _loadfunc(object_type, uri, spec, name, relative_to,

334              global_conf):

336     loader = FuncLoader(spec)

337     return loader.get_context(object_type, name, global_conf)

这几明白了,查看好的环境,对比下:/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py

发现确实少了代码:

325 def _loadegg(object_type, uri, spec, name, relative_to,

326              global_conf):

327     loader = EggLoader(spec)

328     return loader.get_context(object_type, name, global_conf)

329 

330 _loaders['egg'] = _loadegg

331 

332 

333 def _loadfunc(object_type, uri, spec, name, relative_to,

334              global_conf):

336     loader = FuncLoader(spec)

337     return loader.get_context(object_type, name, global_conf)

339 _loaders['call'] = _loadfunc

拿好的paste.deply覆盖一次,或者直接安装一个正确的paste版本

转载于:https://my.oschina.net/u/177808/blog/74291

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值