Openstack:如何在 python API 中获取客户端的 IP

Openstack: how to get client's IP in the python API

我正在尝试为 openstack 上的单元实现一个新的称重器。如何在 openstack nova python 代码中获取客户端 IP(请求创建新实例的用户)?

我已经试过了

req.remote_addr

内部文件 nova/api/auth.py(NovaKeystoneContext.call 方法)和 nova/api/compute_req_id.py(ComputeReqIdMiddleware 方法),但没有成功。 LOG.debug 似乎表明在请求创建新实例时不会调用这些方法。

有什么关于如何实现的建议吗?

谢谢

对于任何可能感兴趣的人,我找到了解决方案。

当你创建一个新的加权器时,你需要添加一个这样的方法:

def _weigh_object(self, cell, weight_properties):

要获取客户端的IP你只需要调用

weight_properties['context'].remote_address

最后一个细节:您需要重新启动 nova 服务才能进行更改:

service nova-cells restart (as root)