Python Openstacksdk - KeyError: 'owner' 尝试使用 id 获取服务器详细信息时

如何解决Python Openstacksdk - KeyError: 'owner' 尝试使用 id 获取服务器详细信息时

我目前正在尝试使用 compute.get_server(id) 通过 id 检索服务器。我从日志中可以看到 API 已完成并返回我通常使用 openstack cli 获取的所有字段(或使用 compute.get_servers() 获取所有服务器)

这是我收到的:

Traceback (most recent call last):
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\openstack\resource.py",line 158,in __get__
    value = attributes[self.name]
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\openstack\resource.py",line 253,in __getitem__
    return self.attributes[key]
KeyError: 'owner'


During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\app.py",line 2464,in __call__
    return self.wsgi_app(environ,start_response)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\app.py",line 2450,in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_cors\extension.py",line 165,in wrapped_function
    return cors_after_request(app.make_response(f(*args,**kwargs)))
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_restful\__init__.py",line 272,in error_router
    return original_handler(e)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_restful\__init__.py",in error_router
    return original_handler(e)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\app.py",line 1867,in handle_exception
    reraise(exc_type,exc_value,tb)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\_compat.py",line 38,in reraise
    raise value.with_traceback(tb)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\app.py",line 2447,in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\app.py",line 1952,in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_cors\extension.py",line 1821,in handle_user_exception
    reraise(exc_type,line 1950,in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\app.py",line 1936,in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_restful\__init__.py",line 468,in wrapper
    resp = resource(*args,**kwargs)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\views.py",line 89,in view
    return self.dispatch_request(*args,**kwargs)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_restful\__init__.py",line 583,in dispatch_request
    resp = meth(*args,**kwargs)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask_jwt_extended\view_decorators.py",line 115,in decorator
    return fn(*args,**kwargs)
  File "C:\Users\myuser\Documents\myproj\myproj\openstack\servers\servers_api.py",line 68,in get
    return jsonify(servers_manager.get_server(request.args.get('id'),request.args.get('project')))
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\json\__init__.py",line 370,in jsonify
    dumps(data,indent=indent,separators=separators) + "\n",File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\flask\json\__init__.py",line 211,in dumps
    rv = _json.dumps(obj,**kwargs)
  File "C:\Users\myuser\AppData\Local\Programs\Python\python38\Lib\json\__init__.py",line 234,in dumps
    return cls(
  File "C:\Users\myuser\AppData\Local\Programs\Python\python38\Lib\json\encoder.py",line 201,in encode
    chunks = list(chunks)
  File "C:\Users\myuser\AppData\Local\Programs\Python\python38\Lib\json\encoder.py",line 431,in _iterencode
    yield from _iterencode_dict(o,_current_indent_level)
  File "C:\Users\myuser\AppData\Local\Programs\Python\python38\Lib\json\encoder.py",line 405,in _iterencode_dict
    yield from chunks
  File "C:\Users\myuser\AppData\Local\Programs\Python\python38\Lib\json\encoder.py",line 353,in _iterencode_dict
    items = sorted(dct.items())
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\openstack\resource.py",line 706,in items
    res.append((attr,self[attr]))
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\openstack\resource.py",line 646,in __getitem__
    return getattr(self,name)
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\openstack\resource.py",line 633,in __getattribute__
    raise e
  File "C:\Users\myuser\Documents\myproj\venv\Lib\site-packages\openstack\resource.py",line 627,in __getattribute__
    return object.__getattribute__(self,line 179,in __get__
    delattr(instance,seen_flag)
AttributeError: owner_seen

在我的代码中抛出异常的地方:

servers_manager.py


def get_server(id,project):
   
    conn = connection_controller.connect(project)
    server = conn.compute.get_server(id)
    return server


我使用的连接方式:

connection_controller.py


def connect(project_name):
    return conn_manager.create_connection(conf.OPENSTACK_AUTH_URL,conf.OPENSTACK_REGION,project_name,conf.OPENSTACK_USER,conf.OPENSTACK_PASSWORD,conf.OPENSTACK_SSL_VERIFY)

connection_manager.py

def create_connection(auth_url,region,username,password,verify):
    return openstack.connect(
        auth_url=auth_url,project_name=project_name,username=username,password=password,region_name=region,verify=verify,cacert="ca.crt"
    )

Openstack 调试日志

2021-03-03 11:27:43,313 - keystoneauth.session - DEBUG - REQ: curl -g -i --cacert "ca.crt" -X GET https://url.mycompany:5000 -H "Accept: application/json" -H "User-Agent: openstacksdk/0.53.0 keystoneauth1/4.3.1 python-requests/2.25.1 cpython/3.8.5"
2021-03-03 11:27:43,630 - keystoneauth.session - DEBUG - RESP: [300] Connection: close Content-Length: 595 Content-Type: application/json Date: Wed,03 Mar 2021 10:27:43 GMT Server: Apache vary: X-Keystone-Internal,X-Auth-Token x-frame-options: SAMEORIGIN
2021-03-03 11:27:43,630 - keystoneauth.session - DEBUG - RESP BODY: {"versions": {"values": [{"status": "stable","updated": "2016-04-04T00:00:00Z","media-types": [{"base": "application/json","type": "application/vnd.openstack.identity-v3+json"}],"id": "v3.6","links": [{"href": "https://url.mycompany:5000/v3/","rel": "self"}]},{"status": "stable","updated": "2014-04-17T00:00:00Z","type": "application/vnd.openstack.identity-v2.0+json"}],"id": "v2.0","links": [{"href": "https://url.mycompany:5000/v2.0/","rel": "self"},{"href": "http://docs.openstack.org/","type": "text/html","rel": "describedby"}]}]}}
2021-03-03 11:27:43,640 - keystoneauth.identity.v2 - DEBUG - Making authentication request to https://url.mycompany:5000/v2.0/tokens
2021-03-03 11:27:44,159 - keystoneauth.session - DEBUG - REQ: curl -g -i --cacert "ca.crt" -X GET https://url.mycompany:0000/v2.1 -H "Accept: application/json" -H "User-Agent: openstacksdk/0.53.0 keystoneauth1/4.3.1 python-requests/2.25.1 cpython/3.8.5"
2021-03-03 11:27:44,444 - keystoneauth.session - DEBUG - RESP: [401] Connection: close Content-Length: 23 Content-Type: text/html; charset=UTF-8 Date: Wed,03 Mar 2021 10:27:44 GMT Www-Authenticate: Keystone uri='http://x.x.x.x:5000/' X-Compute-Request-Id: req-eeb895da-4623-49f9-a91f-**301f0b****
2021-03-03 11:27:44,444 - keystoneauth.session - DEBUG - RESP BODY: Omitted,Content-Type is set to text/html; charset=UTF-8. Only application/json responses have their bodies logged.
2021-03-03 11:27:44,444 - keystoneauth.session - DEBUG - GET call to https://url.mycompany:0000/v2.1 used request id req-eeb895da-4623-49f9-a91f-**301f0b****
2021-03-03 11:27:44,444 - keystoneauth.session - DEBUG - Request returned failure status: 401
2021-03-03 11:27:44,445 - keystoneauth.session - DEBUG - REQ: curl -g -i --cacert "ca.crt" -X GET https://url.mycompany:0000/v2.1 -H "Accept: application/json" -H "User-Agent: openstacksdk/0.53.0 keystoneauth1/4.3.1 python-requests/2.25.1 cpython/3.8.5" -H "X-Auth-Token: {SHA256}tokenxxx"
2021-03-03 11:27:45,057 - keystoneauth.session - DEBUG - RESP: [302] Connection: close Content-Length: 0 Content-Type: text/plain; charset=utf8 Date: Wed,03 Mar 2021 10:27:45 GMT Location: https://url.mycompany:0000/v2.1/ X-Compute-Request-Id: req-281cd964-ad96-420e-8699-**da8511****
2021-03-03 11:27:45,057 - keystoneauth.session - DEBUG - RESP BODY: Omitted,Content-Type is set to text/plain; charset=utf8. Only application/json responses have their bodies logged.
2021-03-03 11:27:45,351 - keystoneauth.session - DEBUG - RESP: [200] Connection: close Content-Length: 387 Content-Type: application/json Date: Wed,03 Mar 2021 10:27:45 GMT vary: X-OpenStack-Nova-API-Version X-Compute-Request-Id: req-315159de-8299-4ede-8325-f1a71d2f7e66 X-Openstack-Nova-Api-Version: 2.1
2021-03-03 11:27:45,351 - keystoneauth.session - DEBUG - RESP BODY: {"version": {"status": "CURRENT","updated": "2013-07-23T11:33:21Z","links": [{"href": "https://url.mycompany:0000/v2.1/","rel": "describedby"}],"min_version": "2.1","version": "2.25","type": "application/vnd.openstack.compute+json;version=2.1"}],"id": "v2.1"}}
2021-03-03 11:27:45,351 - keystoneauth.session - DEBUG - GET call to https://url.mycompany:0000/v2.1/ used request id req-315159de-8299-4ede-8325-f1a71d2f7e66
2021-03-03 11:27:45,353 - keystoneauth.session - DEBUG - REQ: curl -g -i --cacert "ca.crt" -X GET https://url.mycompany:0000/v2.1/servers/572b13f0-xxxx-xxxx-8a69-81f608462b9d -H "OpenStack-API-Version: compute 2.25" -H "User-Agent: openstacksdk/0.53.0 keystoneauth1/4.3.1 python-requests/2.25.1 cpython/3.8.5" -H "X-Auth-Token: {SHA256}tokenxxx" -H "X-OpenStack-Nova-API-Version: 2.25"
2021-03-03 11:27:46,276 - keystoneauth.session - DEBUG - RESP: [200] Connection: close Content-Length: 10517 Content-Type: application/json Date: Wed,03 Mar 2021 10:27:46 GMT vary: X-OpenStack-Nova-API-Version X-Compute-Request-Id: req-38344f9b-b38f-4309-8e26-***bdccb*** X-Openstack-Nova-Api-Version: 2.25
2021-03-03 11:27:46,276 - keystoneauth.session - DEBUG - RESP BODY: {"server": {"status": "ACTIVE","AA-BBB-SRV-ATTR:ramdisk_id": "","updated": "2020-09-24T10:22:13Z","hostId": "****","AA-BBB-SRV-ATTR:host": "compute1111.domain.tld","addresses": {"VMNAME_internal": [{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:55:e8:c3","version": 4,"addr": "***.***.0.2","AA-BBB-IPS:type": "fixed"}],"name_om_sp": [{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:50:0f:b8","addr": "***.**.27.117","name_sig_sp1": [{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:ef:f3:7a","addr": "***.***.2.30","name_access_sp1": [{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:2f:f0:62","version": 6,"addr": "fd00:2::a4","AA-BBB-IPS:type": "fixed"},{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:2f:f0:62","addr": "***.***.2.46","name_core_sp1": [{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:a5:62:09","addr": "fd00:1::a4",{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:a5:62:09","addr": "***.***.2.62","name_li_sp1": [{"AA-BBB-IPS-INFO:nnn_addr": "xx:xx:3e:19:21:da","addr": "***.***.2.78","AA-BBB-IPS:type": "fixed"}]},"links": [{"href": "https://url.mycompany:0000/v2.1/servers/572b13f0-xxxx-xxxx-8a69-81f608462b9d",{"href": "https://url.mycompany:0000/servers/572b13f0-xxxx-xxxx-8a69-81f608462b9d","rel": "bookmark"}],"key_name": null,"image": {"id": "9d870d65-****-44c2-****-f263ccfd1291","links": [{"href": "https://url.mycompany:0000/images/9d870d65-****-44c2-****-f263ccfd1291","rel": "bookmark"}]},"AA-BBB-SRV-ATTR:user_data": "**+**+**+**=","AA-BBB-STS:task_state": null,"AA-BBB-STS:vm_state": "active","AA-BBB-SRV-ATTR:instance_name": "instance-adcbef","AA-BBB-SRV-ATTR:root_device_name": "/dev/vda","OS-SRV-USG:launched_at": "yyyy-mm-02T13:08:34.000000","locked": false,"flavor": {"id": "18d06e18-****-****-aa55-d506c43bbcfa","links": [{"href": "https://url.mycompany:0000/flavors/18d06e18-****-****-aa55-d506c43bbcfa","id": "572b13f0-xxxx-xxxx-8a69-81f608462b9d","scheduler_hints": {"group": "e6cfdcb5-****-4e9c-****-cb23d6d51354"},"AA-BBB-SRV-ATTR:kernel_id": "","host_status": "UP","AA-BBB-AZ:availability_zone": "ZONE","user_id": "9b415f24996a4feeac063d13b06f9c73","name": "VMNAME-0","AA-BBB-SRV-ATTR:launch_index": 0,"created": "yyyy-mm-02T13:08:16Z","tenant_id": "4c6838e5d407**************5ca213","description": "VMNAME-0","OS-DCF:diskConfig": "MANUAL","AA-BBB-SRV-ATTR:hypervisor_hostname": "compute1111.domain.tld","AA-BBBended-volumes:volumes_attached": [],"accessIPv4": "","accessIPv6": "","AA-BBB-SRV-ATTR:reservation_id": "r-lbfvv***","AA-BBB-SRV-ATTR:hostname": "VMNAME-0","progress": 0,"AA-BBB-STS:power_state": 1,"config_drive": "True","OS-SRV-USG:terminated_at": null,"Metadata": {"ha-policy": "managed-on-host"}}}
2021-03-03 11:27:46,278 - keystoneauth.session - DEBUG - GET call to compute for https://url.mycompany:0000/v2.1/servers/572b13f0-xxxx-xxxx-8a69-81f608462b9d used request id req-38344f9b-b38f-4309-8e26-***bdccb***

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?