[tahoe-dev] [tahoe-lafs] #761: "tahoe cp $DIRCAP/$PATH $LOCAL" raises AttributeError
tahoe-lafs
trac at allmydata.org
Fri Sep 4 16:06:45 PDT 2009
#761: "tahoe cp $DIRCAP/$PATH $LOCAL" raises AttributeError
-------------------------------+--------------------------------------------
Reporter: zooko | Owner:
Type: defect | Status: new
Priority: major | Milestone: eventually
Component: code-frontend-cli | Version: 1.4.1
Keywords: | Launchpad_bug:
-------------------------------+--------------------------------------------
Comment(by kevan):
Testing:
copying a filecap to a local directory
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp
URI:CHK:lmwmniv6kzf2amxuoikl6ncmqi:42izq3rtixijq7bs5s3pjcyv4st2hgzuzfqxfjaifbb4mo62adyq:3:10:83
adir
Traceback (most recent call last):
File "/Users/kacarstensen/Documents/code/tahoe-761/support/bin/tahoe",
line 8, in <module>
load_entry_point('allmydata-tahoe==1.5.0-r4054', 'console_scripts',
'tahoe')()
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/runner.py",
line 91, in run
rc = runner(sys.argv[1:])
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/runner.py",
line 78, in runner
rc = cli.dispatch[command](so)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/cli.py",
line 436, in cp
rc = tahoe_cp.copy(options)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 759, in copy
return Copier().do_copy(options)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 444, in do_copy
self.try_copy()
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 501, in try_copy
return self.copy_to_directory(sources, target)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 661, in copy_to_directory
self.copy_files_to_target(self.targetmap[target], target)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 692, in copy_files_to_target
self.copy_file_into(source, name, target)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 737, in copy_file_into
target.put_file(name, f)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 163, in put_file
pathname = os.path.join(self.pathname, name)
File
"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/posixpath.py",
line 65, in join
if b.startswith('/'):
AttributeError: 'NoneType' object has no attribute 'startswith'
}}}
copying a file by means of a dircap and a path to a local directory
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp
URI:DIR2-RO:j74uhg25nwdpjpacl6rkat2yhm:kav7ijeft5h7r7rxdp5bgtlt3viv32yabqajkrdykozia5544jqa/wiki.html
adir
Traceback (most recent call last):
File "/Users/kacarstensen/Documents/code/tahoe-761/support/bin/tahoe",
line 8, in <module>
load_entry_point('allmydata-tahoe==1.5.0-r4054', 'console_scripts',
'tahoe')()
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/runner.py",
line 91, in run
rc = runner(sys.argv[1:])
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/runner.py",
line 78, in runner
rc = cli.dispatch[command](so)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/cli.py",
line 436, in cp
rc = tahoe_cp.copy(options)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 759, in copy
return Copier().do_copy(options)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 444, in do_copy
self.try_copy()
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 501, in try_copy
return self.copy_to_directory(sources, target)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 661, in copy_to_directory
self.copy_files_to_target(self.targetmap[target], target)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 692, in copy_files_to_target
self.copy_file_into(source, name, target)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 737, in copy_file_into
target.put_file(name, f)
File
"/Users/kacarstensen/Documents/code/tahoe-761/src/allmydata/scripts/tahoe_cp.py",
line 163, in put_file
pathname = os.path.join(self.pathname, name)
File
"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/posixpath.py",
line 65, in join
if b.startswith('/'):
AttributeError: 'NoneType' object has no attribute 'startswith'
}}}
copying a filecap to a local file that doesn't exist
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp
URI:CHK:lmwmniv6kzf2amxuoikl6ncmqi:42izq3rtixijq7bs5s3pjcyv4st2hgzuzfqxfjaifbb4mo62adyq:3:10:83
newfile
Success: file copied
}}}
copying a file by means of a dircap and a path to a local file that
doesn't exist
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp
URI:DIR2-RO:j74uhg25nwdpjpacl6rkat2yhm:kav7ijeft5h7r7rxdp5bgtlt3viv32yabqajkrdykozia5544jqa/wiki.html
wiki.html
Success: file copied
}}}
copying a filecap to a local file that does exist
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp
URI:CHK:lmwmniv6kzf2amxuoikl6ncmqi:42izq3rtixijq7bs5s3pjcyv4st2hgzuzfqxfjaifbb4mo62adyq:3:10:83
wiki.html
Success: file copied
}}}
copying a file by means of a dircap and a path to a local file that does
exist.
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp
URI:DIR2-RO:j74uhg25nwdpjpacl6rkat2yhm:kav7ijeft5h7r7rxdp5bgtlt3viv32yabqajkrdykozia5544jqa/wiki.html
newfile
Success: file copied
}}}
copying a dircap to a local directory
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp --recursive
URI:DIR2:f7q633wsw7x2fkqf3vkrdl35je:u3bcw323sqhev5lhem5qkgcwrelp63rsroh7qnzz5haorhlmqdxq
thedir
Success: files copied
}}}
(it copies the contents of the directory on the grid to {{{thedir}}})
copying a dircap to a local directory that doesn't exist
{{{
macbook-3:tahoe-761 kacarstensen$ ./bin/tahoe cp --recursive
URI:DIR2:f7q633wsw7x2fkqf3vkrdl35je:u3bcw323sqhev5lhem5qkgcwrelp63rsroh7qnzz5haorhlmqdxq
newdir
Success: files copied
}}}
(don't worry -- the files and directories I use for testing were, when not
taken from {{{tahoe cp --help}}}, generated for the purposes of the
testing, so I'm not leaking anything by not censoring caps)
From what I gather, those two errors are happening because the code in
[source:/src/allmydata/scripts/tahoe_cp.py tahoe_cp.py] isn't attempting
to deduce a destination filename within the directory to use when copying.
It doesn't have a lot to go on in the first case (since the filecap
doesn't know what its name might be), but it seems like it should be able
to infer that {{{wiki.html}}} should be the destination name in the second
case, and continue. I have a patch that implements this behavior
(complaining in the first failure case, working in the second), but I want
to test it more thoroughly before I upload it.
--
Ticket URL: <http://allmydata.org/trac/tahoe/ticket/761#comment:1>
tahoe-lafs <http://allmydata.org>
secure decentralized file storage grid
More information about the tahoe-dev
mailing list