That's because the shell is using the SwiftService object [1], that indeed does recursive delete by itself [2]. In Heat we use Connection object as client to perform all the operations [3], and this one is not supporting recursive deletes.
[1] https://github.com/openstack/python-swiftclient/blob/master/swiftclient/shell.py#L100 [2] https://github.com/openstack/python-swiftclient/blob/master/swiftclient/service.py#L1820 [3] https://github.com/openstack/heat/blob/master/heat/engine/clients/os/swift.py#L53
regardless of this, the exceptions raised by the Python API are still pretty useless in explaining the reason of the failure.
That's because the shell is using the SwiftService object [1], that indeed does recursive delete by itself [2]. In Heat we use Connection object as client to perform all the operations [3], and this one is not supporting recursive deletes.
[1] https:/ /github. com/openstack/ python- swiftclient/ blob/master/ swiftclient/ shell.py# L100 /github. com/openstack/ python- swiftclient/ blob/master/ swiftclient/ service. py#L1820 /github. com/openstack/ heat/blob/ master/ heat/engine/ clients/ os/swift. py#L53
[2] https:/
[3] https:/
regardless of this, the exceptions raised by the Python API are still pretty useless in explaining the reason of the failure.