0.7.0 to 0.7.01 breaks gs:// (Google Cloud Storage)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Duplicity |
New
|
Undecided
|
Unassigned |
Bug Description
Arch (current)
python2 2.7.9-1
python2-boto 2.35.1-1
Upgrading duplicity from 0.7.0 (working) to 0.7.01 seems to break the parsing of Google Cloud Storage GS buckets on the commandline. The result in -v9 (slightly redacted to protect private info):
/usr/bin/duplicity --name duply_rocinante --encrypt-key XXXXXXXX --sign-key XXXXXXXX --verbosity 9 --gpg-options --pinentry-mode loopback --exclude-
[...]
Import of duplicity.
Using temporary directory /tmp/duplicity-
Backend error detail: Traceback (most recent call last):
File "/usr/bin/
with_
File "/usr/bin/
fn()
File "/usr/bin/
action = commandline.
File "/usr/lib/
globals.backend = backend.
File "/usr/lib/
obj = get_backend_
File "/usr/lib/
return factory(pu)
File "/usr/lib/
raise BackendExceptio
BackendException: Boto requires a bucket name.
If I downgrade duplicity to 0.7.0 everything works fine as expected. When diff'ing the two releases, I think the problem is that "gs://" was added to the "uses_netloc" array when it did not exist before, and it's not supported by Boto this way.
Change #1 I saw adding 'gs':
=======
duplicity-
duplicity.
duplicity.
duplicity.
+duplicity.
=======
Change #2 that did *not* have 'gs' before the above change
=======
duplicity-
# This looks similar to urlparse's 'uses_netloc' list, but urlparse doesn't use
# that list for parsing, only creating urls. And doesn't include our custom
# schemes anyway. So we keep our own here for our own use.
-uses_netloc = ['ftp',
- 'ftps',
- 'hsi',
- 's3',
- 'scp', 'ssh', 'sftp',
- 'webdav', 'webdavs',
- 'gdocs',
- 'http', 'https',
- 'imap', 'imaps',
- 'mega',
- 'copy']
+#
+# NOTE: this is filled by the respective backends during registering
+uses_netloc = []
=======
Given the above finds, if I simply edit /usr/lib/
duplicity.
# duplicity.
...and then run the same duplicity command, it all works as expected. I am not sure why 'gs' was added, it's possible the bug is actually in ParseUrl() but I think it's because Boto doesn't support gs:// in this fashion. Either way, Google Cloud Storage is non-operational on 0.7.01 due to this issue.
This bug is a dupe of 1411803 and is fixed in the trunk. Target is 0.7.02.