|
@@ -1,8 +1,6 @@
|
|
package daemon
|
|
package daemon
|
|
|
|
|
|
-import (
|
|
|
|
- "github.com/docker/docker/engine"
|
|
|
|
-)
|
|
|
|
|
|
+import "github.com/docker/docker/engine"
|
|
|
|
|
|
func (daemon *Daemon) ContainerRename(job *engine.Job) engine.Status {
|
|
func (daemon *Daemon) ContainerRename(job *engine.Job) engine.Status {
|
|
if len(job.Args) != 2 {
|
|
if len(job.Args) != 2 {
|
|
@@ -26,9 +24,21 @@ func (daemon *Daemon) ContainerRename(job *engine.Job) engine.Status {
|
|
|
|
|
|
container.Name = newName
|
|
container.Name = newName
|
|
|
|
|
|
|
|
+ undo := func() {
|
|
|
|
+ container.Name = oldName
|
|
|
|
+ daemon.reserveName(container.ID, oldName)
|
|
|
|
+ daemon.containerGraph.Delete(newName)
|
|
|
|
+ }
|
|
|
|
+
|
|
if err := daemon.containerGraph.Delete(oldName); err != nil {
|
|
if err := daemon.containerGraph.Delete(oldName); err != nil {
|
|
|
|
+ undo()
|
|
return job.Errorf("Failed to delete container %q: %v", oldName, err)
|
|
return job.Errorf("Failed to delete container %q: %v", oldName, err)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if err := container.toDisk(); err != nil {
|
|
|
|
+ undo()
|
|
|
|
+ return job.Error(err)
|
|
|
|
+ }
|
|
|
|
+
|
|
return engine.StatusOK
|
|
return engine.StatusOK
|
|
}
|
|
}
|