]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
boto_tool: add getacl, setacl
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 5 May 2011 00:51:40 +0000 (17:51 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 5 May 2011 17:19:16 +0000 (10:19 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/obsync/boto_tool.py

index 13a2e1a1cdfb66a8f53a47023feb48adbcab81c4..e60a040fea31079f7bf963d3c40be7e0a177d79b 100755 (executable)
@@ -104,6 +104,31 @@ def put_obj(bucket_name, args):
     else:
         k.set_contents_from_filename(opts.filename)
 
+def put_obj_acl(bucket_name, args):
+    parser = OptionParser()
+    parser.add_option("-f", "--filename", dest="filename",
+                        help="file name (default stdin)")
+    (opts, args) = parser.parse_args(args)
+    if (len(args) < 1):
+        print "put_acl requires an argument: the object name"
+        return 255
+    obj_name = args[0]
+    print "uploading object ACL to bucket: '%s', object name: '%s'" \
+        % (bucket_name, obj_name)
+    bucket = conn.get_bucket(bucket_name)
+    k = Key(bucket)
+    k.key = obj_name
+    if (opts.filename == None):
+        print "sorry, no support for put-from-stdin yet. use -f"
+        return 255
+    else:
+        f = open(opts.filename, "r")
+        try:
+            xml = f.read()
+        finally:
+            f.close()
+        k.set_xml_acl(xml)
+
 def get_obj(bucket_name, args):
     parser = OptionParser()
     parser.add_option("-f", "--filename", dest="filename",
@@ -122,6 +147,30 @@ def get_obj(bucket_name, args):
     else:
         k.get_contents_to_filename(opts.filename)
 
+def get_obj_acl(bucket_name, args):
+    parser = OptionParser()
+    parser.add_option("-f", "--filename", dest="filename",
+                        help="file name (default stdin)")
+    (opts, args) = parser.parse_args(args)
+    if (len(args) < 1):
+        print "get_acl requires an argument: the object name to get the acl for"
+        return 255
+    obj_name = args[0]
+    print "downloading object acl from bucket: '%s', object name: '%s'" % \
+        (bucket_name, obj_name)
+    bucket = conn.get_bucket(bucket_name)
+    k = Key(bucket)
+    k.key = obj_name
+    xml = k.get_xml_acl()
+    if (opts.filename == None):
+        print xml
+    else:
+        f = open(opts.filename, "w")
+        try:
+            f.write(xml)
+        finally:
+            f.close()
+
 def list_obj(bucket_name, args):
     if (len(args) < 1):
         prefix = None
@@ -220,8 +269,12 @@ else:
         sys.exit(255)
     if (sys.argv[3] == "put"):
         sys.exit(put_obj(bucket_name, sys.argv[4:]))
+    if (sys.argv[3] == "putacl"):
+        sys.exit(put_obj_acl(bucket_name, sys.argv[4:]))
     elif (sys.argv[3] == "get"):
         sys.exit(get_obj(bucket_name, sys.argv[4:]))
+    elif (sys.argv[3] == "getacl"):
+        sys.exit(get_obj_acl(bucket_name, sys.argv[4:]))
     elif (sys.argv[3] == "ls"):
         sys.exit(list_obj(bucket_name, sys.argv[4:]))
     elif (sys.argv[3] == "rm"):