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'
문자열로 분류되는 'sessCookie'를 전달하는 것과 마찬가지로? 나는 이것보다는 오히려 새로운데, 나의 무능함에 대한 사과, 환호 Matt : – MRichards
그래, 실제로 세션 객체를 전달해야하는 문자열을 전달하려고하는 것처럼 보입니다. 물론, 파이썬 디버거를 사용하여'cherrypy.request.cookie.get ('sessCookie'). value'의 값을 검사 할 수 있습니다. 쿠키는 일반적으로 문자열이기 때문에 안전한 내기가 될 것입니다. – larsks
내가 이해할 수 있다고 생각하지만, 내가 할 때 : 'cherrypy.request.cookie.get ('name'). value'는 'name'이라는 쿠키 안에있는 값을 가져옵니다. 그래서 sessCookie도 같이해야합니까? 다음과 같은 도움을 주면 세션 객체를 전달했습니다 : 'cherrypy.response.cookie [ 'sessCookie'] = sess' – MRichards