func (manager *containerManager) DestroyContainer(id instance.Id) error { start := time.Now() name := string(id) lxcContainer := LxcObjectFactory.New(name) if useRestartDir() { // Remove the autostart link. if err := os.Remove(restartSymlink(name)); err != nil { logger.Errorf("failed to remove restart symlink: %v", err) return err } } // Detach loop devices backed by files inside the container's rootfs. rootfs := filepath.Join(LxcContainerDir, name, "rootfs") if err := manager.loopDeviceManager.DetachLoopDevices(rootfs, "/"); err != nil { logger.Errorf("failed to detach loop devices from lxc container: %v", err) return err } if err := lxcContainer.Destroy(); err != nil { logger.Errorf("failed to destroy lxc container: %v", err) return err } err := container.RemoveDirectory(name) logger.Tracef("container %q stopped: %v", name, time.Now().Sub(start)) return err }
func (s *DirectorySuite) TestRemoveContainerDir(c *gc.C) { dir, err := container.NewDirectory("testing") c.Assert(err, jc.ErrorIsNil) err = container.RemoveDirectory("testing") c.Assert(err, jc.ErrorIsNil) c.Assert(dir, jc.DoesNotExist) c.Assert(filepath.Join(s.removedDir, "testing"), jc.IsDirectory) }
func (manager *containerManager) DestroyContainer(id instance.Id) error { name := string(id) kvmContainer := KvmObjectFactory.New(name) if err := kvmContainer.Stop(); err != nil { logger.Errorf("failed to stop kvm container: %v", err) return err } return container.RemoveDirectory(name) }
func (s *DirectorySuite) TestRemoveContainerDirWithClash(c *gc.C) { dir, err := container.NewDirectory("testing") c.Assert(err, jc.ErrorIsNil) clash := filepath.Join(s.removedDir, "testing") err = os.MkdirAll(clash, 0755) c.Assert(err, jc.ErrorIsNil) err = container.RemoveDirectory("testing") c.Assert(err, jc.ErrorIsNil) c.Assert(dir, jc.DoesNotExist) c.Assert(filepath.Join(s.removedDir, "testing.1"), jc.IsDirectory) }
func (manager *containerManager) DestroyContainer(id instance.Id) error { start := time.Now() name := string(id) lxcContainer := LxcObjectFactory.New(name) if useRestartDir() { // Remove the autostart link. if err := os.Remove(restartSymlink(name)); err != nil { logger.Errorf("failed to remove restart symlink: %v", err) return err } } if err := lxcContainer.Destroy(); err != nil { logger.Errorf("failed to destroy lxc container: %v", err) return err } err := container.RemoveDirectory(name) logger.Tracef("container %q stopped: %v", name, time.Now().Sub(start)) return err }