Created
September 6, 2017 16:58
-
-
Save chianingwang/5596cae6b21c6d57ce96e0a0d295e49d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# demo outline - bbb_sunflower_1080_2min.mp4 | |
# 1. DLO upload to container demo to get Segments | |
# 2. Server Side Copy Segments | |
# 3. upload SLO json for copied Segments | |
# leverage DLO to get | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx upload demo -S 10485760 bbb_sunflower_1080_2min.mp4 | |
bbb_sunflower_1080_2min.mp4 segment 0 | |
bbb_sunflower_1080_2min.mp4 segment 2 | |
bbb_sunflower_1080_2min.mp4 segment 1 | |
bbb_sunflower_1080_2min.mp4 | |
# double check DLO content | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v demo bbb_sunflower_1080_2min.mp4 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/demo/bbb_sunflower_1080_2min.mp4 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: demo | |
Object: bbb_sunflower_1080_2min.mp4 | |
Content Type: video/mp4 | |
Content Length: 27883167 | |
Last Modified: Wed, 06 Sep 2017 16:09:29 GMT | |
ETag: "215729ecb16ddc52e240f10d04b7751d" | |
Manifest: demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/ | |
Meta Mtime: 1501534505.000000 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714168.96232 | |
X-Trans-Id: tx7ddee95ece084955b1fb6-0059b01deb | |
X-Openstack-Request-Id: tx7ddee95ece084955b1fb6-0059b01deb | |
# double check DLO Segments Content | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx list demo_segments | |
bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000000 | |
bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000001 | |
bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000002 | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v demo_segments bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000000 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000000 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: demo_segments | |
Object: bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000000 | |
Content Type: application/swiftclient-segment | |
Content Length: 10485760 | |
Last Modified: Wed, 06 Sep 2017 16:09:24 GMT | |
ETag: 07b81cd438af5097d584321ab99cdc06 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714163.48142 | |
X-Trans-Id: txa3623343e7cc45e48c2d2-0059b02598 | |
X-Openstack-Request-Id: txa3623343e7cc45e48c2d2-0059b02598 | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v demo_segments bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000001 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000001 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: demo_segments | |
Object: bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000001 | |
Content Type: application/swiftclient-segment | |
Content Length: 10485760 | |
Last Modified: Wed, 06 Sep 2017 16:09:26 GMT | |
ETag: ff53521cfdfe801ab1e52d0e7fda4969 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714165.96129 | |
X-Trans-Id: tx111d5b9e3a4a4c9786c7c-0059b01fb6 | |
X-Openstack-Request-Id: tx111d5b9e3a4a4c9786c7c-0059b01fb6 | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v demo_segments bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000002 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000002 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: demo_segments | |
Object: bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000002 | |
Content Type: application/swiftclient-segment | |
Content Length: 6911647 | |
Last Modified: Wed, 06 Sep 2017 16:09:24 GMT | |
ETag: e924eaf1e2171ff355c588fa84da5778 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714163.59075 | |
X-Trans-Id: tx576b1d9dec31404b8d606-0059b01fb8 | |
X-Openstack-Request-Id: tx576b1d9dec31404b8d606-0059b01fb8 | |
# create container copy for SLO, container copy_segments for SLO segements | |
swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx post copy | |
swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx post copy_segments | |
# server side copy from demo_segments to copy_segment and rename segment objects | |
$ curl -i -X PUT https://cloud.swiftstack.com/v1/AUTH_elk/copy_segments/bbb_sunflower_1080_2min.mp4.segement0 -H 'X-Auth-Token:AUTH_tkcc600af9a0b142729afb0e3232a1986f' -H 'X-Copy-From:/demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000000' -H 'Content-Length: 0' | |
HTTP/1.1 201 Created | |
Last-Modified: Wed, 06 Sep 2017 16:22:03 GMT | |
Content-Length: 0 | |
Etag: 07b81cd438af5097d584321ab99cdc06 | |
Content-Type: text/html; charset=UTF-8 | |
X-Copied-From-Account: AUTH_elk | |
X-Copied-From-Last-Modified: Wed, 06 Sep 2017 16:09:24 GMT | |
X-Copied-From: demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000000 | |
X-Trans-Id: tx831e50a3d9ef495991100-0059b020aa | |
X-Openstack-Request-Id: tx831e50a3d9ef495991100-0059b020aa | |
Date: Wed, 06 Sep 2017 16:22:04 GMT | |
$ curl -i -X PUT https://cloud.swiftstack.com/v1/AUTH_elk/copy_segments/bbb_sunflower_1080_2min.mp4.segement1 -H 'X-Auth-Token:AUTH_tkcc600af9a0b142729afb0e3232a1986f' -H 'X-Copy-From:/demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000001' -H 'Content-Length: 0' | |
HTTP/1.1 201 Created | |
Last-Modified: Wed, 06 Sep 2017 16:22:36 GMT | |
Content-Length: 0 | |
Etag: ff53521cfdfe801ab1e52d0e7fda4969 | |
Content-Type: text/html; charset=UTF-8 | |
X-Copied-From-Account: AUTH_elk | |
X-Copied-From-Last-Modified: Wed, 06 Sep 2017 16:09:26 GMT | |
X-Copied-From: demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000001 | |
X-Trans-Id: tx5e2f287695444f2d97c7d-0059b020cb | |
X-Openstack-Request-Id: tx5e2f287695444f2d97c7d-0059b020cb | |
Date: Wed, 06 Sep 2017 16:22:37 GMT | |
$ curl -i -X PUT https://cloud.swiftstack.com/v1/AUTH_elk/copy_segments/bbb_sunflower_1080_2min.mp4.segement2 -H 'X-Auth-Token:AUTH_tkcc600af9a0b142729afb0e3232a1986f' -H 'X-Copy-From:/demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000002' -H 'Content-Length: 0' | |
HTTP/1.1 201 Created | |
Last-Modified: Wed, 06 Sep 2017 16:23:01 GMT | |
Content-Length: 0 | |
Etag: e924eaf1e2171ff355c588fa84da5778 | |
Content-Type: text/html; charset=UTF-8 | |
X-Copied-From-Account: AUTH_elk | |
X-Copied-From-Last-Modified: Wed, 06 Sep 2017 16:09:24 GMT | |
X-Copied-From: demo_segments/bbb_sunflower_1080_2min.mp4/1501534505.000000/27883167/10485760/00000002 | |
X-Trans-Id: tx92c4c019ee9a4506ba823-0059b020e3 | |
X-Openstack-Request-Id: tx92c4c019ee9a4506ba823-0059b020e3 | |
Date: Wed, 06 Sep 2017 16:23:00 GMT | |
# double check SLO segmetns | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v copy_segments bbb_sunflower_1080_2min.mp4.segement0 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/copy_segments/bbb_sunflower_1080_2min.mp4.segement0 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: copy_segments | |
Object: bbb_sunflower_1080_2min.mp4.segement0 | |
Content Type: application/swiftclient-segment | |
Content Length: 10485760 | |
Last Modified: Wed, 06 Sep 2017 16:22:03 GMT | |
ETag: 07b81cd438af5097d584321ab99cdc06 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714922.81131 | |
X-Trans-Id: tx5a69c1729ea14fd88a98f-0059b022aa | |
X-Openstack-Request-Id: tx5a69c1729ea14fd88a98f-0059b022aa | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v copy_segments bbb_sunflower_1080_2min.mp4.segement1 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/copy_segments/bbb_sunflower_1080_2min.mp4.segement1 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: copy_segments | |
Object: bbb_sunflower_1080_2min.mp4.segement1 | |
Content Type: application/swiftclient-segment | |
Content Length: 10485760 | |
Last Modified: Wed, 06 Sep 2017 16:22:36 GMT | |
ETag: ff53521cfdfe801ab1e52d0e7fda4969 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714955.96129 | |
X-Trans-Id: tx9859b71af4f5454580529-0059b022b1 | |
X-Openstack-Request-Id: tx9859b71af4f5454580529-0059b022b1 | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v copy_segments bbb_sunflower_1080_2min.mp4.segement2 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/copy_segments/bbb_sunflower_1080_2min.mp4.segement2 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: copy_segments | |
Object: bbb_sunflower_1080_2min.mp4.segement2 | |
Content Type: application/swiftclient-segment | |
Content Length: 6911647 | |
Last Modified: Wed, 06 Sep 2017 16:23:01 GMT | |
ETag: e924eaf1e2171ff355c588fa84da5778 | |
Accept-Ranges: bytes | |
X-Timestamp: 1504714980.09511 | |
X-Trans-Id: tx6fd3087fd78b42738165f-0059b022b3 | |
X-Openstack-Request-Id: tx6fd3087fd78b42738165f-0059b022b3 | |
# prepare SLO manifest json | |
$ cat slo.json | |
[ | |
{ | |
"path": "/copy_segments/bbb_sunflower_1080_2min.mp4.segement0", | |
"etag": "07b81cd438af5097d584321ab99cdc06", | |
"size_bytes": 10485760 | |
}, | |
{ | |
"path": "/copy_segments/bbb_sunflower_1080_2min.mp4.segement1", | |
"etag": "ff53521cfdfe801ab1e52d0e7fda4969", | |
"size_bytes": 10485760 | |
}, | |
{ | |
"path": "/copy_segments/bbb_sunflower_1080_2min.mp4.segement2", | |
"etag": "e924eaf1e2171ff355c588fa84da5778", | |
"size_bytes": 6911647 | |
} | |
] | |
# upload SLO manifest | |
$ curl -v -X PUT -H "Content-Type: video/mp4" -H 'X-Auth-Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f' -H -H 'Cache-Control: no-cache' -d '[{"path":"/copy_segments/bbb_sunflower_1080_2min.mp4.segement0","etag":"07b81cd438af5097d584321ab99cdc06","size_bytes":10485760},{"path":"/copy_segments/bbb_sunflower_1080_2min.mp4.segement1","etag":"ff53521cfdfe801ab1e52d0e7fda4969","size_bytes":10485760},{"path":"/copy_segments/bbb_sunflower_1080_2min.mp4.segement2","etag":"e924eaf1e2171ff355c588fa84da5778","size_bytes":6911647}]' https://cloud.swiftstack.com/v1/AUTH_elk/copy/bbb_sunflower_1080_2min.mp4?multipart-manifest=put | |
* Rebuilt URL to: Cache-Control: no-cache/ | |
* Port number ended with ' ' | |
* Closing connection -1 | |
curl: (3) Port number ended with ' ' | |
* Trying 192.168.201.82... | |
* TCP_NODELAY set | |
* Connected to cloud.swiftstack.com (192.168.201.82) port 443 (#0) | |
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | |
* Server certificate: *.swiftstack.com | |
* Server certificate: DigiCert SHA2 Secure Server CA | |
* Server certificate: DigiCert Global Root CA | |
> PUT /v1/AUTH_elk/copy/bbb_sunflower_1080_2min.mp4?multipart-manifest=put HTTP/1.1 | |
> Host: cloud.swiftstack.com | |
> User-Agent: curl/7.54.0 | |
> Accept: */* | |
> Content-Type: video/mp4 | |
> X-Auth-Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
> Content-Length: 384 | |
> | |
* upload completely sent off: 384 out of 384 bytes | |
< HTTP/1.1 201 Created | |
< Last-Modified: Wed, 06 Sep 2017 16:34:01 GMT | |
< Content-Length: 0 | |
< Etag: "215729ecb16ddc52e240f10d04b7751d" | |
< Content-Type: text/html; charset=UTF-8 | |
< X-Trans-Id: txe5aac0c95da444f4919d9-0059b02378 | |
< X-Openstack-Request-Id: txe5aac0c95da444f4919d9-0059b02378 | |
< Date: Wed, 06 Sep 2017 16:34:00 GMT | |
< | |
* Connection #0 to host cloud.swiftstack.com left intact | |
# double check SLO | |
$ curl -i https://cloud.swiftstack.com/v1/AUTH_elk/copy/bbb_sunflower_1080_2min.mp4?multipart-manifest=get -H "X-Auth-Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f" | |
HTTP/1.1 200 OK | |
Content-Length: 680 | |
Accept-Ranges: bytes | |
Last-Modified: Wed, 06 Sep 2017 16:34:01 GMT | |
Etag: 80ba317af9f92493cbbffb0c9a7bd6fb | |
X-Timestamp: 1504715640.31061 | |
X-Static-Large-Object: True | |
Content-Type: application/json; charset=utf-8 | |
X-Trans-Id: tx7788b3ac1dc8415c8c4a6-0059b02426 | |
X-Openstack-Request-Id: tx7788b3ac1dc8415c8c4a6-0059b02426 | |
Date: Wed, 06 Sep 2017 16:36:54 GMT | |
[{"hash": "07b81cd438af5097d584321ab99cdc06", "last_modified": "2017-09-06T16:22:03.000000", "bytes": 10485760, "name": "/copy_segments/bbb_sunflower_1080_2min.mp4.segement0", "content_type": "application/swiftclient-segment"}, {"hash": "ff53521cfdfe801ab1e52d0e7fda4969", "last_modified": "2017-09-06T16:22:36.000000", "bytes": 10485760, "name": "/copy_segments/bbb_sunflower_1080_2min.mp4.segement1", "content_type": "application/swiftclient-segment"}, {"hash": "e924eaf1e2171ff355c588fa84da5778", "last_modified": "2017-09-06T16:23:01.000000", "bytes": 6911647, "name": "/copy_segments/bbb_sunflower_1080_2min.mp4.segement2", "content_type": "application/swiftclient-segment"}] | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U xxx -K xxx stat -v copy bbb_sunflower_1080_2min.mp4 | |
URL: https://cloud.swiftstack.com/v1/AUTH_elk/copy/bbb_sunflower_1080_2min.mp4 | |
Auth Token: AUTH_tkcc600af9a0b142729afb0e3232a1986f | |
Account: AUTH_elk | |
Container: copy | |
Object: bbb_sunflower_1080_2min.mp4 | |
Content Type: video/mp4 | |
Content Length: 27883167 | |
Last Modified: Wed, 06 Sep 2017 16:34:01 GMT | |
ETag: "215729ecb16ddc52e240f10d04b7751d" | |
Accept-Ranges: bytes | |
X-Timestamp: 1504715640.31061 | |
X-Trans-Id: tx47005dbf2e0d4ababa3d6-0059b023b0 | |
X-Static-Large-Object: True | |
X-Openstack-Request-Id: tx47005dbf2e0d4ababa3d6-0059b023b0 | |
# test download new SLO object | |
$ swift -A https://cloud.swiftstack.com/auth/v1.0 -U elk -K elk download copy bbb_sunflower_1080_2min.mp4 | |
bbb_sunflower_1080_2min.mp4 [auth 0.240s, headers 0.503s, total 3.926s, 7.564 MB/s] | |
# dobule check md5 hash for new SLO and original upload via DLO | |
$ md5 bbb_sunflower_1080_2min.mp4 | |
MD5 (bbb_sunflower_1080_2min.mp4) = ee54e072da4a66478a187ba834a0d56a | |
$ md5 ./demo/bbb_sunflower_1080_2min.mp4 | |
MD5 (./demo/bbb_sunflower_1080_2min.mp4) = ee54e072da4a66478a187ba834a0d56a |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment