Using RadosGW admin ops for the first time, can be a real headache , for this purpose i have made this post, where you will understand how to use this API.
Let’s start:
For issue a request through admin ops, you need to have a signature, this signature is make it signing a header.
The header must to be composed by the current date, the request type(GET/PUT/POST/DELETE) and the request itself.
This header must be signed by SSL including the admin ops secret on this signature.
Now , you can make a request.
Sometimes, the time is not the same as the radosgw node expect, you can hack on it changing the date=$(date) value with:
If your host has two hours more than the radosgw node, substract this two hours under $(( 10#$i-2)) variable, where 2 is the two hours to substract.
date=$(for i in $(date "+%H") ; do date "+%a, %d %b %Y $(( 10#$i-2 )):%M:%S +0000" ; done)
Examples:
Create a user named egonzalez:
#!/bin/bash token=U2JCD4ZG4D1XJOI5XNF4 ## USER_TOKEN secret=+IFgr7POzLWS0i3hQnC+dd3DOAZObHoY5NYm6m3b ## USER_SECRET query=$1 name=$2 query3="&uid=" query2=admin/user query4=""a-type=user" date=$(date) header="PUT\n\n\n${date}\n/${query2}" sig=$(echo -en ${header} | openssl sha1 -hmac ${secret} -binary | base64) curl -v -H "Date: ${date}" -H "Authorization: AWS ${token}:${sig}" -L -X PUT "http://10.0.2.10/${query2}?format=json${query3}${query}&display-name=${name}" -H "Host: 10.0.2.10" ##Change IPs with your own IPs
Output:
[ceph@adminnode scripts]$ sh createUser.sh egonzalez EgonzalezDescription {"user_id":"egonzalez","display_name":"EgonzalezDescription","email":"","suspended":0,"max_buckets":1000,"subusers":[],"keys":[{"user":"egonzalez","access_key":"24FUKCWD6BL9T08DQ2JA","secret_key":"mEQdhcrsqOy7q6Snvu8B5d5A2Ek9OezJH+khwYvX"}],"swift_keys":[],"caps":[]}
See egonzalez quotas
#!/bin/bash token=U2JCD4ZG4D1XJOI5XNF4 ## USER_TOKEN secret=+IFgr7POzLWS0i3hQnC+dd3DOAZObHoY5NYm6m3b ## USER_SECRET query=$1 query3="&uid=" query2=admin/user query4=""a-type=user" date=$(date) header="GET\n\n\n${date}\n/${query2}" sig=$(echo -en ${header} | openssl sha1 -hmac ${secret} -binary | base64) curl -v -H "Date: ${date}" -H "Authorization: AWS ${token}:${sig}" -L -X GET "http://10.0.2.10/${query2}?quota${query3}${query}"a-type=user" -H "Host: 10.0.2.10" ##Change IPs with your own IPs
Output:
[ceph@adminnode scripts]$ sh getuserquota.sh egonzalez {"enabled": true,"max_size_kb":1000,"max_objects":1000}Status: 200 OK
See egonzalez user information.
#!/bin/bash token=U2JCD4ZG4D1XJOI5XNF4 ## USER_TOKEN secret=+IFgr7POzLWS0i3hQnC+dd3DOAZObHoY5NYm6m3b ## USER_SECRET query=$1 query3="&uid=" query2=admin/user date=$(date) header="GET\n\n\n${date}\n/${query2}" sig=$(echo -en ${header} | openssl sha1 -hmac ${secret} -binary | base64) curl -v -H "Date: ${date}" -H "Authorization: AWS ${token}:${sig}" -L -X GET "http://10.0.2.10/${query2}?format=json${query3}${query}" -H "Host: 10.0.2.10" ##Change IPs with your own IPs
Output:
[ceph@adminnode scripts]$ sh userInfo.sh egonzalez {"user_id":"egonzalez","display_name":"EgonzalezDescription","email":"","suspended":0,"max_buckets":1000,"subusers":[],"keys":[{"user":"egonzalez","access_key":"24FUKCWD6BL9T08DQ2JA","secret_key":"mEQdhcrsqOy7q6Snvu8B5d5A2Ek9OezJH+khwYvX"}],"swift_keys":[],"caps":[]}
When you really understand how admin ops works, is not as dificult to use it, just search at the official documentation and modify the desired values.
I hope this helps:
Regards, Eduardo.