mirror of
https://github.com/ceph/ceph
synced 2025-01-02 00:52:22 +00:00
cd6ce38a0f
added examples on how to fetch attributes of a specific topic add explanation on SNS signature version Fixes: https://tracker.ceph.com/issues/46243 Signed-off-by: dorindabassey <dorindabassey@gmail.com> Co-authored-by: Yuval Lifshitz <ylifshit@redhat.com>
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import sys
|
|
import urllib
|
|
import hmac
|
|
import hashlib
|
|
import base64
|
|
import xmltodict
|
|
import http.client
|
|
from urllib import parse as urlparse
|
|
from time import gmtime, strftime
|
|
|
|
if len(sys.argv) == 2:
|
|
# topic arn as first argument
|
|
topic_arn = sys.argv[1]
|
|
else:
|
|
print ('Usage: ' + sys.argv[0] + ' <topic arn> [region name]')
|
|
sys.exit(1)
|
|
|
|
# endpoint and keys from vstart
|
|
endpoint = '127.0.0.1:8000'
|
|
access_key='0555b35654ad1656d804'
|
|
secret_key='h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q=='
|
|
|
|
|
|
parameters = {'Action': 'GetTopic', 'TopicArn': topic_arn}
|
|
body = urlparse.urlencode(parameters)
|
|
string_date = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
|
|
content_type = 'application/x-www-form-urlencoded; charset=utf-8'
|
|
resource = '/'
|
|
method = 'POST'
|
|
string_to_sign = method + '\n\n' + content_type + '\n' + string_date + '\n' + resource
|
|
signature = base64.b64encode(hmac.new(secret_key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha1).digest()).decode('ascii')
|
|
headers = {'Authorization': 'AWS '+access_key+':'+signature,
|
|
'Date': string_date,
|
|
'Host': endpoint,
|
|
'Content-Type': content_type}
|
|
http_conn = http.client.HTTPConnection(endpoint)
|
|
http_conn.request(method, resource, body, headers)
|
|
response = http_conn.getresponse()
|
|
data = response.read()
|
|
status = response.status
|
|
http_conn.close()
|
|
dict_response = xmltodict.parse(data)
|
|
|
|
# getting attributes of a specific topic is an extension to AWS sns
|
|
|
|
print(dict_response, status)
|