Skip to content

Instantly share code, notes, and snippets.

@keshavab
Last active May 15, 2016 20:18
Show Gist options
  • Select an option

  • Save keshavab/6e9286d95e52a1d4426d to your computer and use it in GitHub Desktop.

Select an option

Save keshavab/6e9286d95e52a1d4426d to your computer and use it in GitHub Desktop.
export OS_SERVICE_TOKEN=ADMIN
export OS_SERVICE_ENDPOINT=http://192.168.33.20:35357/v2.0
# get keystone auth token
# * Note: each time this is run, keystone generates a new token and this is the token that is considered valied for the user.
curl 'http://127.0.0.1:5000/v2.0/tokens' -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"auth": {"tenantName": "service", "passwordCredentials": {"username": "swift", "password": "SWIFT_PASS"}}}' | python -mjson.tool
# get endpoint for service type 'object-store'
serviceCatalog": [
{
"endpoints": [
{
"adminURL": "http://192.168.33.20:8080",
"id": "945f04e08a034f9d94827952ba346a7b",
"internalURL": "http://192.168.33.20:8080/v1/AUTH_2a5b67092df94b19a9e33d6dcd2a3ad7",
"publicURL": "http://192.168.33.20:8080/v1/AUTH_2a5b67092df94b19a9e33d6dcd2a3ad7",
"region": "regionOne"
}
],
"endpoints_links": [],
"name": "swift",
"type": "object-store"
},
# public url
http://192.168.33.20:8080/v1/AUTH_2a5b67092df94b19a9e33d6dcd2a3ad7
# get token
MIIGDAYJKoZIhvcNAQcCoIIF-TCCBfkCAQExCTAHBgUrDgMCGjCCBGIGCSqGSIb3DQEHAaCCBFMEggRPeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxNC0wNi0xN1QwNjowODozMy4xNDYyODkiLCAiZXhwaXJlcyI6ICIyMDE0LTA2LTIxVDEwOjA4OjMzWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogbnVsbCwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiMmE1YjY3MDkyZGY5NGIxOWE5ZTMzZDZkY2QyYTNhZDciLCAibmFtZSI6ICJzZXJ2aWNlIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4zMy4yMDo4MDgwIiwgInJlZ2lvbiI6ICJyZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzE5Mi4xNjguMzMuMjA6ODA4MC92MS9BVVRIXzJhNWI2NzA5MmRmOTRiMTlhOWUzM2Q2ZGNkMmEzYWQ3IiwgImlkIjogIjk0NWYwNGUwOGEwMzRmOWQ5NDgyNzk1MmJhMzQ2YTdiIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTkyLjE2OC4zMy4yMDo4MDgwL3YxL0FVVEhfMmE1YjY3MDkyZGY5NGIxOWE5ZTMzZDZkY2QyYTNhZDcifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAib2JqZWN0LXN0b3JlIiwgIm5hbWUiOiAic3dpZnQifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vbG9jYWxob3N0OjM1MzU3L3YyLjAiLCAicmVnaW9uIjogInJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vbG9jYWxob3N0OjUwMDAvdjIuMCIsICJpZCI6ICIxNzVmMDZkMWVhOWU0MjFiYjYwNjVlNDY3NGMwMWNiNiIsICJwdWJsaWNVUkwiOiAiaHR0cDovL2xvY2FsaG9zdDo1MDAwL3YyLjAifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiRVNYX09uYm9hcmRlciIsICJuYW1lIjogImVvbiJ9XSwgInVzZXIiOiB7InVzZXJuYW1lIjogInN3aWZ0IiwgInJvbGVzX2xpbmtzIjogW10sICJpZCI6ICIwMzM3ZGJlODU0NzQ0YTIzOTJlZGNmNzEzNTUxYzE3NiIsICJyb2xlcyI6IFt7Im5hbWUiOiAiYWRtaW4ifV0sICJuYW1lIjogInN3aWZ0In0sICJtZXRhZGF0YSI6IHsiaXNfYWRtaW4iOiAwLCAicm9sZXMiOiBbIjdiZDQ3OTk4MjBjZTQ1ZDk5YWRkMTNjM2JhMTg0MTkzIl19fX0xggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMBgNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEggEAaEOBwr7BFEYUal21m4Kn8Wsyc9cX2KkJa7T1nUvS6nAKY6j7iregI5150xOIaFviWR1Drts1yC37OoX3OTs4xiCRw0LSFUYtAObMuCMyIS3gotTXg57wZ-OqJlAIFA-qLkG6U0+6IEfzcq6PIHsnZAQtqEQD+x3R6qArPObrWGbNcsXTTdX0o-bkUtk3Fy8hlfzRDJYRoWVZrqy6VRq7j95LffBW1HSo5V4b0d3qs1lajy5Wfh-f0B7wzdlN+Ka4FyPJ-120PzsKRzQM2+ELn62w3D+5QB5xkIbM9VMMlzHh5Ir3+GiqBINPILg7-iqUYv2iX4tXtUoLWYmi0sXYOw==
public_url=http://192.168.33.20:8080/v1/AUTH_2a5b67092df94b19a9e33d6dcd2a3ad7
token=MIIGDAYJKoZIhvcNAQcCoIIF-TCCBfkCAQExCTAHBgUrDgMCGjCCBGIGCSqGSIb3DQEHAaCCBFMEggRPeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxNC0wNi0xN1QwNjowODozMy4xNDYyODkiLCAiZXhwaXJlcyI6ICIyMDE0LTA2LTIxVDEwOjA4OjMzWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogbnVsbCwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiMmE1YjY3MDkyZGY5NGIxOWE5ZTMzZDZkY2QyYTNhZDciLCAibmFtZSI6ICJzZXJ2aWNlIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4zMy4yMDo4MDgwIiwgInJlZ2lvbiI6ICJyZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzE5Mi4xNjguMzMuMjA6ODA4MC92MS9BVVRIXzJhNWI2NzA5MmRmOTRiMTlhOWUzM2Q2ZGNkMmEzYWQ3IiwgImlkIjogIjk0NWYwNGUwOGEwMzRmOWQ5NDgyNzk1MmJhMzQ2YTdiIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTkyLjE2OC4zMy4yMDo4MDgwL3YxL0FVVEhfMmE1YjY3MDkyZGY5NGIxOWE5ZTMzZDZkY2QyYTNhZDcifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAib2JqZWN0LXN0b3JlIiwgIm5hbWUiOiAic3dpZnQifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vbG9jYWxob3N0OjM1MzU3L3YyLjAiLCAicmVnaW9uIjogInJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vbG9jYWxob3N0OjUwMDAvdjIuMCIsICJpZCI6ICIxNzVmMDZkMWVhOWU0MjFiYjYwNjVlNDY3NGMwMWNiNiIsICJwdWJsaWNVUkwiOiAiaHR0cDovL2xvY2FsaG9zdDo1MDAwL3YyLjAifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiRVNYX09uYm9hcmRlciIsICJuYW1lIjogImVvbiJ9XSwgInVzZXIiOiB7InVzZXJuYW1lIjogInN3aWZ0IiwgInJvbGVzX2xpbmtzIjogW10sICJpZCI6ICIwMzM3ZGJlODU0NzQ0YTIzOTJlZGNmNzEzNTUxYzE3NiIsICJyb2xlcyI6IFt7Im5hbWUiOiAiYWRtaW4ifV0sICJuYW1lIjogInN3aWZ0In0sICJtZXRhZGF0YSI6IHsiaXNfYWRtaW4iOiAwLCAicm9sZXMiOiBbIjdiZDQ3OTk4MjBjZTQ1ZDk5YWRkMTNjM2JhMTg0MTkzIl19fX0xggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMBgNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEggEAaEOBwr7BFEYUal21m4Kn8Wsyc9cX2KkJa7T1nUvS6nAKY6j7iregI5150xOIaFviWR1Drts1yC37OoX3OTs4xiCRw0LSFUYtAObMuCMyIS3gotTXg57wZ-OqJlAIFA-qLkG6U0+6IEfzcq6PIHsnZAQtqEQD+x3R6qArPObrWGbNcsXTTdX0o-bkUtk3Fy8hlfzRDJYRoWVZrqy6VRq7j95LffBW1HSo5V4b0d3qs1lajy5Wfh-f0B7wzdlN+Ka4FyPJ-120PzsKRzQM2+ELn62w3D+5QB5xkIbM9VMMlzHh5Ir3+GiqBINPILg7-iqUYv2iX4tXtUoLWYmi0sXYOw==
# list accounts
curl -H 'X-Auth-Token: <token>' <public-url>
curl -H 'X-Auth-Token: <token>' http://192.168.33.20:8080/v1/AUTH_2a5b67092df94b19a9e33d6dcd2a3ad7
#output in json - <url>?format=json
curl -H 'X-Auth-Token: <token>' http://192.168.33.20:8080/v1/AUTH_2a5b67092df94b19a9e33d6dcd2a3ad7?format=json
# Create an container
curl -X PUT -H "X-Auth-Token: $token" $public_url/cont1
# GET account metadata
curl -X HEAD -H "X-Auth-Token: $token" $public_url
# create a container
curl -X PUT -H "X-Auth-Token: $token" $public_url/cont1
#create an object - contents in file
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: text/html; charset=UTF-8" $public_url/cont1/obj1 -T file
# GET an object
curl -X GET -H "X-Auth-Token: $token" -H $public_url/cont1/obj1
# DELETE an object
curl -X DELETE -H "X-Auth-Token: $token" $public_url/cont1/obj5
# POST(Modify) an object meta data
# Note - you need to specify all meta data again if you need to add new
# if just new one is specified, the earlier ones are overwritten
# to just append meta data, do COPY
curl -i -X POST -H "X-Auth-Token: $token" $public_url/cont1/obj4 -H "X-Object-Meta-name2: acd"
# COPY - copy an object from one container to another
# same as PUT using with the X-Copy-From request header
# this appends to existing metada if any meata tag is specified
curl -i -H "X-Auth-Token: $token" -X COPY $public_url/cont1/obj4 -H "Destination: cont2/obj3" -H "X-Object-Meta-Meta67: hello"
OR
curl -i -X PUT -H "X-Auth-Token: $token" $public_url/cont2/obj3 -H "X-Copy-From: /cont2/obj3" -H "Content-Length: 0"
# if you want to append meta data to existing object Use COPY
# COPY with source and destination being same
curl -i -X PUT -H "X-Auth-Token: $token" $public_url/cont2/obj3 -H "X-Copy-From: /cont2/obj3" -H "Content-Length: 0" -H "X-Object-Meta-AppendMeta: Metaadd"
# HEAD - get object meta data
curl -i -X HEAD -H "X-Auth-Token: $token" $public_url/cont2/obj3
# change acl for a container
# must be of admin/swiftoperator role in keystone
# Operator roles is the role which user would be allowed to manage a
# tenant and be able to create container or give ACL to others.
curl -X POST -H "X-Auth-Token: $token_operator" -H "X-Container-Read: tenant1:user2" $public_url/cont1
## get information about a cluster
curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/info
(swift-env)[keshava@kbook ~]$ curl -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/info | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1118 100 1118 0 0 159k 0 --:--:-- --:--:-- --:--:-- 181k
{
"account_quotas": {},
"bulk_delete": {
"max_deletes_per_request": 10000,
"max_failed_deletes": 1000
},
"bulk_upload": {
"max_containers_per_extraction": 10000,
"max_failed_extractions": 1000
},
"container_quotas": {},
"crossdomain": {},
"ratelimit": {
"account_ratelimit": 0.0,
"container_listing_ratelimits": [],
"container_ratelimits": [],
"max_sleep_time_seconds": 60.0
},
"slo": {
"max_manifest_segments": 1000,
"max_manifest_size": 2097152,
"min_segment_size": 1048576
},
"staticweb": {},
"swift": {
"account_autocreate": true,
"account_listing_limit": 10000,
"allow_account_management": true,
"container_listing_limit": 10000,
"max_account_name_length": 256,
"max_container_name_length": 256,
"max_file_size": 5368709122,
"max_header_size": 8192,
"max_meta_count": 90,
"max_meta_name_length": 128,
"max_meta_overall_size": 4096,
"max_meta_value_length": 256,
"max_object_name_length": 1024,
"policies": [
{
"default": true,
"name": "gold"
},
{
"name": "silver"
}
],
"strict_cors_mode": true,
"version": "2.1.0.71.g8482195"
},
"tempauth": {
"account_acls": true
},
"tempurl": {
"methods": [
"GET",
"HEAD",
"PUT",
"POST",
"DELETE"
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment