launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/state/statecmd/machineconfig_test.go (about)

     1  // Copyright 2012, 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package statecmd_test
     5  
     6  import (
     7  	"fmt"
     8  	gc "launchpad.net/gocheck"
     9  	stdtesting "testing"
    10  
    11  	"launchpad.net/juju-core/environs"
    12  	envtools "launchpad.net/juju-core/environs/tools"
    13  	"launchpad.net/juju-core/instance"
    14  	"launchpad.net/juju-core/juju/testing"
    15  	"launchpad.net/juju-core/state/api/params"
    16  	"launchpad.net/juju-core/state/statecmd"
    17  	coretesting "launchpad.net/juju-core/testing"
    18  	coretools "launchpad.net/juju-core/tools"
    19  )
    20  
    21  func TestPackage(t *stdtesting.T) {
    22  	coretesting.MgoTestPackage(t)
    23  }
    24  
    25  type machineConfigSuite struct {
    26  	testing.JujuConnSuite
    27  }
    28  
    29  var _ = gc.Suite(&machineConfigSuite{})
    30  
    31  func (s *machineConfigSuite) TestMachineConfig(c *gc.C) {
    32  	addrs := []instance.Address{instance.NewAddress("1.2.3.4")}
    33  	hc := instance.MustParseHardware("mem=4G arch=amd64")
    34  	apiParams := params.AddMachineParams{
    35  		Jobs:       []params.MachineJob{params.JobHostUnits},
    36  		InstanceId: instance.Id("1234"),
    37  		Nonce:      "foo",
    38  		HardwareCharacteristics: hc,
    39  		Addrs: addrs,
    40  	}
    41  	machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
    42  	c.Assert(err, gc.IsNil)
    43  	c.Assert(len(machines), gc.Equals, 1)
    44  
    45  	machineId := machines[0].Machine
    46  	machineConfig, err := statecmd.MachineConfig(s.State, machineId, apiParams.Nonce, "")
    47  	c.Assert(err, gc.IsNil)
    48  
    49  	envConfig, err := s.State.EnvironConfig()
    50  	c.Assert(err, gc.IsNil)
    51  	env, err := environs.New(envConfig)
    52  	c.Assert(err, gc.IsNil)
    53  	stateInfo, apiInfo, err := env.StateInfo()
    54  	c.Assert(err, gc.IsNil)
    55  	c.Check(machineConfig.StateInfo.Addrs, gc.DeepEquals, stateInfo.Addrs)
    56  	c.Check(machineConfig.APIInfo.Addrs, gc.DeepEquals, apiInfo.Addrs)
    57  	c.Assert(machineConfig.Tools.URL, gc.Not(gc.Equals), "")
    58  }
    59  
    60  func (s *machineConfigSuite) TestMachineConfigNoArch(c *gc.C) {
    61  	apiParams := params.AddMachineParams{
    62  		Jobs:       []params.MachineJob{params.JobHostUnits},
    63  		InstanceId: instance.Id("1234"),
    64  		Nonce:      "foo",
    65  	}
    66  	machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
    67  	c.Assert(err, gc.IsNil)
    68  	c.Assert(len(machines), gc.Equals, 1)
    69  	_, err = statecmd.MachineConfig(s.State, machines[0].Machine, apiParams.Nonce, "")
    70  	c.Assert(err, gc.ErrorMatches, fmt.Sprintf("arch is not set for %q", "machine-"+machines[0].Machine))
    71  }
    72  
    73  func (s *machineConfigSuite) TestMachineConfigNoTools(c *gc.C) {
    74  	s.PatchValue(&envtools.DefaultBaseURL, "")
    75  	addrs := []instance.Address{instance.NewAddress("1.2.3.4")}
    76  	hc := instance.MustParseHardware("mem=4G arch=amd64")
    77  	apiParams := params.AddMachineParams{
    78  		Series:     "quantal",
    79  		Jobs:       []params.MachineJob{params.JobHostUnits},
    80  		InstanceId: instance.Id("1234"),
    81  		Nonce:      "foo",
    82  		HardwareCharacteristics: hc,
    83  		Addrs: addrs,
    84  	}
    85  	machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
    86  	c.Assert(err, gc.IsNil)
    87  	_, err = statecmd.MachineConfig(s.State, machines[0].Machine, apiParams.Nonce, "")
    88  	c.Assert(err, gc.ErrorMatches, coretools.ErrNoMatches.Error())
    89  }