Hey Artem,
thanks a bunch for giving into this so quickly ...
On 04/08/2023 09:59, Artem Goncharov wrote:
Solution:
- either you remove /swift from your path when deploying swift
That's not possible, unfortunately, if you also want to support S3. See https://docs.ceph.com/en/latest/radosgw/config-ref/#confval-rgw_swift_url_pr...
One option might be to use dedicated instances of RGW just for Swift and others for S3. But this requires to also use different endpoints / hostnames. But even if only Swift was used, with "/swift" being the default prefix on Ceph RGWs, I am highly confident that this prefixed path therefore exists for quite a few clouds using Ceph to provide the object storage via the Swift protocol.
- or we need to change the mentioned calculation logic by explicitly
stripping last 2 elements of the path of the service catalog entry (what seems logical on one side is not guaranteed to be a proper solution either - I have seen wild examples)
Well statically stripping a certain number of elements does indeed not seem "proper.
If you look at https://docs.ceph.com/en/latest/radosgw/keystone/#ocata-and-later vs https://docs.ceph.com/en/latest/radosgw/keystone/#cross-project-tenant-acces... the existence of "AUTH_$(project_id)s" cannot always be expected. But maybe a rule / regex can be found to strip optional version and AUTH element?
Kinda like ...
'(.*?)(/v[0-9](/AUTH_.+)?)?$'
to get all the path elements until the (optional) "v"ersion and an (optional) "AUTH_" at the end.
Honestly I don't know how the swift endpoint URLs looks like when deploying OpenStack Swift instead of Ceph RGW. But I suppose the endpoint has some potential variance in path there as well?
Regards
Christian