-
Notifications
You must be signed in to change notification settings - Fork 1
Description
User Story: Delivery of a POC that can showcase the interaction of a Downloading and Uploading Plugin that interchange arbitrarily large (multiple gigabytes) of data locally (between two binaries) organized through an orchestrating core binary (this will later be OCM core).
Description:
As an OCM Ecosystem Developer, I want to have an easy to understand but also non-prohibitive way of including new access methods into OCM without having to contribute into the big OCM core.
To kickstart our ADR generation for the Plugin System, we should drive a POC that showcases how we can work with component versions in the future. We want to get rid of a monolithic system that forces people to understand the entirety of the OCM library and as such, the new binary system will kickstart a completely new version of OCM.
This POC should give the baseline of driving the ADR forwards for the new plugin system and should answer the following questions:
- How do we make uploader and OCM repositories interact with each other so that plugins don’t need to access other plugins? AKA does all data flow need to go through the orchestrator?
- We need a prototype that can showcase the reading of a component descriptor and interpreting both a correct uploader and downloader plugin and then establishing a byte stream from download to upload. We should start with CTFs and OCI. => The POC should have uploaders and downloaders from and to CTFs and OCI repositories.
- We need a dynamic serialization system for type discovery => We should copy/clone the idea of current OCM and make the type system / decoder / encoder system work the same way for registrations (see compdesc package, v2 only)
- We need a stable plugin system base and we should try out hashicorps plugin system because it allows for versioned plugins already (but if that turns out to be a wrong start because of complications, feel free to go back to a more basic system such as the one implemented in the current plugin approach)
Acceptance criteria:
- A CTF repository with a valid component version with basic attributes needs to be uploadable to an OCI registry. The syntax form of
<REPO>//<Component>:<Version>should still work - An OCI repository with a valid compoent version should be downloadable to a CTF
- The Uploader and Downloader for CTF (local files) and OCI should be in separate go modules and have 2 binaries
- The Uploader and Downloader for CTF and OCI should be selected based on the OCM Repository Type for the descriptor as well as the Access Type for resources
- The Uploader and Downloader for OCI and CTF should not communicate with each other and not have codependencies
- The Uploader and Downloader should not have to be forked as binaries N times for N resources. One transfer should trigger the start of a plugin once, even if it has many resources or descriptors.
- Credentials should be centrally discovered from the OCM configuration file and be passed securely to the plugin so that they cannot be intercepted
Related issues:
Sub-issues
Metadata
Metadata
Assignees
Labels
Type
Projects
Status