)]}'
{"id":"openstack%2Fpython-swiftclient~281700","triplet_id":"openstack%2Fpython-swiftclient~master~I7b969b7d25e48042f973d870fd28e7b3c10e35c5","project":"openstack/python-swiftclient","branch":"master","topic":"bug/1511813","hashtags":[],"change_id":"I7b969b7d25e48042f973d870fd28e7b3c10e35c5","subject":"Fix object/path-names for pseudo-folders on winnt","status":"NEW","created":"2016-02-18 08:58:06.000000000","updated":"2026-06-03 11:52:11.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":4,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"cdaea9359db07d64316a036ec16e37ed1f3ab248","_number":281700,"virtual_id_number":281700,"owner":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},{"value":1,"date":"2016-02-18 13:25:45.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"date":"2016-03-01 14:12:10.000000000","_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"_account_id":13390,"name":"Mingyu Li","email":"mingyu.li.cn@gmail.com","username":"Microwise"}],"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":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":13390,"name":"Mingyu Li","email":"mingyu.li.cn@gmail.com","username":"Microwise"}],"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":{"rejected":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"all":[{"value":-1,"date":"2016-03-11 18:29:45.000000000","permitted_voting_range":{"min":-1,"max":0},"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"value":0,"date":"2016-02-25 20:10:32.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"_account_id":13390,"name":"Mingyu Li","email":"mingyu.li.cn@gmail.com","username":"Microwise"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},{"_account_id":13390,"name":"Mingyu Li","email":"mingyu.li.cn@gmail.com","username":"Microwise"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2016-02-18 09:01:18.000000000","updated_by":{"_account_id":13390,"name":"Mingyu Li","email":"mingyu.li.cn@gmail.com","username":"Microwise"},"reviewer":{"_account_id":13390,"name":"Mingyu Li","email":"mingyu.li.cn@gmail.com","username":"Microwise"},"state":"REVIEWER"},{"updated":"2016-02-18 09:01:47.000000000","updated_by":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"reviewer":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"state":"REVIEWER"},{"updated":"2016-02-18 13:25:45.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"},{"updated":"2016-02-25 20:10:32.000000000","updated_by":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"reviewer":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"state":"REVIEWER"},{"updated":"2016-03-01 14:12:10.000000000","updated_by":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"reviewer":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"state":"REVIEWER"},{"updated":"2026-06-03 11:52:11.000000000","updated_by":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"reviewer":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"state":"REMOVED"}],"messages":[{"id":"72969f96544869d1ab0eeb07a6ac7c9141b5b830","author":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"date":"2016-02-18 08:58:06.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"af876946237f3d8b9a079a6f51a701f84c7db466","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-02-18 10:03:39.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/00/281700/1/check/gate-python-swiftclient-pep8/327afc2/ : SUCCESS in 38s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/00/281700/1/check/gate-python-swiftclient-docs/c96bb30//doc/build/html/ : SUCCESS in 1m 31s\n- gate-python-swiftclient-python27 http://logs.openstack.org/00/281700/1/check/gate-python-swiftclient-python27/30161ce/ : SUCCESS in 45s\n- gate-python-swiftclient-python34 http://logs.openstack.org/00/281700/1/check/gate-python-swiftclient-python34/96bdd7a/ : FAILURE in 1m 41s\n- gate-python-swiftclient-pypy http://logs.openstack.org/00/281700/1/check/gate-python-swiftclient-pypy/cff6c76/ : SUCCESS in 1m 16s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/00/281700/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient/c4c1395/ : SUCCESS in 1h 05m 09s\n- gate-swift-dsvm-functional http://logs.openstack.org/00/281700/1/check/gate-swift-dsvm-functional/877508a/ : SUCCESS in 22m 20s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/00/281700/1/check/gate-swiftclient-dsvm-functional/b1a8540/ : SUCCESS in 20m 51s","accounts_in_message":[],"_revision_number":1},{"id":"714d832950c6d6fa74ab0f38d4a8449e0a8301e6","author":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"date":"2016-02-18 12:45:09.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"099e7593f118a334d30cb2d67e333990d735b7d3","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-02-18 13:25:45.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/00/281700/2/check/gate-python-swiftclient-pep8/d58a17f/ : SUCCESS in 43s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/00/281700/2/check/gate-python-swiftclient-docs/15db633//doc/build/html/ : SUCCESS in 58s\n- gate-python-swiftclient-python27 http://logs.openstack.org/00/281700/2/check/gate-python-swiftclient-python27/d82d8c7/ : SUCCESS in 56s\n- gate-python-swiftclient-python34 http://logs.openstack.org/00/281700/2/check/gate-python-swiftclient-python34/a4d02d3/ : SUCCESS in 2m 01s\n- gate-python-swiftclient-pypy http://logs.openstack.org/00/281700/2/check/gate-python-swiftclient-pypy/6b8a6b0/ : SUCCESS in 1m 18s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/00/281700/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient/b30417c/ : SUCCESS in 40m 29s\n- gate-swift-dsvm-functional http://logs.openstack.org/00/281700/2/check/gate-swift-dsvm-functional/ee71714/ : SUCCESS in 18m 35s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/00/281700/2/check/gate-swiftclient-dsvm-functional/1c51ed5/ : SUCCESS in 21m 31s","accounts_in_message":[],"_revision_number":2},{"id":"b6de02e65b298efb25001b7621210b53106176b6","author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"date":"2016-03-01 14:12:10.000000000","message":"Patch Set 2:\n\n(2 comments)\n\nI am having significant concerns about the compatibility with this. If a client uploads something simple like a key ending with a period, what is going to happen?","accounts_in_message":[],"_revision_number":2},{"id":"92ff145dd8dc74e94bc7628bf36b5de287b6d574","author":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"date":"2016-03-11 18:29:45.000000000","message":"Patch Set 2: Workflow-1\n\n(2 comments)\n\nPete,\nSorry for the late reply.\n\nTo answer your question, (if i understand you correct) uploads for files with names ending with period will be uneventful. \n\nIf you meant period at beginning (liek say a dotfile), i just found depending on params given, the dot gets stripped which may result in an overwrite if there is a similarly named non-dot file in the same container. \n\nI vill fix zis in the next patch set!","accounts_in_message":[],"_revision_number":2},{"id":"cdaea9359db07d64316a036ec16e37ed1f3ab248","tag":"autogenerated:gerrit:deleteReviewer","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-06-03 11:52:11.000000000","message":"Removed reviewer \u003cGERRIT_ACCOUNT_6968\u003e.","accounts_in_message":[{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"}],"_revision_number":2}],"current_revision_number":2,"current_revision":"f1d761c9b191379725a86cb0d953c115f9923c2a","revisions":{"26cf4ac804ac760e91dfd5cbb804f2e9362e057b":{"kind":"REWORK","_number":1,"created":"2016-02-18 08:58:06.000000000","uploader":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"ref":"refs/changes/00/281700/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/00/281700/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/1"}}},"commit":{"parents":[{"commit":"f95c03cc400601cbe1a081e9c874ddb51a41848c","subject":"Merge \"Display proper name when failing to create segments container\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/f95c03cc400601cbe1a081e9c874ddb51a41848c"}]}],"author":{"name":"James Nzomo","email":"james@tdt.rocks","date":"2016-02-18 08:03:46.000000000","tz":180},"committer":{"name":"James Nzomo","email":"james@tdt.rocks","date":"2016-02-18 08:56:59.000000000","tz":180},"subject":"Fix object/path-names for pseudo-folders on winnt","message":"Fix object/path-names for pseudo-folders on winnt\n\nThis fix provides a `SwiftUploadObject.object_name` property setter that sanitizes\ninput object names by:-\n- swapping nt path separators for posix path separators\n- stripping winnt drive prefix\n- swapping out drive letter colon for unicode modifier letter colon (when present mid path)\n\nThis allows (among other benefits) correct pseudo-folder naming during uploads when objects\nhave ntpath elements in their names (such as is on windows).\n\nChange-Id: I7b969b7d25e48042f973d870fd28e7b3c10e35c5\nCloses-Bug: #1511813\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/26cf4ac804ac760e91dfd5cbb804f2e9362e057b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/26cf4ac804ac760e91dfd5cbb804f2e9362e057b"}]},"branch":"refs/heads/master"},"f1d761c9b191379725a86cb0d953c115f9923c2a":{"kind":"REWORK","_number":2,"created":"2016-02-18 12:45:09.000000000","uploader":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"},"ref":"refs/changes/00/281700/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/00/281700/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/00/281700/2"}}},"commit":{"parents":[{"commit":"f95c03cc400601cbe1a081e9c874ddb51a41848c","subject":"Merge \"Display proper name when failing to create segments container\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/f95c03cc400601cbe1a081e9c874ddb51a41848c"}]}],"author":{"name":"James Nzomo","email":"james@tdt.rocks","date":"2016-02-18 08:03:46.000000000","tz":180},"committer":{"name":"James Nzomo","email":"james@tdt.rocks","date":"2016-02-18 12:44:45.000000000","tz":180},"subject":"Fix object/path-names for pseudo-folders on winnt","message":"Fix object/path-names for pseudo-folders on winnt\n\nThis fix provides a `SwiftUploadObject.object_name` property setter that sanitizes\ninput object names by:-\n- swapping nt path separators for posix path separators\n- stripping winnt drive prefix\n- swapping out drive letter colon for unicode modifier letter colon (when present mid path)\n\nThis allows (among other benefits) correct pseudo-folder naming during uploads when objects\nhave ntpath elements in their names (such as is on windows).\n\nChange-Id: I7b969b7d25e48042f973d870fd28e7b3c10e35c5\nCloses-Bug: #1511813\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/f1d761c9b191379725a86cb0d953c115f9923c2a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/f1d761c9b191379725a86cb0d953c115f9923c2a"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":10786,"name":"James Nzomo","email":"james@tdt.rocks","username":"moje"}}]}],"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":["label:Workflow\u003dMIN"],"failing_atoms":["label:Workflow\u003dMAX"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
