Links v2: Remove the graphdb. Replace with code and json structure.

This is a rewrite of the graphdb and replaces all naming and aliasing functionality. The new architecture is called a "container index" and was based 

**Bugs**: notably `docker ps -a` from earlier versions will panic if there are containers to list, because of a string handling bug. I really don't want to lose this patch over this, so suggestions for a workable fix are welcome.

More patches will likely need to be filed to deal with alias management and links. The focus here is to replace graphdb in a backwards-compatible fashion.

This code still imports graphdb for the purposes of the migrating data from one format to another. At some point this code should be removed, maybe in 1.5 or 1.6. It will improve build time dramatically. :)

The migration is not tested but many other features are. Tests for the index itself are largely a side-effect of the integration-cli tests and other integrations.

Many tests were rewritten to accommodate the new naming system (which contains no syntax) but otherwise are unchanged to preserve the tests. In a few minor cases tests were removed because they were no longer relevant, e.g., tests that turn the links structure into a graphdb path and then test that path.

Don't merge this until links is completely ready. Please let me know if you have any other questions.


Because we need to wrap it in a lock?

On Sep 22, 2014, at 12:40 PM, Alexandr Morozov <notifications@github.com> wrote:

> In daemon/index.go:
> 
> > +		return err
> > +	}
> > +
> > +	f.Write(content)
> > +	f.Close()
> > +
> > +	// this should be atomic enough, plus the lock at the top, but it might race on a restart.
> > +	os.Remove(c.indexPath) // ignore the error in case the file doesn't exist.
> > +	if err := os.Link(f.Name(), c.indexPath); err != nil {
> > +		return err
> > +	}
> > +
> > +	return nil
> > +}
> > +
> > +func (c *containerIndex) Add(cont *Container) error {
> Why? :)
> 
> —
> Reply to this email directly or view it on GitHub.
>