summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorCasey Bodley <cbodley@users.noreply.github.com>2020-02-28 15:31:14 +0100
committerGitHub <noreply@github.com>2020-02-28 15:31:14 +0100
commit3064f2022029fb2a63802316d8c97dfdae3b2337 (patch)
treefe7ba4694e8b394c0bcdc4198a72aef1ee2ca3af /examples
parentMerge pull request #33527 from alimaredia/wip-rgw-realm-pull-log-msg (diff)
parentexamples: add python source for append & get_usage_stats (diff)
downloadceph-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-xexamples/boto3/append_object.py42
-rwxr-xr-xexamples/boto3/get_usage_stats.py17
-rw-r--r--examples/boto3/service-2.sdk-extras.json62
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/>"
}