[tahoe-lafs-trac-stream] [Tahoe-LAFS] #3258: The interface for the client-side storage plugin web resource has a one-to-many conflict (was: Get the client-side web resource for storage plugins from the storage object itself)
Tahoe-LAFS
trac at tahoe-lafs.org
Thu Oct 3 16:33:24 UTC 2019
#3258: The interface for the client-side storage plugin web resource has a one-to-
many conflict
-------------------------+---------------------------------------
Reporter: exarkun | Owner: exarkun
Type: defect | Status: assigned
Priority: normal | Milestone: storage economics plugins
Component: unknown | Version: n/a
Resolution: | Keywords:
Launchpad Bug: |
-------------------------+---------------------------------------
Description changed by exarkun:
Old description:
> Storage plugins can contribute to the web interface on client nodes.
> They do this by implementing
> `IFoolscapStoragePlugin.get_client_resource`. This is somewhat awkward
> to implement because it does not receive all of the same information that
> `IFoolscapStoragePlugin.get_storage_client` receives and collecting that
> information where `get_client_resource` needs to be called is challenging
> to implement.
>
> Instead, move `get_client_resource` to a new interface which the object
> returned by `get_storage_client` may provide. Then, the plugin can
> operate on all of the same information to create the web resource without
> requiring the callers of these methods to shuffle more data around
> through various layers of abstraction.
New description:
Storage plugins can contribute to the web interface on client nodes. They
do this by implementing `IFoolscapStoragePlugin.get_client_resource`.
This is somewhat awkward to implement because it does not receive all of
the same information that `IFoolscapStoragePlugin.get_storage_client`
receives and collecting that information where `get_client_resource` needs
to be called is challenging to implement.
This divergence in available information is caused by the following
conflict. `get_client_resource` is expected to return a single resource
which represents "the plugin". However, `get_storage_client` is called on
a per-server basis to get an `IStorageServer` provider specifically for
that single server. Since a Tahoe-LAFS client can be connected to many
servers, this call may be made many times to create many objects.
I don't see any way to easily simultaneously accommodate both of these
constraints.
--
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3258#comment:2>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list