func (s *LxcSuite) TestContainerManagerLXCClone(c *gc.C) { type test struct { releaseVersion string useClone string expectClone bool } tests := []test{{ releaseVersion: "12.04", useClone: "true", expectClone: true, }, { releaseVersion: "14.04", expectClone: true, }, { releaseVersion: "12.04", useClone: "false", }, { releaseVersion: "14.04", useClone: "false", }} for i, test := range tests { c.Logf("test %d: %v", i, test) s.PatchValue(lxc.ReleaseVersion, func() string { return test.releaseVersion }) mgr, err := lxc.NewContainerManager(container.ManagerConfig{ container.ConfigName: "juju", "use-clone": test.useClone, }) c.Assert(err, gc.IsNil) c.Check(lxc.GetCreateWithCloneValue(mgr), gc.Equals, test.expectClone) } }
func (*LxcSuite) TestManagerWarnsAboutUnknownOption(c *gc.C) { _, err := lxc.NewContainerManager(container.ManagerConfig{ container.ConfigName: "BillyBatson", "shazam": "Captain Marvel", }) c.Assert(err, gc.IsNil) c.Assert(c.GetTestLog(), jc.Contains, `WARNING juju.container unused config option: "shazam" -> "Captain Marvel"`) }
// NewContainerManager creates the appropriate container.Manager for the // specified container type. func NewContainerManager(forType instance.ContainerType, conf container.ManagerConfig, imageURLGetter container.ImageURLGetter) (container.Manager, error) { switch forType { case instance.LXC: return lxc.NewContainerManager(conf, imageURLGetter, looputil.NewLoopDeviceManager()) case instance.KVM: return kvm.NewContainerManager(conf) } return nil, errors.Errorf("unknown container type: %q", forType) }
// NewContainerManager creates the appropriate container.Manager for the // specified container type. func NewContainerManager(forType instance.ContainerType, conf container.ManagerConfig) (container.Manager, error) { switch forType { case instance.LXC: return lxc.NewContainerManager(conf) case instance.KVM: return kvm.NewContainerManager(conf) } return nil, fmt.Errorf("unknown container type: %q", forType) }
func NewLxcBroker(api APICalls, agentConfig agent.Config, managerConfig container.ManagerConfig) (environs.InstanceBroker, error) { manager, err := lxc.NewContainerManager(managerConfig) if err != nil { return nil, err } return &lxcBroker{ manager: manager, api: api, agentConfig: agentConfig, }, nil }
func (s *LxcSuite) makeManager(c *gc.C, name string) container.Manager { params := container.ManagerConfig{ container.ConfigName: name, } // Need to ensure use-clone is explicitly set to avoid it // being set based on the OS version. params["use-clone"] = fmt.Sprintf("%v", s.useClone) if s.useAUFS { params["use-aufs"] = "true" } manager, err := lxc.NewContainerManager(params) c.Assert(err, gc.IsNil) return manager }
func (s *LxcSuite) makeManager(c *gc.C, name string) container.Manager { params := container.ManagerConfig{ container.ConfigName: name, } // Need to ensure use-clone is explicitly set to avoid it // being set based on the OS version. params["use-clone"] = fmt.Sprintf("%v", s.useClone) params["log-dir"] = s.logDir if s.useAUFS { params["use-aufs"] = "true" } manager, err := lxc.NewContainerManager( params, &containertesting.MockURLGetter{}, &s.loopDeviceManager, ) c.Assert(err, jc.ErrorIsNil) return manager }
func newLxcBroker( api APICalls, agentConfig agent.Config, managerConfig container.ManagerConfig, imageURLGetter container.ImageURLGetter, enableNAT bool, defaultMTU int, ) (environs.InstanceBroker, error) { manager, err := lxc.NewContainerManager(managerConfig, imageURLGetter) if err != nil { return nil, err } return &lxcBroker{ manager: manager, api: api, agentConfig: agentConfig, enableNAT: enableNAT, defaultMTU: defaultMTU, }, nil }
func (s *localJujuTestSuite) TestDestroyRemovesContainers(c *gc.C) { env := s.testBootstrap(c, minimalConfig(c)) s.makeAgentsDir(c, env) s.PatchValue(local.CheckIfRoot, func() bool { return true }) namespace := env.Config().AllAttrs()["namespace"].(string) manager, err := lxc.NewContainerManager(container.ManagerConfig{ container.ConfigName: namespace, container.ConfigLogDir: "logdir", "use-clone": "false", }, nil, nil) c.Assert(err, jc.ErrorIsNil) machine1 := containertesting.CreateContainer(c, manager, "1") err = env.Destroy() c.Assert(err, jc.ErrorIsNil) container := s.ContainerFactory.New(string(machine1.Id())) c.Assert(container.IsConstructed(), jc.IsFalse) }
func newLxcBroker( api APICalls, agentConfig agent.Config, managerConfig container.ManagerConfig, imageURLGetter container.ImageURLGetter, enableNAT bool, defaultMTU int, ) (environs.InstanceBroker, error) { namespace := maybeGetManagerConfigNamespaces(managerConfig) manager, err := lxc.NewContainerManager( managerConfig, imageURLGetter, looputil.NewLoopDeviceManager(), ) if err != nil { return nil, err } return &lxcBroker{ manager: manager, namespace: namespace, api: api, agentConfig: agentConfig, enableNAT: enableNAT, defaultMTU: defaultMTU, }, nil }