github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/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/network" 16 "github.com/juju/juju/state/api/params" 17 "github.com/juju/juju/state/apiserver/client" 18 coretools "github.com/juju/juju/tools" 19 ) 20 21 type machineConfigSuite struct { 22 testing.JujuConnSuite 23 } 24 25 var _ = gc.Suite(&machineConfigSuite{}) 26 27 func (s *machineConfigSuite) TestMachineConfig(c *gc.C) { 28 addrs := []network.Address{network.NewAddress("1.2.3.4", network.ScopeUnknown)} 29 hc := instance.MustParseHardware("mem=4G arch=amd64") 30 apiParams := params.AddMachineParams{ 31 Jobs: []params.MachineJob{params.JobHostUnits}, 32 InstanceId: instance.Id("1234"), 33 Nonce: "foo", 34 HardwareCharacteristics: hc, 35 Addrs: addrs, 36 } 37 machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams}) 38 c.Assert(err, gc.IsNil) 39 c.Assert(len(machines), gc.Equals, 1) 40 41 machineId := machines[0].Machine 42 machineConfig, err := client.MachineConfig(s.State, machineId, apiParams.Nonce, "") 43 c.Assert(err, gc.IsNil) 44 45 envConfig, err := s.State.EnvironConfig() 46 c.Assert(err, gc.IsNil) 47 env, err := environs.New(envConfig) 48 c.Assert(err, gc.IsNil) 49 stateInfo, apiInfo, err := env.StateInfo() 50 c.Assert(err, gc.IsNil) 51 c.Check(machineConfig.StateInfo.Addrs, gc.DeepEquals, stateInfo.Addrs) 52 c.Check(machineConfig.APIInfo.Addrs, gc.DeepEquals, apiInfo.Addrs) 53 c.Assert(machineConfig.Tools.URL, gc.Not(gc.Equals), "") 54 } 55 56 func (s *machineConfigSuite) TestMachineConfigNoArch(c *gc.C) { 57 apiParams := params.AddMachineParams{ 58 Jobs: []params.MachineJob{params.JobHostUnits}, 59 InstanceId: instance.Id("1234"), 60 Nonce: "foo", 61 } 62 machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams}) 63 c.Assert(err, gc.IsNil) 64 c.Assert(len(machines), gc.Equals, 1) 65 _, err = client.MachineConfig(s.State, machines[0].Machine, apiParams.Nonce, "") 66 c.Assert(err, gc.ErrorMatches, fmt.Sprintf("arch is not set for %q", "machine-"+machines[0].Machine)) 67 } 68 69 func (s *machineConfigSuite) TestMachineConfigNoTools(c *gc.C) { 70 s.PatchValue(&envtools.DefaultBaseURL, "") 71 addrs := []network.Address{network.NewAddress("1.2.3.4", network.ScopeUnknown)} 72 hc := instance.MustParseHardware("mem=4G arch=amd64") 73 apiParams := params.AddMachineParams{ 74 Series: "quantal", 75 Jobs: []params.MachineJob{params.JobHostUnits}, 76 InstanceId: instance.Id("1234"), 77 Nonce: "foo", 78 HardwareCharacteristics: hc, 79 Addrs: addrs, 80 } 81 machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams}) 82 c.Assert(err, gc.IsNil) 83 _, err = client.MachineConfig(s.State, machines[0].Machine, apiParams.Nonce, "") 84 c.Assert(err, gc.ErrorMatches, coretools.ErrNoMatches.Error()) 85 }