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 }