Story #7832: [EPIC] As a user, I have Alternate Content Sources
Implement ACS stage in download
Assume that an ACS "refresh" has already occurred and that ACS has 3 "paths". At this point the following will have occurred:
- The user had created the remote and ACS
- The 3 hidden repos (one for each path) will have been created
- The refresh will create lots of Content objects associated with each hidden repo and lots of RemoteArtifacts (but no actual artifacts)
Now the user is syncing some other repo. If the ACS had created a Content + Remote Artifact that is present in the repository the user is syncing, the ACS's RemoteArtifact and Remote should be used instead of the Remote the user is providing for the sync.
Create a new stage that will download Artifacts from ACS sources named
ACSArtifactHandler. This will come just before the
ArtifactDownloader stage so there is an opportunity to modify the data the
ArtifactDownloader stage will use for downloading.
For each not-yet-downloaded Artifact, the
ACSArtifactHandler stage will determine if there is an ACS-created
RemoteArtifact that already exists. If so, it should use that RemoteArtifact for downloading. It should do this by modifying the DeclarativeArtifact so that when the
ArtifactDownloader here calls
d_artifact.download() it will use the ACS downloader.