)]}'
{"id":"openstack%2Fpython-swiftclient~833954","triplet_id":"openstack%2Fpython-swiftclient~master~Idd318c7bdddea60e8ede7e310b51a270e93f764f","project":"openstack/python-swiftclient","branch":"master","topic":"add_formpost_support","attention_set":{"7233":{"account":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"last_update":"2024-09-04 22:04:25.000000000","reason":"\u003cGERRIT_ACCOUNT_15343\u003e replied on the change","reason_account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}},"removed_from_attention_set":{"15343":{"account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"last_update":"2024-09-04 22:04:25.000000000","reason":"\u003cGERRIT_ACCOUNT_15343\u003e replied on the change","reason_account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}},"hashtags":[],"change_id":"Idd318c7bdddea60e8ede7e310b51a270e93f764f","subject":"Add formpost subcommand to generate signature","status":"NEW","created":"2022-03-16 06:25:03.000000000","updated":"2024-09-04 22:04:25.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":40,"unresolved_comment_count":3,"has_review_started":true,"meta_rev_id":"2112aa13b1ccfb575baa3f25247f14952fb2b289","_number":833954,"virtual_id_number":833954,"owner":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2024-09-04 01:01:10.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"}],"REVIEWER":[{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2022-03-16 07:55:05.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2022-06-07 15:58:38.000000000","updated_by":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"reviewer":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"state":"CC"},{"updated":"2024-02-26 19:57:43.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"REVIEWER"}],"messages":[{"id":"312e74aeda74730777341cf1d7a37bae8e8f460b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2022-03-16 06:25:03.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"e9de517bf6b215861b47114f04383d386436bb0d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-16 07:55:05.000000000","message":"Patch Set 1: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/00ced7451c13423ea0e9a207af7c79ed : SUCCESS in 1h 28m 09s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/91d4927699e247fdb2b081bab5164516 : FAILURE in 4m 47s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/67fa99fc7dad47b682d23a0d9781c1a8 : SUCCESS in 6m 01s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/543c64fd4dbd4689972d81e9d1e7606a : SUCCESS in 4m 54s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/d49c2e22a231418697645e13d63f330b : SUCCESS in 6m 11s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/ad2efecca58f476697d2a0bc55d914d1 : RETRY_LIMIT in 5m 29s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a1a93ba47d034f578efd46ab1a9ee509 : SUCCESS in 7m 14s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/ac2206d1f7b14c5eafd31ef2e364a66d : SUCCESS in 35m 23s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/9d984c152441429b9eb54a68ef23fc3f : SUCCESS in 24m 15s","accounts_in_message":[],"_revision_number":1},{"id":"584b421d3fc5ae366458ae41813416c9935309ff","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2022-03-21 00:40:26.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"6de57be2d8a64817d6133a79bba4f55556f6d5aa","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-21 02:22:22.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/02788f9818d64eb6a2b8eb4e6c961f5c : SUCCESS in 1h 36m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4a5ff684fe5d42db9bec0110d6546568 : SUCCESS in 5m 03s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/572bbf7b1dc54d95ab0a68add0ae5ca3 : SUCCESS in 7m 17s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/fce8013262814b5996a040af5af5d8f4 : SUCCESS in 5m 30s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/df35487870034062a75a776952e4fcd7 : SUCCESS in 5m 20s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/379c670e523a48689b3bef96a5e4e090 : SUCCESS in 5m 50s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/624e49f781a44a439ef6650582d55751 : SUCCESS in 6m 29s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/cd9eea36c93748c294a68967d296d4f4 : SUCCESS in 31m 38s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/8828d03dcdfb4b9eb18fd546632dbb2b : SUCCESS in 14m 31s","accounts_in_message":[],"_revision_number":2},{"id":"998bdf6fe9edc684a70db6d2a941da4503ee3f6b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2022-03-23 01:10:20.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"b52ce39862c21bd53b2ea5b2dfaa628c20074040","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-23 03:02:24.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/871f857437794d67a6bae9903a327274 : SUCCESS in 1h 45m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4ef06cbec9904ad0a73f5c14e5ae78d1 : SUCCESS in 5m 00s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/744ba7ebf9564b649afc7dd844ab4748 : SUCCESS in 5m 05s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/a917b472ca544e20bb8f583344023433 : SUCCESS in 6m 11s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/62f740bb391b43d0a2087aa0a7c569b8 : SUCCESS in 6m 51s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9c0b5d6aaa1e4ea89dc69d12a4a64e3c : SUCCESS in 6m 26s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/cfe731f716c143bc9264373574be2506 : SUCCESS in 50m 15s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/b25ebd98e0e647e3bff5e3e00e73d025 : SUCCESS in 25m 24s","accounts_in_message":[],"_revision_number":3},{"id":"becdfc8300a6e016c0ee2732c35a505b446210a8","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2022-06-07 15:58:38.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"55170b21c88a21b1ec960f8d1b9fe1cca34d0297","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2022-06-22 21:17:13.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"62ee9da188daed83a1aea515b150a7b40c85064f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2022-06-24 01:06:27.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"1d2fe27d603cac362ea394ae9acf464e7944f5e4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-06-24 02:34:12.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/609a81445a8e4e56ab4c402d746def17 : SUCCESS in 1h 26m 17s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ed92bb53391149a7b1283706cbfe40a2 : SUCCESS in 3m 34s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/6e3e29e2408443a1982b3b9a01d8f831 : SUCCESS in 3m 35s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/2c2cc9b1f84941f5bbd80a85c7bbd6eb : SUCCESS in 3m 41s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/2fbfc41602c74e97afc806b6a9272f85 : SUCCESS in 3m 42s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9a053cb7c0c24cd3bd7d0ada416d0095 : SUCCESS in 5m 53s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/7d07426ca6074013bd4d3022fc3251c6 : SUCCESS in 40m 08s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/869507c856e54dad8b6e861cc9e4055a : SUCCESS in 16m 31s","accounts_in_message":[],"_revision_number":4},{"id":"dac5ae3aacf52b7128233785efef07beed5e50a5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-01-29 20:41:13.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":5},{"id":"1cd0d2fa375f8eb420a90504c75ea5e792eb421d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-01-29 21:58:11.000000000","message":"Patch Set 5: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\nhttps://zuul.opendev.org/t/openstack/buildset/59b0d90bc3174a9eb99ad69738e43115\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/37ceda63006442bfb30fd57dd8c9a076 : SUCCESS in 1h 15m 09s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b80fb541964b4b14b0baa5ad954f6aed : FAILURE in 3m 46s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/fe29c3f77a614428bbf9720b9c2a3e33 : SUCCESS in 2m 19s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/b7bfef4e89964a97b5d69fba6a0dc84a : SUCCESS in 3m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/19f784e62dc7483b991edd5e3f1d8d40 : FAILURE in 3m 16s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/4d34da2a69344683a7d19544a6b41e4a : SUCCESS in 56m 53s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/eb29978a3efd4636b1fe84b7c25055bc : SUCCESS in 11m 20s","accounts_in_message":[],"_revision_number":5},{"id":"2f5263f80275fa4817ea3d8b2f58ed724fd5c27a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-02-20 05:09:26.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":6},{"id":"fe5cbfb0506d18251ef5f61ab8cc71b4131b602b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-02-20 06:28:54.000000000","message":"Patch Set 6: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\nhttps://zuul.opendev.org/t/openstack/buildset/52f267c12eb0464fb585fe5cd548f3e1\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/39165d1e4c274b10a6a843f97b59271f : SUCCESS in 1h 18m 22s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1a0aa8279d404d6ca5d811c7f19e59d6 : SUCCESS in 2m 29s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/071b111e57e540b4a5e3267cb51fca39 : SUCCESS in 3m 50s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/fb8e1a2856a244dca4c693a8cd294770 : SUCCESS in 2m 56s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/af2bb56370324bbf8aa0c9da3d4e9b54 : FAILURE in 3m 44s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/e8bdc089c1eb4da79ca78187a6c855c7 : SUCCESS in 52m 03s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/6e70748054334dcdb847aa0d1d61b21f : SUCCESS in 17m 40s","accounts_in_message":[],"_revision_number":6},{"id":"22a4759f387736be784f7eed85b1f50394fa62ab","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-02-21 02:51:24.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":7},{"id":"6a4457512e32bcc8e3e1292e6cdd376e5b420fb4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-02-21 04:34:21.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9cfb79b2ec674940b4fe47b4aa85785f\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/eaa434a780404c33b1ab241ca8050701 : SUCCESS in 1h 25m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2e2730519114428592088146d20b46e6 : SUCCESS in 2m 20s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/f08d7e029e1a43f5ba4020fab9a85147 : SUCCESS in 2m 47s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/2bd18c7b8ace44cc8c36b01edd25146a : SUCCESS in 2m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/388f4b737e314827b1d44930465ecf72 : SUCCESS in 5m 27s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/e4404125c3924a1d955f210adcc094df : SUCCESS in 51m 48s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/8341aad6507e42bb84e058476d70824d : SUCCESS in 25m 34s","accounts_in_message":[],"_revision_number":7},{"id":"54dbc8f4d6f8f0f0127d54b09b247fb6d72a7775","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-02-26 19:57:43.000000000","message":"Patch Set 7: Code-Review-1\n\n(16 comments)","accounts_in_message":[],"_revision_number":7},{"id":"c704a5908a4e69d9dce3e5d7957af8816d09b121","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-02-28 03:09:18.000000000","message":"Uploaded patch set 8.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":8},{"id":"9c278df5a586e77b1b0f88a5965696a045d72919","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-02-28 03:14:29.000000000","message":"Patch Set 8:\n\n(1 comment)","accounts_in_message":[],"_revision_number":8},{"id":"51f17082e4a0d58bf7ca0780fcb782929b44c8b9","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-02-28 03:16:52.000000000","message":"Patch Set 8:\n\n(1 comment)","accounts_in_message":[],"_revision_number":8},{"id":"b884dda51a1d3af339cbbbba467cd13650b9fbf5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-02-28 04:41:05.000000000","message":"Patch Set 8: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\nhttps://zuul.opendev.org/t/openstack/buildset/8d37f82000f5451bbc27797d10a2b582\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/5aa49a0293f547d08f847e5caec01504 : SUCCESS in 1h 22m 38s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4a40040f8a3f408ca44bf25776a77755 : FAILURE in 3m 09s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/9156297a3e1c4d2f8b11318e2dc9e92d : SUCCESS in 3m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/792494d11d5446cd96a594f5c29e7670 : SUCCESS in 3m 02s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/dc1ac2bdf6ce4fb4bf697a1bf44a1e8a : SUCCESS in 4m 15s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/569746df1b9d46e19516f253b72eebff : SUCCESS in 28m 17s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/f37c647ac95649a8a35f1e868ea236fd : SUCCESS in 54m 48s","accounts_in_message":[],"_revision_number":8},{"id":"26d87ea4ae3d60fc81738e59ed82592b570ac26b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-03-08 04:36:30.000000000","message":"Uploaded patch set 9.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":9},{"id":"f65c04432a8f59e9f73f86c45db13c3e55fdf283","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-03-08 06:34:09.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7f49249bcad046e38f7544e508c68662\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/e3255c38027342788ce1a0af1cf86a34 : SUCCESS in 1h 49m 39s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3d8d2b0bf74b4d8fa091412b190f44a4 : SUCCESS in 2m 40s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/babe8711fcd147cd91599f143372fba8 : SUCCESS in 3m 19s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/d42e4ba52f6c4c2fbab5d0f0cd4dde4f : SUCCESS in 3m 14s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8b010faf9ea144a38da563eb7fd0fa32 : SUCCESS in 4m 53s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/13997513115a47bc9a8bd7a3c9c2ebfa : SUCCESS in 16m 17s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/77f1a3a2080c4dd5a83223ad76b55adc : SUCCESS in 53m 38s","accounts_in_message":[],"_revision_number":9},{"id":"a0e07b86e0d215d8a8e2bb8b1aeb62c7f9a8f6e5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"real_author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"date":"2024-05-14 17:53:42.000000000","message":"Patch Set 10: Patch Set 9 was rebased on behalf of \u003cGERRIT_ACCOUNT_7233\u003e\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}],"_revision_number":10},{"id":"c4134d92f878827dddc7c659627c9ff021ee3d24","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-05-14 18:00:49.000000000","message":"Patch Set 10: Code-Review-1\n\n(5 comments)","accounts_in_message":[],"_revision_number":10},{"id":"9852821b3d7928f8affa188a43a2f3f7c1ce904c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-05-14 19:29:22.000000000","message":"Patch Set 10: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9d829b3238c7444487167e5f869acfcf\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/ab751ea65a8b42ed95895c285997b51b : SUCCESS in 1h 29m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/eea05443b5b3454da86719680afa9a90 : SUCCESS in 3m 48s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/f88e92369d4744c3ae08192ab5ebe80c : SUCCESS in 2m 47s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/85b7fa91d7884a4a9b79240571f2de98 : SUCCESS in 3m 01s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/c58951c75c9845ee930e41bb7ddf1983 : SUCCESS in 5m 52s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d052df0daf7f4c0ba77f5b064d3b9391 : SUCCESS in 5m 48s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/e27265e6296f497bb6cbde1805a6770c : SUCCESS in 23m 24s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/8ac443c4868d4ecc9d8f21f9d8274500 : SUCCESS in 38m 20s","accounts_in_message":[],"_revision_number":10},{"id":"0465defd1a9f5bdb631fc5ab76b4cbbc8b7c6435","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-09-02 07:00:45.000000000","message":"Patch Set 10:\n\n(1 comment)","accounts_in_message":[],"_revision_number":10},{"id":"ff628b7c84910e9c7745723705f0d4d430977877","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-09-03 23:16:20.000000000","message":"Uploaded patch set 11.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":11},{"id":"7fe23b57f06535dd4ca4fdfe20924b461a41e8c6","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-09-03 23:16:31.000000000","message":"Patch Set 10:\n\n(10 comments)","accounts_in_message":[],"_revision_number":10},{"id":"f60b6d7dee0d9ce1a09d4d157080629cd91e276c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-09-04 01:01:10.000000000","message":"Patch Set 11: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e51f67d87dbf446dbb839d8afa914c66\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/d0b7dfface7b400cbcfb281028684ba9 : SUCCESS in 1h 42m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/00b28f5e9b654bb59142db1818921087 : SUCCESS in 2m 45s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/4f581b3d539e4d38ad670b335f2aaaee : SUCCESS in 2m 40s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/00400a74d1994db48afb905d0af6ff7a : SUCCESS in 2m 45s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/2b11565cd4a74c6a91f3841f89d1266a : SUCCESS in 3m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d3dc704d3cbe451a91c29f14836f1944 : SUCCESS in 4m 48s\n- swiftclient-functional https://zuul.opendev.org/t/openstack/build/e962e1533ecf42e6938c67c0385b4ffa : SUCCESS in 23m 02s\n- swiftclient-swift-functional https://zuul.opendev.org/t/openstack/build/8462725209f04f10815bb62ec3440d4f : SUCCESS in 54m 01s","accounts_in_message":[],"_revision_number":11},{"id":"2112aa13b1ccfb575baa3f25247f14952fb2b289","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-09-04 22:04:25.000000000","message":"Patch Set 11:\n\n(1 comment)","accounts_in_message":[],"_revision_number":11}],"current_revision_number":11,"current_revision":"773a39d3bebf23ab6780d90db8491a88c759664e","revisions":{"ef643480d1a91874712e2e02b39ed35462da328e":{"kind":"REWORK","_number":1,"created":"2022-03-16 06:25:03.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/1"}}},"commit":{"parents":[{"commit":"22a05b2039d0178b52fa3546de8ab265df112636","subject":"Add Python3 zed unit tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/22a05b2039d0178b52fa3546de8ab265df112636"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:25:00.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: sha256:287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"sha256:287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--algorithm \u003calgorithm\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --algorithm {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha512.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/ef643480d1a91874712e2e02b39ed35462da328e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/ef643480d1a91874712e2e02b39ed35462da328e"}]},"branch":"refs/heads/master"},"2b9ba285676ea0322bdd9ea2f7e46ec3a6c35c63":{"kind":"REWORK","_number":2,"created":"2022-03-21 00:40:26.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/2"}}},"commit":{"parents":[{"commit":"22a05b2039d0178b52fa3546de8ab265df112636","subject":"Add Python3 zed unit tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/22a05b2039d0178b52fa3546de8ab265df112636"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-21 00:40:14.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: sha256:287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"sha256:287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--algorithm \u003calgorithm\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --algorithm {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha512.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/2b9ba285676ea0322bdd9ea2f7e46ec3a6c35c63"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/2b9ba285676ea0322bdd9ea2f7e46ec3a6c35c63"}]},"branch":"refs/heads/master"},"e2cc21c007df36582e3ac1ac5243813eb1e06b2e":{"kind":"REWORK","_number":3,"created":"2022-03-23 01:10:20.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/3"}}},"commit":{"parents":[{"commit":"20d837a27665632cc5b164b96671290b04c48a58","subject":"Remove unnecessary unicode prefixes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/20d837a27665632cc5b164b96671290b04c48a58"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-23 01:10:06.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: sha256:287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"sha256:287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--algorithm \u003calgorithm\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --algorithm {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha512.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/e2cc21c007df36582e3ac1ac5243813eb1e06b2e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/e2cc21c007df36582e3ac1ac5243813eb1e06b2e"}]},"branch":"refs/heads/master"},"a054396e6fa1594acc1f94a46fc7a76949b11e02":{"kind":"REWORK","_number":4,"created":"2022-06-24 01:06:27.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/4"}}},"commit":{"parents":[{"commit":"9eee29d2e46e774eb08acb76c3317a58856f3f71","subject":"tempurl: Support sha256 and sha512 signatures","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/9eee29d2e46e774eb08acb76c3317a58856f3f71"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-06-24 01:04:49.000000000","tz":600},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: 287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --digest {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a054396e6fa1594acc1f94a46fc7a76949b11e02"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a054396e6fa1594acc1f94a46fc7a76949b11e02"}]},"branch":"refs/heads/master"},"5609b4a09762daef94df31d90644cc90aaabc4de":{"kind":"REWORK","_number":5,"created":"2024-01-29 20:41:13.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/54/833954/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/5"}}},"commit":{"parents":[{"commit":"b9fb6ca1d02512d6b87cc74e212a2666f703a8e8","subject":"Merge \"make setup dependencies discoverable\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b9fb6ca1d02512d6b87cc74e212a2666f703a8e8"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2024-01-29 20:40:00.000000000","tz":-480},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: 287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --digest {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/5609b4a09762daef94df31d90644cc90aaabc4de"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/5609b4a09762daef94df31d90644cc90aaabc4de"}]},"branch":"refs/heads/master"},"4e455cbe8ed9f30b07568458d22f666ec527c4eb":{"kind":"REWORK","_number":6,"created":"2024-02-20 05:09:26.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/6"}}},"commit":{"parents":[{"commit":"b9fb6ca1d02512d6b87cc74e212a2666f703a8e8","subject":"Merge \"make setup dependencies discoverable\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b9fb6ca1d02512d6b87cc74e212a2666f703a8e8"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-02-20 05:09:22.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: 287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --digest {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/4e455cbe8ed9f30b07568458d22f666ec527c4eb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/4e455cbe8ed9f30b07568458d22f666ec527c4eb"}]},"branch":"refs/heads/master"},"601834685c9bc46fc14038dc4ca21ff36d57b071":{"kind":"REWORK","_number":7,"created":"2024-02-21 02:51:24.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/7"}}},"commit":{"parents":[{"commit":"b9fb6ca1d02512d6b87cc74e212a2666f703a8e8","subject":"Merge \"make setup dependencies discoverable\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b9fb6ca1d02512d6b87cc74e212a2666f703a8e8"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-02-21 02:51:05.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  $ swift formpost \"/v1/a/c\" 5 1 500 \"some_key\" \\\n    --redirect \u0027http://gohere.example\u0027 --algorithm sha256\n  /v1/a/c, 5, 1, 500, some_key\n    Expires: 1647412026\n  Signature: 287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1647412026\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"287d48fb089e35a537807e3579cdfd099ef285894011680a48f41855b4860b25\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  $ swift formpost --help\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cmax_file_count\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    max_file_size         The maximum file size per file uploaded.\n    max_file_count        The maximum number of uploaded files allowed.\n    seconds               The number of seconds from now to allow the form post\n                          to begin.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --redirect \u003curl\u003e     The URL to redirect the browser to after the uploads\n                         have completed.\n    --digest {sha256,sha512,sha1}\n                         Select the hash algorithm to use.\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/601834685c9bc46fc14038dc4ca21ff36d57b071"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/601834685c9bc46fc14038dc4ca21ff36d57b071"}]},"branch":"refs/heads/master"},"722aec299820f44b68d2813bbc008b8bf9aea3f0":{"kind":"REWORK","_number":8,"created":"2024-02-28 03:09:18.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/8"}}},"commit":{"parents":[{"commit":"27171d981cae670ac31f123713b31f1c93045447","subject":"Authors / changelog for 4.5.0","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/27171d981cae670ac31f123713b31f1c93045447"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-02-28 03:08:59.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  swift formpost 500 5 \"/v1/a/c\" \"some_key\" --redirect \u0027http://gohere.example\u0027 --digest sha256 --max-file-count 1\n  500, 5, /v1/a/c, some_key\n    Expires: 1709089853\n  Signature: 333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1709089853\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] [--max-file-count \u003ccount\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    \u003ctime\u003e                The amount of time the form post will be\n                          valid. The time can be specified in three ways:\n                          an integer representing the time in seconds;\n                          a number with a \u0027s\u0027, \u0027m\u0027, \u0027h\u0027, or \u0027d\u0027 suffix to specify\n                          the time in seconds, minutes, hours, or days; or\n                          an ISO 8601 timestamp in a specific format.\n                          If --absolute is passed and time is an integer, the\n                          seconds are intepreted as the Unix timestamp when the\n                          temporary URL will expire.\n                          The ISO 8601 timestamp can be specified in one of\n                          following formats:\n\n                          i) Complete date: YYYY-MM-DD (eg 1997-07-16)\n\n                          ii) Complete date plus hours, minutes and seconds:\n\n                              YYYY-MM-DDThh:mm:ss\n\n                             (eg 1997-07-16T19:20:30)\n\n                          iii) Complete date plus hours, minutes and seconds with\n                               UTC designator:\n\n                               YYYY-MM-DDThh:mm:ssZ\n\n                               (eg 1997-07-16T19:20:30Z)\n\n                          Please be aware that if you don\u0027t provide the UTC\n                          designator (i.e., Z) the timestamp is generated using\n                          your local timezone. If only a date is specified,\n                          the time part used will equal to 00:00:00.\n    max_file_size         The maximum file size per file uploaded.\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --absolute            Interpret the \u003ctime\u003e positional argument as a Unix\n                          timestamp rather than a number of seconds in the\n                          future. If an ISO 8601 timestamp is passed for \u003ctime\u003e,\n                          this argument is ignored.\n    --redirect \u003curl\u003e      The URL to redirect the browser to after the uploads\n                          have completed.\n    --digest {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                          Select the hash digest to use. Default sha256.\n    --max-file-count     The maximum number of uploaded files allowed. Default: 1\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/722aec299820f44b68d2813bbc008b8bf9aea3f0"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/722aec299820f44b68d2813bbc008b8bf9aea3f0"}]},"branch":"refs/heads/master"},"0a25984870f8a853c671b4c1b93f7c4a4af999a9":{"kind":"REWORK","_number":9,"created":"2024-03-08 04:36:30.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/9"}}},"commit":{"parents":[{"commit":"27171d981cae670ac31f123713b31f1c93045447","subject":"Authors / changelog for 4.5.0","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/27171d981cae670ac31f123713b31f1c93045447"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-03-08 04:36:27.000000000","tz":660},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  swift formpost 500 5 \"/v1/a/c\" \"some_key\" --redirect \u0027http://gohere.example\u0027 --digest sha256 --max-file-count 1\n  500, 5, /v1/a/c, some_key\n    Expires: 1709089853\n  Signature: 333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1709089853\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] [--max-file-count \u003ccount\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    \u003ctime\u003e                The amount of time the form post will be\n                          valid. The time can be specified in three ways:\n                          an integer representing the time in seconds;\n                          a number with a \u0027s\u0027, \u0027m\u0027, \u0027h\u0027, or \u0027d\u0027 suffix to specify\n                          the time in seconds, minutes, hours, or days; or\n                          an ISO 8601 timestamp in a specific format.\n                          If --absolute is passed and time is an integer, the\n                          seconds are intepreted as the Unix timestamp when the\n                          temporary URL will expire.\n                          The ISO 8601 timestamp can be specified in one of\n                          following formats:\n\n                          i) Complete date: YYYY-MM-DD (eg 1997-07-16)\n\n                          ii) Complete date plus hours, minutes and seconds:\n\n                              YYYY-MM-DDThh:mm:ss\n\n                             (eg 1997-07-16T19:20:30)\n\n                          iii) Complete date plus hours, minutes and seconds with\n                               UTC designator:\n\n                               YYYY-MM-DDThh:mm:ssZ\n\n                               (eg 1997-07-16T19:20:30Z)\n\n                          Please be aware that if you don\u0027t provide the UTC\n                          designator (i.e., Z) the timestamp is generated using\n                          your local timezone. If only a date is specified,\n                          the time part used will equal to 00:00:00.\n    max_file_size         The maximum file size per file uploaded.\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --absolute            Interpret the \u003ctime\u003e positional argument as a Unix\n                          timestamp rather than a number of seconds in the\n                          future. If an ISO 8601 timestamp is passed for \u003ctime\u003e,\n                          this argument is ignored.\n    --redirect \u003curl\u003e      The URL to redirect the browser to after the uploads\n                          have completed.\n    --digest {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                          Select the hash digest to use. Default sha256.\n    --max-file-count     The maximum number of uploaded files allowed. Default: 1\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/0a25984870f8a853c671b4c1b93f7c4a4af999a9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/0a25984870f8a853c671b4c1b93f7c4a4af999a9"}]},"branch":"refs/heads/master"},"f1a6aaa08b06f4410f3c85b14835441af184fe0a":{"kind":"TRIVIAL_REBASE","_number":10,"created":"2024-05-14 17:53:42.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"real_uploader":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"ref":"refs/changes/54/833954/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/10"}}},"commit":{"parents":[{"commit":"e7061db7a4ab705ae93e0b0c82c5418a3a8d299d","subject":"Merge \"Fix swiftclient output regression\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/e7061db7a4ab705ae93e0b0c82c5418a3a8d299d"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-05-14 17:53:42.000000000","tz":0},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  swift formpost 500 5 \"/v1/a/c\" \"some_key\" --redirect \u0027http://gohere.example\u0027 --digest sha256 --max-file-count 1\n  500, 5, /v1/a/c, some_key\n    Expires: 1709089853\n  Signature: 333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1709089853\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] [--max-file-count \u003ccount\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    \u003ctime\u003e                The amount of time the form post will be\n                          valid. The time can be specified in three ways:\n                          an integer representing the time in seconds;\n                          a number with a \u0027s\u0027, \u0027m\u0027, \u0027h\u0027, or \u0027d\u0027 suffix to specify\n                          the time in seconds, minutes, hours, or days; or\n                          an ISO 8601 timestamp in a specific format.\n                          If --absolute is passed and time is an integer, the\n                          seconds are intepreted as the Unix timestamp when the\n                          temporary URL will expire.\n                          The ISO 8601 timestamp can be specified in one of\n                          following formats:\n\n                          i) Complete date: YYYY-MM-DD (eg 1997-07-16)\n\n                          ii) Complete date plus hours, minutes and seconds:\n\n                              YYYY-MM-DDThh:mm:ss\n\n                             (eg 1997-07-16T19:20:30)\n\n                          iii) Complete date plus hours, minutes and seconds with\n                               UTC designator:\n\n                               YYYY-MM-DDThh:mm:ssZ\n\n                               (eg 1997-07-16T19:20:30Z)\n\n                          Please be aware that if you don\u0027t provide the UTC\n                          designator (i.e., Z) the timestamp is generated using\n                          your local timezone. If only a date is specified,\n                          the time part used will equal to 00:00:00.\n    max_file_size         The maximum file size per file uploaded.\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --absolute            Interpret the \u003ctime\u003e positional argument as a Unix\n                          timestamp rather than a number of seconds in the\n                          future. If an ISO 8601 timestamp is passed for \u003ctime\u003e,\n                          this argument is ignored.\n    --redirect \u003curl\u003e      The URL to redirect the browser to after the uploads\n                          have completed.\n    --digest {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                          Select the hash digest to use. Default sha256.\n    --max-file-count     The maximum number of uploaded files allowed. Default: 1\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/f1a6aaa08b06f4410f3c85b14835441af184fe0a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/f1a6aaa08b06f4410f3c85b14835441af184fe0a"}]},"branch":"refs/heads/master","description":"Rebase"},"773a39d3bebf23ab6780d90db8491a88c759664e":{"kind":"REWORK","_number":11,"created":"2024-09-03 23:16:20.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/54/833954/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/54/833954/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/54/833954/11"}}},"commit":{"parents":[{"commit":"e7061db7a4ab705ae93e0b0c82c5418a3a8d299d","subject":"Merge \"Fix swiftclient output regression\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/e7061db7a4ab705ae93e0b0c82c5418a3a8d299d"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-03-16 06:13:44.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-09-03 23:16:17.000000000","tz":600},"subject":"Add formpost subcommand to generate signature","message":"Add formpost subcommand to generate signature\n\nA couple of years ago[0] we moved the tempurl signature generation from\na tool inside swift to a sub command in the client. This made a lot of\nsense.\nThis patch does the same thing for formpost. It adds a new `formpost`\nsub command to the swiftclient shell. And a generate formpost signature\nhelper method to utils, so now we can:\n\n  swift formpost 500 5 \"/v1/a/c\" \"some_key\" --redirect \u0027http://gohere.example\u0027 --digest sha256 --max-file-count 1\n  500, 5, /v1/a/c, some_key\n    Expires: 1709089853\n  Signature: 333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\n\n  Sample form:\n  NOTE: the \u003cform\u003e tag\u0027s \"action\" attribute does not obtain the Swift cluster\u0027s\n        hostname. You should manually add it before using the form.\n\n  \u003cform action\u003d\"/v1/a/c\" method\u003d\"POST\" enctype\u003d\"multipart/form-data\"\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"redirect\" value\u003d\"http://gohere.example\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_size\" value\u003d\"5\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"max_file_count\" value\u003d\"1\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"expires\" value\u003d\"1709089853\" /\u003e\n    \u003cinput type\u003d\"hidden\" name\u003d\"signature\" value\u003d\"333de753c27f4d0d81d6bfa35af19da803d2b1f9ea90219973db846a2fe3e1d7\" /\u003e\n    \u003c!-- This signature allows for at most 1 files, --\u003e\n    \u003c!-- but it may also have any smaller number. --\u003e\n    \u003c!-- Remove file inputs as needed. --\u003e\n    \u003cinput type\u003d\"file\" name\u003d\"file0\" /\u003e\n    \u003cbr /\u003e\n    \u003cinput type\u003d\"submit\" /\u003e\n  \u003c/form\u003e\n\nWhere the order of commands are:\n\n  Usage: swift formpost [--digest \u003cdigest\u003e] [--redirect \u003curl\u003e] [--max-file-count \u003ccount\u003e] \u003cpath\u003e\n                        \u003cmax_file_size\u003e \u003cseconds\u003e \u003ckey\u003e\n  Generate Form Signature\n\n  positional arguments:\n    \u003ctime\u003e                The amount of time the form post will be\n                          valid. The time can be specified in three ways:\n                          an integer representing the time in seconds;\n                          a number with a \u0027s\u0027, \u0027m\u0027, \u0027h\u0027, or \u0027d\u0027 suffix to specify\n                          the time in seconds, minutes, hours, or days; or\n                          an ISO 8601 timestamp in a specific format.\n                          If --absolute is passed and time is an integer, the\n                          seconds are intepreted as the Unix timestamp when the\n                          temporary URL will expire.\n                          The ISO 8601 timestamp can be specified in one of\n                          following formats:\n\n                          i) Complete date: YYYY-MM-DD (eg 1997-07-16)\n\n                          ii) Complete date plus hours, minutes and seconds:\n\n                              YYYY-MM-DDThh:mm:ss\n\n                             (eg 1997-07-16T19:20:30)\n\n                          iii) Complete date plus hours, minutes and seconds with\n                               UTC designator:\n\n                               YYYY-MM-DDThh:mm:ssZ\n\n                               (eg 1997-07-16T19:20:30Z)\n\n                          Please be aware that if you don\u0027t provide the UTC\n                          designator (i.e., Z) the timestamp is generated using\n                          your local timezone. If only a date is specified,\n                          the time part used will equal to 00:00:00.\n    max_file_size         The maximum file size per file uploaded.\n    path                  The prefix to use for form uploaded objects. For\n                          example: /v1/account/container/object_prefix_ would\n                          ensure all form uploads have that path prepended to\n                          the browser-given file name.\n    key                   The X-{Account|Container}-Meta-Temp-URL-Key for the\n                          account/container.\n\n  optional arguments:\n    --absolute            Interpret the \u003ctime\u003e positional argument as a Unix\n                          timestamp rather than a number of seconds in the\n                          future. If an ISO 8601 timestamp is passed for \u003ctime\u003e,\n                          this argument is ignored.\n    --redirect \u003curl\u003e      The URL to redirect the browser to after the uploads\n                          have completed.\n    --digest {sha256,sha512,sha1}, -a {sha256,sha512,sha1}\n                          Select the hash digest to use. Default sha256.\n    --max-file-count     The maximum number of uploaded files allowed. Default: 1\n\nThe default algorithm/digest is sha256.\n\nChange-Id: Idd318c7bdddea60e8ede7e310b51a270e93f764f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/773a39d3bebf23ab6780d90db8491a88c759664e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/773a39d3bebf23ab6780d90db8491a88c759664e"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
