diff options
author | Casey Bodley <cbodley@users.noreply.github.com> | 2020-02-28 15:31:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-28 15:31:14 +0100 |
commit | 3064f2022029fb2a63802316d8c97dfdae3b2337 (patch) | |
tree | fe7ba4694e8b394c0bcdc4198a72aef1ee2ca3af /examples | |
parent | Merge pull request #33527 from alimaredia/wip-rgw-realm-pull-log-msg (diff) | |
parent | examples: add python source for append & get_usage_stats (diff) | |
download | ceph-3064f2022029fb2a63802316d8c97dfdae3b2337.tar.xz ceph-3064f2022029fb2a63802316d8c97dfdae3b2337.zip |
Merge pull request #33063 from theanalyst/boto3-ext-append
examples: rgw: add boto3 append & get usage api extensions
Reviewed-by: Yuval Lifshitz <yuvalif@yahoo.com>
Diffstat (limited to 'examples')
-rwxr-xr-x | examples/boto3/append_object.py | 42 | ||||
-rwxr-xr-x | examples/boto3/get_usage_stats.py | 17 | ||||
-rw-r--r-- | examples/boto3/service-2.sdk-extras.json | 62 |
3 files changed, 120 insertions, 1 deletions
diff --git a/examples/boto3/append_object.py b/examples/boto3/append_object.py new file mode 100755 index 00000000000..0e13252ec3f --- /dev/null +++ b/examples/boto3/append_object.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +from __future__ import print_function + +import boto3 +import sys +import json + +def js_print(arg): + print(json.dumps(arg, indent=2)) + +if len(sys.argv) != 3: + print('Usage: ' + sys.argv[0] + ' <bucket> <key>') + sys.exit(1) + +# bucket name as first argument +bucketname = sys.argv[1] +keyname = sys.argv[2] +# endpoint and keys from vstart +endpoint = 'http://127.0.0.1:8000' +access_key='0555b35654ad1656d804' +secret_key='h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q==' + +client = boto3.client('s3', + endpoint_url=endpoint, + aws_access_key_id=access_key, + aws_secret_access_key=secret_key) + +print('deleting object first') +js_print(client.delete_object(Bucket=bucketname, Key=keyname)) +print('appending at position 0') +resp = client.put_object(Bucket=bucketname, Key=keyname, + Append=True, + AppendPosition=0, + Body='8letters') + +js_print(resp) +append_pos = resp['AppendPosition'] +print('appending at position %d' % append_pos) +js_print(client.put_object(Bucket=bucketname, Key=keyname, + Append=True, + AppendPosition=append_pos, + Body='8letters')) diff --git a/examples/boto3/get_usage_stats.py b/examples/boto3/get_usage_stats.py new file mode 100755 index 00000000000..0b7880d4f66 --- /dev/null +++ b/examples/boto3/get_usage_stats.py @@ -0,0 +1,17 @@ +#!/usr/bin/python +from __future__ import print_function + +import boto3 +import json + +# endpoint and keys from vstart +endpoint = 'http://127.0.0.1:8000' +access_key='0555b35654ad1656d804' +secret_key='h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q==' + +client = boto3.client('s3', + endpoint_url=endpoint, + aws_access_key_id=access_key, + aws_secret_access_key=secret_key) + +print(json.dumps(client.get_usage_stats(), indent=2)) diff --git a/examples/boto3/service-2.sdk-extras.json b/examples/boto3/service-2.sdk-extras.json index f69912c0bbe..65883226366 100644 --- a/examples/boto3/service-2.sdk-extras.json +++ b/examples/boto3/service-2.sdk-extras.json @@ -12,6 +12,17 @@ "input":{"shape":"DeleteBucketNotificationConfigurationRequest"}, "documentationUrl":"https://docs.ceph.com/docs/master/radosgw/s3/bucketops/#delete-notification", "documentation":"<p>Deletes the notification configuration from the bucket.</p>" + }, + "GetUsageStats":{ + "name":"GetUsageStats", + "http":{ + "method":"GET", + "requestUri":"/?usage", + "responseCode":200 + }, + "output": {"shape": "GetUsageStatsOutput"}, + "documentationUrl":"https://docs.ceph.com/docs/master/radosgw/s3/serviceops#get-usage-stats", + "documentation":"<p>Get usage stats for the user</p>" } }, "shapes": { @@ -26,6 +37,35 @@ } }, "AllowUnordered":{"type":"boolean"}, + "PutObjectRequest": { + "members": { + "AppendPosition": { + "shape":"AppendPosition", + "documentation": "<p>Position to allow appending</p>", + "location": "querystring", + "locationName": "position" + }, + "Append": { + "shape":"Append", + "documentation":"<p>Append Object</p>", + "location": "querystring", + "locationName": "append" + } + } + }, + "Append": {"type":"boolean"}, + "AppendPosition":{"type":"integer"}, + "PutObjectOutput": { + "members": { + "AppendPosition": { + "shape":"AppendPosition", + "documentation": "<p>Position to allow appending</p>", + "location": "header", + "locationName": "x-rgw-next-append-position", + "documentationUrl":"https://docs.ceph.com/docs/master/radosgw/s3/objectops/#append-object" + } + } + }, "GetBucketNotificationConfigurationRequest":{ "type":"structure", "required":["Bucket"], @@ -138,7 +178,27 @@ } }, "documentation":"<p>A container for object tags filtering rules.</p>" - } + }, + "GetUsageStatsOutput": { + "type": "structure", + "members": { + "Summary": { + "shape":"UsageStatsSummary", + "documentation": "<p/>" + } + } + }, + "UsageStatsSummary": { + "type": "structure", + "members": { + "TotalBytes":{"shape":"TotalBytes"}, + "TotalBytesRounded":{"shape":"TotalBytesRounded"}, + "TotalEntries":{"shape":"TotalEntries"} + } + }, + "TotalBytesRounded":{"type":"integer"}, + "TotalBytes":{"type":"integer"}, + "TotalEntries":{"type":"integer"} }, "documentation":"<p/>" } |