We can now get an s3 user from the rgw admin ops API with its access
key. No validation on the key is performed other than not being empty.
Closes: https://github.com/ceph/go-ceph/issues/600
Signed-off-by: Sébastien Han <seb@redhat.com>
Added two apis AddUserCap() and RemoveUserCap() to add/remove the
capabilities from RGW user.
Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
The caps is option in RGW for providing special permissions for
the ceph user, include it on the User{} so that it can be send in
the request for CreateUser().
Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
The stat information gives idea about current storage consumption.
Include that info to the user struct
Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
Instead of implementing our own logging let's the consumer implement
their own potential debug for each HTTP requests.
Closes: https://github.com/ceph/go-ceph/issues/508
Signed-off-by: Sébastien Han <seb@redhat.com>
We don't need to export the mock, the consumer will generate its own.
What really matters is to have an interface that consumer can mock it
desired. Reference: https://github.com/golang/go/wiki/CodeReviewComments#interfaces
Signed-off-by: Sébastien Han <seb@redhat.com>
Now that we use http.Method* constant from the http package, we don't
need to have verbHTTP type anymore.
Signed-off-by: Sébastien Han <seb@redhat.com>
We now have a new interface `HTTPClient` which helps us doing various
operations such as mutating and mocking the HTTP Client.
Signed-off-by: Sébastien Han <seb@redhat.com>
Since we are not passing a pointer, let's not return a pointer either.
Also, our use case fits well the non-returning pointer approach since
the content of the struct type is not expected to be modified.
Signed-off-by: Sébastien Han <seb@redhat.com>
This commit introduces support for user and bucket quota on the rgw
admin ops API.
Co-authored-by: Irek Fasikhov malmyzh@gmail.com
Co-authored-by: Quentin Perez qperez42@gmail.com
Signed-off-by: Sébastien Han <seb@redhat.com>
It indicates a mal-formed query for the API where some parameters are
incorrect. This is unlikely to happen with good integration test but we
never know.
Signed-off-by: Sébastien Han <seb@redhat.com>
Following this discussion #492
This commit introduces a new package "rgw/admin" which helps you interact
with the [RadosGW Admin Ops API](https://docs.ceph.com/en/latest/radosgw/adminops).
Not all the API capabilities are covered by this commit, but this is a
solid foundation for adding code on top. I'm expecting a few more
iterations to make 100% complete. Also, the RadosGW Admin API is going
to implement new functions soon (like bucket creation). So this library
will live on and keep catching up.
As many unit tests as possible have been added. A new integration test
suite also runs. The "micro-osd.sh" now deploys a RGW and the
integration suite tests on it. Thus the CI should cover it.
Shout out to @QuentinPerez and @IrekFasikhov for their existing
libraries. They were a very good inspiration to get started.
Co-authored-by: Irek Fasikhov <malmyzh@gmail.com>
Co-authored-by: Quentin Perez <qperez42@gmail.com>
Signed-off-by: Sébastien Han <seb@redhat.com>