mirror of
https://github.com/clearlinux/docker.git
synced 2026-10-04 15:58:39 +00:00
prevent default name to be deleted and return an error on invalid link
This commit is contained in:
@@ -979,34 +979,39 @@ func (srv *Server) ContainerRestart(name string, t int) error {
|
||||
}
|
||||
|
||||
func (srv *Server) ContainerDestroy(name string, removeVolume, removeLink bool) error {
|
||||
container := srv.runtime.Get(name)
|
||||
|
||||
if removeLink {
|
||||
p := name
|
||||
if p[0] != '/' {
|
||||
p = "/" + p
|
||||
}
|
||||
parent, n := path.Split(p)
|
||||
l := len(parent)
|
||||
if parent[l-1] == '/' {
|
||||
parent = parent[:l-1]
|
||||
if container == nil {
|
||||
return fmt.Errorf("No such link: %s", name)
|
||||
}
|
||||
name = srv.runtime.getFullName(name)
|
||||
|
||||
parent, n := path.Split(name)
|
||||
|
||||
pe := srv.runtime.containerGraph.Get(parent)
|
||||
parentContainer := srv.runtime.Get(pe.ID())
|
||||
if pe != nil {
|
||||
parentContainer := srv.runtime.Get(pe.ID())
|
||||
|
||||
if parentContainer != nil && parentContainer.activeLinks != nil {
|
||||
if link, exists := parentContainer.activeLinks[n]; exists {
|
||||
link.Disable()
|
||||
} else {
|
||||
utils.Debugf("Could not find active link for %s", name)
|
||||
if parentContainer != nil && parentContainer.activeLinks != nil {
|
||||
if link, exists := parentContainer.activeLinks[n]; exists {
|
||||
link.Disable()
|
||||
} else {
|
||||
utils.Debugf("Could not find active link for %s", name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if name[1:] == container.ID {
|
||||
return fmt.Errorf("Conflict, cannot remove default link %s", name)
|
||||
}
|
||||
|
||||
if err := srv.runtime.containerGraph.Delete(name); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if container := srv.runtime.Get(name); container != nil {
|
||||
if container != nil {
|
||||
if container.State.Running {
|
||||
return fmt.Errorf("Impossible to remove a running container, please stop it first")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user