2017-10-17 20 views
0

別のクラス(Cherrypy Cookieを使用)からセッションオブジェクトを渡し、このクラスのNovaインスタンスを再構築してサーバーをリストしました。再構築されたNovaインスタンスは動作しますが、サーバーのリストを作成しようとすると、属性エラーが発生します。この種の問題について、インターネット上ではほとんど(この問題のような遠隔的なものは何も見つかりませんでした) この問題を解決するにはどうすればよいですか? :)リストサーバー - OpenStack Nova API

コード:

import cherrypy 
import xmlrpclib 
import xml.etree.ElementTree as ET 
from keystoneauth1 import loading 
from keystoneauth1 import session 
import novaclient.client as client 
from socket import gethostbyaddr 

nova = client.Client("2.1", session=cherrypy.request.cookie.get('sessCookie').value) 
serverList = nova.servers.list() 
print serverList 

エラー:

File "/usr/lib/python2.7/site-packages/cherrypy/_cprequest.py", line 656, in respond 
    response.body = self.handler() 
    File "/usr/lib/python2.7/site-packages/cherrypy/lib/encoding.py", line 188, in __call__ 
    self.body = self.oldhandler(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/cherrypy/lib/jsontools.py", line 61, in json_handler 
    value = cherrypy.serving.request._json_inner_handler(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/cherrypy/_cpdispatch.py", line 34, in __call__ 
    return self.callable(*self.args, **self.kwargs) 
    File "/var/www/frontend/controllers/api/vm.py", line 158, in GET 
    serverList = nova.servers.list() 
    File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 749, in list 
    "servers") 
    File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 242, in _list 
    resp, body = self.api.client.get(url) 
    File "/usr/lib/python2.7/site-packages/keystoneauth1/adapter.py", line 173, in get 
    return self.request(url, 'GET', **kwargs) 
    File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 89, in request 
    **kwargs) 
    File "/usr/lib/python2.7/site-packages/keystoneauth1/adapter.py", line 331, in request 
    resp = super(LegacyJsonAdapter, self).request(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/keystoneauth1/adapter.py", line 98, in request 
    return self.session.request(url, method, **kwargs) 
AttributeError: 'str' object has no attribute 'request' 

答えて

1

sessionキーワードの値は、キーストーンsession対象のはずですが、あなたは、文字列で渡しています。

キーストーンセッションhereを使用して作業する方法について詳しく読むことができます。

+0

文字列として分類されている 'sessCookie'を渡していますか?私はむしろこれに新しいので、私の無能のために謝罪マット:) – MRichards

+0

はい、実際にセッションオブジェクトを渡す必要がある文字列を渡そうとしているようです。もちろん、Pythonデバッガを使って 'cherrypy.request.cookie.get( 'sessCookie')。value'の値を調べることができますが、クッキーは一般的に文字列なので安全な賭けのようです。 – larsks

+0

私はあなたのことを理解していると思いますが、私がするとき: 'cherrypy.request.cookie.get( 'name')。value'は、 'name'というクッキー内の値を取得します。だから同じことがsessCookieで行われるべきですか? 私がセッションオブジェクトを渡したのは、以下のようなことです: 'cherrypy.response.cookie ['sessCookie'] = sess' – MRichards

関連する問題