2017-10-17 33 views
0

다른 클래스의 세션 객체 (Cherrypy 쿠키 사용)를 전달하고이 클래스의 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'를 전달하는 것과 마찬가지로? 나는 이것보다는 오히려 새로운데, 나의 무능함에 대한 사과, 환호 Matt : – MRichards

+0

그래, 실제로 세션 객체를 전달해야하는 문자열을 전달하려고하는 것처럼 보입니다. 물론, 파이썬 디버거를 사용하여'cherrypy.request.cookie.get ('sessCookie'). value'의 값을 검사 할 수 있습니다. 쿠키는 일반적으로 문자열이기 때문에 안전한 내기가 될 것입니다. – larsks

+0

내가 이해할 수 있다고 생각하지만, 내가 할 때 : 'cherrypy.request.cookie.get ('name'). value'는 'name'이라는 쿠키 안에있는 값을 가져옵니다. 그래서 sessCookie도 같이해야합니까? 다음과 같은 도움을 주면 세션 객체를 전달했습니다 : 'cherrypy.response.cookie [ 'sessCookie'] = sess' – MRichards