bacongobbler/docker-registry-driver-swift — pull request #18 by sathlan (2014-09-17 22:13:15+00:00)
Title: Fix initial list_directory function.

docker-registry has a local database which can be queried using a simple
REST API. If you trash this database, it is supposed to be recreated
when you restart docker-registry. This fix the recreation of the db which
happens thanks to results of the the list_directory function. Previously
this was empty.

To test the problem and review the solution:

1. assuming a working swift and docker registry with swift driver installed;
2. push some images;
3. stop docker-registry;
4. check sqlalchemy_index_database in docker registry conf and "rm" the database (by default a sqlite file);
5. restart docker-registry;

With the old code the database will be empty. With the new one the db
will be filled with the already pushed images. The main problem come
from the facts that:

$ curl -i -X GET -H "X-Auth-Token: AUTH_token" 'http://localhost:8080/v1/AUTH_test/docker?prefix=lvl_1/&delimiter=/&format=json'

[{"hash": "a83a7dcf68a3dd1d83584abd8e230829", "last_modified": "2014-09-17T15:26:25.585390", "bytes": 29, "name": "lvl_1/file_2", "content_type": "application/octet-stream"}, {"subdir": "lvl_1/lvl_2/"}]

and

$ curl -i -X GET -H "X-Auth-Token: AUTH_token" 'http://localhost:8080/v1/AUTH_test/docker?path=lvl_1/&format=json'

[{"hash": "a83a7dcf68a3dd1d83584abd8e230829", "last_modified": "2014-09-17T15:26:25.585390", "bytes": 29, "name": "lvl_1/file_2", "content_type": "application/octet-stream"}]

do not return the same thing. The main difference being that the
subdirectories are not return when using the "path" syntax.

I tested with swift 1.8.0 and check that the Pseudo-hierarchical folders
and directories behaviour was the same on swift 2.2.0.

This would close #14 and #15. The "fill it if not there" mechanism is
described in this issue docker/docker-registry#516