go-ceph/rgw/admin
Sébastien Han 6be8d370cb rgwadmin: add support for RadosGW Admin Ops API
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>
2021-05-31 17:45:31 +02:00
..
README.md rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
bucket.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
bucket_test.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
doc.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
errors.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
errors_test.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
radosgw.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
radosgw_test.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
usage.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
usage_test.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
user.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
user_test.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
utils.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00
utils_test.go rgwadmin: add support for RadosGW Admin Ops API 2021-05-31 17:45:31 +02:00

README.md

Prerequisites

You must create an admin user like so:

radosgw-admin user create --uid admin --display-name "Admin User" --caps "buckets=*;users=*;usage=read;metadata=read;zone=read --access-key=2262XNX11FZRR44XWIRD --secret-key=rmtuS1Uj1bIC08QFYGW18GfSHAbkPqdsuYynNudw

Then use the access_key and secret_key for authentication.

Snippet usage example:

package main

import (
    "github.com/ceph/go-ceph/rgw/admin"
)

func main() {
    // Generate a connection object
    co, err := admin.New("http://192.168.1.1", "2262XNX11FZRR44XWIRD", "rmtuS1Uj1bIC08QFYGW18GfSHAbkPqdsuYynNudw", nil)
    if err != nil {
        panic(err)
    }

    // To enable debug requests
    // co.Debug = true

    // Get the "admin" user
    user, err := co.GetUser(context.Background(), "admin")
    if err != nil {
        panic(err)
    }

    // Print the user display name
    fmt.Println(user.DisplayName)
}