[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