github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/container/testing/common.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package testing 5 6 import ( 7 "io/ioutil" 8 9 jc "github.com/juju/testing/checkers" 10 "github.com/juju/version" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/cloudconfig/instancecfg" 14 "github.com/juju/juju/container" 15 "github.com/juju/juju/core/constraints" 16 "github.com/juju/juju/core/status" 17 "github.com/juju/juju/environs/imagemetadata" 18 "github.com/juju/juju/environs/instances" 19 jujutesting "github.com/juju/juju/juju/testing" 20 "github.com/juju/juju/testing" 21 "github.com/juju/juju/tools" 22 ) 23 24 func MockMachineConfig(machineId string) (*instancecfg.InstanceConfig, error) { 25 26 apiInfo := jujutesting.FakeAPIInfo(machineId) 27 instanceConfig, err := instancecfg.NewInstanceConfig(testing.ControllerTag, machineId, "fake-nonce", imagemetadata.ReleasedStream, "quantal", apiInfo) 28 if err != nil { 29 return nil, err 30 } 31 err = instanceConfig.SetTools(tools.List{ 32 &tools.Tools{ 33 Version: version.MustParseBinary("2.3.4-quantal-amd64"), 34 URL: "http://tools.testing.invalid/2.3.4-quantal-amd64.tgz", 35 }, 36 }) 37 if err != nil { 38 return nil, err 39 } 40 41 return instanceConfig, nil 42 } 43 44 func CreateContainer(c *gc.C, manager container.Manager, machineId string) instances.Instance { 45 instanceConfig, err := MockMachineConfig(machineId) 46 c.Assert(err, jc.ErrorIsNil) 47 return CreateContainerWithMachineConfig(c, manager, instanceConfig) 48 } 49 50 func CreateContainerWithMachineConfig( 51 c *gc.C, 52 manager container.Manager, 53 instanceConfig *instancecfg.InstanceConfig, 54 ) instances.Instance { 55 56 networkConfig := container.BridgeNetworkConfig("nic42", 0, nil) 57 storageConfig := &container.StorageConfig{} 58 return CreateContainerWithMachineAndNetworkAndStorageConfig(c, manager, instanceConfig, networkConfig, storageConfig) 59 } 60 61 func CreateContainerWithMachineAndNetworkAndStorageConfig( 62 c *gc.C, 63 manager container.Manager, 64 instanceConfig *instancecfg.InstanceConfig, 65 networkConfig *container.NetworkConfig, 66 storageConfig *container.StorageConfig, 67 ) instances.Instance { 68 69 callback := func(settableStatus status.Status, info string, data map[string]interface{}) error { return nil } 70 inst, hardware, err := manager.CreateContainer(instanceConfig, constraints.Value{}, "quantal", networkConfig, storageConfig, callback) 71 c.Assert(err, jc.ErrorIsNil) 72 c.Assert(hardware, gc.NotNil) 73 c.Assert(hardware.String(), gc.Not(gc.Equals), "") 74 return inst 75 } 76 77 func AssertCloudInit(c *gc.C, filename string) []byte { 78 c.Assert(filename, jc.IsNonEmptyFile) 79 data, err := ioutil.ReadFile(filename) 80 c.Assert(err, jc.ErrorIsNil) 81 c.Assert(string(data), jc.HasPrefix, "#cloud-config\n") 82 return data 83 }