当我使用openstack api操作实例时,代码如下:
def stop_server(self, server_id: str):
api_url = self.endpoint + f'/servers/{server_id}/action'
json = {"os-stop": None}
headers = self.get_auth_token_header()
import uuid
req_id = f"req-{str(uuid.uuid4())}"
print(req_id)
if req_id:
headers['X-Openstack-Nova-Api-Version'] = '2.46'
headers['X-Openstack-Request-Id'] = req_id
resp = self.make_request('post', api_url, json=json, headers=headers)
print(resp.headers)
return resp
我在请求头中指定了全局请求ID,但是响应头中的全局ID“X-Openstack-Request-Id”与我在请求头中指定的不一样。 API 参考是:https://docs.openstack.org/api-ref/compute/#request-ids
请求 ID 用户可以在请求头中指定全局请求ID。用户可以在响应头中收到本地请求 ID。
全局请求ID,是OpenStack组件中用于跟踪每个请求的唯一通用ID。全局请求ID的格式必须为req-+UUID(UUID4)。如果不符合格式,则被忽略。它与请求关联并显示在该请求的日志行中。默认情况下,中间件配置确保全局请求 ID 出现在日志文件中。
2.46版本新增功能
我的 X-Openstack-Request-Id 是 req-600d0d83-92aa-4c08-8e6d-38ea586ab990 响应标头为 {'Content-Length': '0', 'Content-Type': 'application/json', 'Openstack-Api-Version': 'compute 2.46', 'X-Openstack-Nova-Api-Version' :'2.46','变化':'OpenStack-API-版本,X-OpenStack-Nova-API-版本','X-Openstack-Request-Id':'req-ff3faec2-b72e-4478-a542-d2eda78c467d' , 'X-Compute-Request-Id': 'req-ff3faec2-b72e-4478-a542-d2eda78c467d', '日期': '星期三, 2024 年 4 月 17 日 06:38:05 GMT', '连接': 'keep-活着'}
我换了api版本还是不行
您的问题解决了吗?我也有同样的行为。