I’ve stripped out the old implementation and wired the Index controller to the Registry api. The Registry implementation now provides an Iteratee that can consume the body for uploads of layers, json, etc and these are used as the body parsers in the controller.
Started stripping out the index handling that delegates to docker.io in preparation for creating a purely private index.
Changed the name of ImageController to RegistryController
Re-named Repositories to IndexController
Renamed IndexService to Index
Don't mkdirs when creating file output streams as this makes the intended file a directory
Beefed up the logging and error handling in the ancestry builder
Fixed the ancestry builder
Using rhinofly play-s3 library to make REST calls to S3. GETs on the registry now stream from S3
Using multi-part upload to push to S3
Can now push and pull images. Still need to use S3 for the index
Started implementing the S3Index. Compiles but doesn't yet fully work.
Now successfully pushing the repository images file to S3
Now able to write tags to the s3 repo
Changed the config of the registry and index root paths so that file and s3 based registries have different sections in the config file.
Now seems to be fully working with S3!
Changed the conf file to pull the AWS access key and secret from the environment
Fixed sed command in build
Parameterised the storage type so you can choose between file and s3 in the conf file. Haven’t yet completed adapting LocalRegistry to implement the Registry interface.
Tidying up and refactoring