From 00045e2cd2b5b97439f43f448e07cf2626c20921 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 11 Mar 2015 11:20:55 -0700 Subject: [PATCH] radosgw-agent: check if src supports versioning Signed-off-by: Yehuda Sadeh --- radosgw_agent/cli.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/radosgw_agent/cli.py b/radosgw_agent/cli.py index 176a971..5d6bd9f 100644 --- a/radosgw_agent/cli.py +++ b/radosgw_agent/cli.py @@ -6,6 +6,11 @@ import logging.handlers import os.path import yaml import sys +import time +import base64 +import hmac +import sha +import urllib2 from radosgw_agent import client from radosgw_agent import util @@ -187,6 +192,33 @@ def parse_args(): ) return parser.parse_args(remaining) +def check_versioning(endpoint): + verb = "GET" + content_md5 = "" + content_type = "" + date = time.asctime(time.gmtime()) + canonical_amz_headers = "" + canonical_resource = "/?versions" + + string_to_sign = verb + "\n" + content_md5 + "\n" + content_type + "\n" + \ + date + "\n" + canonical_amz_headers + canonical_resource + sig = base64.b64encode(hmac.new(endpoint.secret_key, string_to_sign, sha).digest()) + + + url = str(endpoint) + '/?versions' + headers = { 'Authorization' : 'AWS ' + endpoint.access_key + ':' + sig, + 'Date' : date } + + data = None + req = urllib2.Request(url, data, headers) + try: + response = urllib2.urlopen(req) + the_page = response.read() + log.info('{e} supports versioning'.format(e=endpoint)) + return True + except: + log.info('{e} does not support versioning'.format(e=endpoint)) + class TestHandler(BaseHTTPRequestHandler): """HTTP handler for testing radosgw-agent. @@ -305,6 +337,8 @@ def main(): src.access_key = args.src_access_key src.secret_key = args.src_secret_key + src_supports_vesioning = check_versioning(src) + if args.test_server_host: log.warn('TEST MODE - do not run unless you are testing this program') TestHandler.src = src -- 2.47.3