github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/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/constraints"
    15  	"github.com/juju/juju/container"
    16  	"github.com/juju/juju/environs/imagemetadata"
    17  	"github.com/juju/juju/instance"
    18  	jujutesting "github.com/juju/juju/juju/testing"
    19  	"github.com/juju/juju/status"
    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) instance.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  ) instance.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  ) instance.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  }