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