add deep-copy function to web API #203
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#203
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The web API should provide a convenient facility to do a deep copy of
everything below a given directory node. The caller should get to choose
whether the new tree is made up of mutable RW dirnodes or immutable dirnodes.
This can then be used as a primitive by higher-level applications. When a
user indicates to their agent that they want to share a folder with a friend
by dragging it from their desktop and dropping it on to their friend's icon,
the default mode can be to deep-copy this folder into an immutable tree. This
seems like it would provide the least surprising result; whereas if the
friend receives an exact reference to the original dirnode, the friend now
has write access to anything in that folder or referenced by that folder.
A different GUI action (shift-dragging or something) can be used to indicate
that the user wants to share a "live" folder, and the agent should remember
that the folder was thus shared, and mark the folder with a little "plugged
in" icon (like the old Mac AppleTalk-shared folders did.. I don't know how
they show this these days). It can also remember who you first shared it
with.
Once you have one of these read-only copies, you can make a RW deep-copy to
be able to write to it again. The act of making the copy should make it clear
that you are not setting some sort of non-existent read-write flag on the
source folder, but rather you are creating a brand new tree that just happens
to have the same files as the original.
I'm not sure what the webapi for this should be.. maybe:
POST /$URI?t=deepcopy-rw -> new-URI
POST /$URI?t=deepcopy-ro -> new-URI
although really there are three modes:
I think the second case is a waste of CPU cycles, generating RSA keys for
every node and then never using them again. On the other hand, we have to
build immutable dirnodes before the third option is available to us.
The 'tahoe backup' command is currently using readonly dirnodes, since we don't have immutable dirnodes (#607) yet. Also, this ticket is more about a webapi interface than the dirnode format.
This operation could also be used to support #835 efficiently.
I don't think the second mode mentioned in this bug's description is needed; the client can always attenuate the write cap to a read cap. But we do now have immutable dirnodes (#607) so the third mode is implementable.
add deep-copy functionto add deep-copy function to web APIWebDAV defines a COPY operation, that is essentially this deep-copy operation when the
Depth: infinity
header is specified.