<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">Ha, thats exactly the case, the whole logic sits in sdk and is spread across the supported services:</span><div class=""><font color="#000000" class="">- <a href="https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/compute/v2/_proxy.py#L1798" style="caret-color: rgb(0, 0, 0);" class="">https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/compute/v2/_proxy.py#L1798</a> - for compute. KeyPairs not dropped, since they belong to user, and not to the “project”;</font></div><div class="">- <a href="https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/block_storage/v3/_proxy.py#L547" class="">https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/block_storage/v3/_proxy.py#L547</a> - block storage;</div><div class="">- <a href="https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/orchestration/v1/_proxy.py#L490" class="">https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/orchestration/v1/_proxy.py#L490</a></div><div class="">- <a href="https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/network/v2/_proxy.py#L4130" class="">https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/network/v2/_proxy.py#L4130</a> - the most complex one in order to give possibility to clean “old” resource without destroying everything else</div><div class=""><br class=""></div><div class="">Adding image is few lines of code (never had enough time to add it), identity is a bit tricky, since also here mostly resources does not belong to Project. DNS would be also easy to do. OSC here is only providing I/F, while the logic sits in SDK and can be very easy extended for other services.</div><div class=""><br class=""></div><div class="">P.S. I use it this on an hourly basis since more than a year already (not a complete cleanup, but with update_after filter in project where the cloud is monitored).</div><div class=""><br class=""></div><div class="">Regards,</div><div class="">Artem<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 18. Jan 2021, at 19:52, Thomas Goirand <<a href="mailto:zigo@debian.org" class="">zigo@debian.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On 1/18/21 6:56 PM, Artem Goncharov wrote:<br class=""><blockquote type="cite" class="">What do you mean it doesn’t implement anything at all? It does clean up compute, network, block_storage, orchestrate resources. Moreover it gives you possibility to clean “old” resources (created before or last updated before).<br class=""></blockquote><br class="">Oh really? With that few lines of code? I'll re-read the patch then,<br class="">sorry for my bad assumptions.<br class=""><br class="">Can you point at the part that's actually deleting the resources?<br class=""><br class="">Thomas Goirand (zigo)<br class=""><br class=""></div></div></blockquote></div><br class=""></div></body></html>