github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/container/lxc/initialisation.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package lxc 5 6 import ( 7 "github.com/juju/utils/apt" 8 9 "github.com/juju/juju/container" 10 ) 11 12 var requiredPackages = []string{ 13 "lxc", 14 "cloud-image-utils", 15 } 16 17 type containerInitialiser struct { 18 series string 19 } 20 21 // containerInitialiser implements container.Initialiser. 22 var _ container.Initialiser = (*containerInitialiser)(nil) 23 24 // NewContainerInitialiser returns an instance used to perform the steps 25 // required to allow a host machine to run a LXC container. 26 func NewContainerInitialiser(series string) container.Initialiser { 27 return &containerInitialiser{series} 28 } 29 30 // Initialise is specified on the container.Initialiser interface. 31 func (ci *containerInitialiser) Initialise() error { 32 return ensureDependencies(ci.series) 33 } 34 35 // ensureDependencies creates a set of install packages using AptGetPreparePackages 36 // and runs each set of packages through AptGetInstall 37 func ensureDependencies(series string) error { 38 var err error 39 aptGetInstallCommandList := apt.GetPreparePackages(requiredPackages, series) 40 for _, commands := range aptGetInstallCommandList { 41 err = apt.GetInstall(commands...) 42 if err != nil { 43 return err 44 } 45 } 46 return err 47 }