auto prune WIP

This commit is contained in:
Victor Vieux 2013-05-29 17:27:32 +00:00
parent 94f0d478de
commit 7e92302c4f
1 changed files with 17 additions and 5 deletions

View File

@ -749,11 +749,23 @@ func (srv *Server) ImageDelete(name string) error {
} }
return nil return nil
} }
if err := srv.runtime.graph.Delete(img.Id); err != nil { parents, _ := img.History()
return fmt.Errorf("Error deleting image %s: %s", name, err.Error()) for _, parent := range parents {
} byParent, _ = srv.runtime.graph.ByParent()
if err := srv.runtime.repositories.Delete(name, tag, img.Id); err != nil { //stop if image has children
return err if _, exists := byParent[parent.Id]; exists {
break
}
//stop if image is tagged and it is not the first image we delete
if _, hasTags := srv.runtime.repositories.ById()[parent.Id]; hasTags && img.Id != parent.Id {
break
}
if err := srv.runtime.graph.Delete(parent.Id); err != nil {
return fmt.Errorf("Error deleting image %s: %s", name, err.Error())
}
if err := srv.runtime.repositories.Delete(name, tag, img.Id); err != nil {
return err
}
} }
return nil return nil
} }