Created on 29 March 2021, over 3 years ago
Updated 15 February 2023, almost 2 years ago

Problem/Motivation

  • A number of useful requests require a re-think of how this module is structured
  • There are inefficiencies in the code that could be greatly improved upon, making it easier for developers to extend the module for their own purposes.

Proposed resolution

Create a new 4.x version using the bones of 8.x-3.x with the following changes:

  1. New S3fsBucketType plugin type (step too far? Figure this way we - or the dev using it - can make small adjustments for things like MinIO by extending a plugin and making edits)
  2. New S3fsAwsBucket plugin - easy to configure, hides a bunch of the customisation options
  3. New S3fsCustomBucket plugin - shows the more complex customisation options such as custom host (required)
  4. Config becomes config entity S3fsBucket; adjust settings forms appropriately, including choice of plugin
  5. Tightly integrate config entities with Key module for safe key storage if not using EC2 profile creds
  6. New S3fsStreamWrapperFactory to build stream wrappers out of config/plugins at runtime
  7. Move all caching out of the stream wrapper into base and child plugins where appropriate
  8. Expose internal read/write/(more?) API endpoints on S3fs service so developers can:
    • inject the service into their module
    • set the plugin to be used
    • read/write/(?) directly via the service without having to mess with streamwrappers

Configuration that isn’t bucket-specific:

  • Bucket and path for public file stream
  • Bucket and path for private file stream

Remaining tasks

Gather feedback
Set up 4.x branch
Create new version including tests
Review / adjust until ready
Release

User interface changes

Many, particularly around configuration.

API changes

Internal APIs will be explicitly described rather than just searching for public methods

Data model changes

Complete restructure of configuration data.
May need assistance with upgrade path.

πŸ“Œ Task
Status

Fixed

Version

4.0

Component

Code

Created by

πŸ‡¦πŸ‡ΊAustralia darvanen Sydney, Australia

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • @cmlara opened merge request.
  • πŸ‡ΊπŸ‡ΈUnited States cmlara

    I think I'm happy with this as a base.

    There is still a decent amount of work to do, a few more plugins are needed to meet the goal of easier deployments, API cleanup may still be needed, I want to clear up a lot of phpstan warnings, this needs a phpcs run over, docblocks may need some work, a few bugs might still need to be ported forward from 3.x, additional testing could be useful, might want to reorganize class locations, etc.

    That said I think this is a solid base to start working with for a 4.x branch. and everything else can be handled as its own issues.

    Opened the MR so that tests can run against the current code and inline comments can be added if desired.

    This is a sizeable MR considering its essentially an overhaul and likely not the easiest to review. I'm not expecting this to be "lets tag the first alpha" code on its own however it also is not code that is non functioning either.

  • Status changed to Needs review almost 2 years ago
  • πŸ‡ΊπŸ‡ΈUnited States cmlara

    Forgot to set NR to trigger DrupalCi.

    • cmlara β†’ committed 9c089f3b on 4.0.x
      Issue #3206162 by cmlara, darvanen, rivimey, alfaguru, larowlan,...
  • Status changed to Fixed almost 2 years ago
  • πŸ‡ΊπŸ‡ΈUnited States cmlara

    Merged into 4.0.x branch to allow this to be our base to work with.
    -- Side note: I will probably move to a 4.x mainline dev branch when we have 4.1.0 plans, however for now I will keep the existing 4.0.x as the target to avoid having to sync multiple branches. branches

    Updating the Git Default branch to become the new target for future development

    I will create followup tasks for the issues I can already think of that I want to see work done for and any new tasks as they come up. Assistance is always appreciated to move them forward.

    Thank you all for the assistance and input in helping to overcome the design and implementation challenges for this conversion.

  • Automatically closed - issue fixed for 2 weeks with no activity.

Production build 0.71.5 2024