是否有 API 用于清除 openstack 中的项目?

Is there an API for purging a project in the openstack?

我需要通过 API 调用 轻松清除我在 OpenStack 项目上的用户。 就像这个 CLI 命令:

neutron purge PROJECT_ID

在 Neutron 项目 docs 中可用,但需要 API 调用。

我找不到 API,所以实际上我的问题是:
1、不是有这么一个API吗?
如果没有,
2.why?
有没有具体原因?

我检查了客户端和 neutron-server 的源代码,但不幸的是,REST-API 中没有用于此功能的专用端点。

该功能仅neutron-client支持,openstack-client不支持。当你 运行 neutron purge PROJECT_ID 中子客户端在客户端的 python 代码中所做的所有事情时,就是列出与给定项目相关的所有资源,然后遍历此列表并为每个资源向中子 REST-API 发送删除。所以它只是客户端 python 代码中的一个简单的自动化,而不是服务器端的特定端点。

查看代码中的具体功能:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/purge.py#L63

根据我对 openstack 及其社区的经验,我认为它是这样做的,因为只将新代码添加到 neutron-client 中更容易。当这应该成为一个新的端点时,这个特性也必须在 neutron、openstack-client 和 openstacksdk 中实现。每个存储库都有自己的团队。这个清除功能太小了,不值得说服所有 4 个团队。您尝试为一个简单功能更新的组件越多,就越难,因为想要将该功能带到上游的人负责将所有必需组件的团队聚集在一起,而核心团队中只有一个人拥有您的实施存在问题,您必须几乎从头开始。因此,当您自己不是核心团队的一员时,很容易需要一两年时间才能将跨组件功能(如新端点)引入上游。因此,与跨项目贡献相比,仅将功能引入 neutron-client 非常容易。

至少这就是为什么我也只在 neutron-client 中实现此功能,或者如果可能的话只在 openstack-client 中实现此功能,而不是添加一个新的端点,当我将此功能带到上游时。