Changes between Initial Version and Version 2 of Ticket #3258


Ignore:
Timestamp:
2019-10-03T16:33:24Z (5 years ago)
Author:
exarkun
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #3258

    • Property Owner set to exarkun
    • Property Status changed from new to assigned
    • Property Summary changed from Get the client-side web resource for storage plugins from the storage object itself to The interface for the client-side storage plugin web resource has a one-to-many conflict
  • Ticket #3258 – Description

    initial v2  
    11Storage 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.
    22
    3 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.
     3This 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.
     4
     5I don't see any way to easily simultaneously accommodate both of these constraints.