1
// Copyright 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
10
"github.com/juju/loggo"
11
"github.com/juju/utils"
15
logger = loggo.GetLogger("juju.container")
16
ContainerDir = "/var/lib/juju/containers"
17
RemovedContainerDir = "/var/lib/juju/removed-containers"
20
// NewDirectory creates a new directory for the container name in the
21
// directory identified by `ContainerDir`.
22
func NewDirectory(containerName string) (directory string, err error) {
23
directory = dirForName(containerName)
24
logger.Tracef("create directory: %s", directory)
25
if err = os.MkdirAll(directory, 0755); err != nil {
26
logger.Errorf("failed to create container directory: %v", err)
32
// RemoveDirectory moves the container directory from `ContainerDir`
33
// to `RemovedContainerDir` and makes sure that the names don't clash.
34
func RemoveDirectory(containerName string) error {
35
// Move the directory.
36
logger.Tracef("create old container dir: %s", RemovedContainerDir)
37
if err := os.MkdirAll(RemovedContainerDir, 0755); err != nil {
38
logger.Errorf("failed to create removed container directory: %v", err)
41
removedDir, err := utils.UniqueDirectory(RemovedContainerDir, containerName)
43
logger.Errorf("was not able to generate a unique directory: %v", err)
46
if err := os.Rename(dirForName(containerName), removedDir); err != nil {
47
logger.Errorf("failed to rename container directory: %v", err)
54
func dirForName(containerName string) string {
55
return filepath.Join(ContainerDir, containerName)