I've tried to debug this a bit.
<EndPoint> <EndpointAddress>amqp://rabbitmquser:rabbitmqpass@rabbitmq.example.com:5672</EndpointAddress> <EndpointArgs>Attributes.entry.1.key=amqp-exchange&Attributes.entry.1.value=amqp.direct&push-endpoint=amqp://rabbitmquser:rabbitmqpass@rabbitmq.example.com:5672</EndpointArgs> <EndpointTopic>testtopic</EndpointTopic> </EndPoint>
For the above I was using the following request to create the topic - similar as it is described here [1]: https://ceph.example.com/?Action=CreateTopic&Name=testtopic&Attributes.entry.1.key=amqp-exchange&Attributes.entry.1.value=amqp.direct&push-endpoint=amqp://rabbitmquser:rabbitmqpass@rabbitmq.example.com:5672 (of course endpoint then URL-encoded) It seems to me that RGWHTTPArgs::parse() is not translating the "Attributes.entry.1..." strings into keys & values in its map. This are the keys & values that can now be found in the map: Found name: Attributes.entry.1.key Found value: amqp-exchange Found name: Attributes.entry.1.value Found value: amqp.direct Found name: push-endpoint Found value: amqp://rabbitmquser:rabbitmqpass@rabbitmq.example.com:5672 If I simply change the request to: https://ceph.example.com/?Action=CreateTopic&Name=testtopic&amqp-exchange=amqp.direct&push-endpoint=amqp://rabbitmquser:rabbitmqpass@rabbitmq.example.com:5672/foobar -> at voila, the entries in the map are correct Found name: amqp-exchange Found value: amqp.direct Found name: push-endpoint Found value: amqp://rabbitmquser:rabbitmqpass@rabbitmq.example.com:5672 And then the bucket-notification works like it should. But I don't think the documentation is wrong, or is it? Cheers, Andreas [1] https://docs.ceph.com/docs/master/radosgw/notifications/#create-a-topic [2] Index: ceph-15.2.1/src/rgw/rgw_common.cc =================================================================== --- ceph-15.2.1.orig/src/rgw/rgw_common.cc +++ ceph-15.2.1/src/rgw/rgw_common.cc @@ -810,6 +810,8 @@ int RGWHTTPArgs::parse() string& name = nv.get_name(); string& val = nv.get_val(); + cout << "Found name: " << name << std::endl; + cout << "Found value: " << val << std::endl; append(name, val); }