是否有用于清除开放堆栈中的项目的 API?



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

neutron purge PROJECT_ID

这在 Neutron 项目文档中可用,但带有 API 调用。

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

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

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

请参阅此处代码中的特定函数:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/purge.py#L63

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

这至少是原因,为什么我也只在中子客户端中实现这个功能,或者如果可能的话只在 openstack-client 中实现这个功能,而不是添加新的端点,当我把这个功能带到上游时。

最新更新