15
15
"launchpad.net/juju-core/juju/testing"
16
16
"launchpad.net/juju-core/state"
17
17
"launchpad.net/juju-core/state/api"
18
commontesting "launchpad.net/juju-core/state/api/common/testing"
19
18
"launchpad.net/juju-core/state/api/params"
20
19
"launchpad.net/juju-core/state/api/provisioner"
20
apitesting "launchpad.net/juju-core/state/api/testing"
21
21
statetesting "launchpad.net/juju-core/state/testing"
22
22
coretesting "launchpad.net/juju-core/testing"
23
23
"launchpad.net/juju-core/tools"
55
56
c.Assert(err, gc.IsNil)
56
57
s.st = s.OpenAPIAsMachine(c, s.machine.Tag(), password, "fake_nonce")
57
58
c.Assert(s.st, gc.NotNil)
59
err = s.machine.SetAddresses(instance.NewAddresses([]string{"0.1.2.3"}))
60
c.Assert(err, gc.IsNil)
59
62
// Create the provisioner API facade.
60
63
s.provisioner = s.st.Provisioner()
61
64
c.Assert(s.provisioner, gc.NotNil)
63
s.EnvironWatcherTest = commontesting.NewEnvironWatcherTest(s.provisioner, s.State, s.BackingState, commontesting.HasSecrets)
66
s.EnvironWatcherTests = apitesting.NewEnvironWatcherTests(s.provisioner, s.BackingState, apitesting.HasSecrets)
67
s.APIAddresserTests = apitesting.NewAPIAddresserTests(s.provisioner, s.BackingState)
66
70
func (s *provisionerSuite) TestMachineTagAndId(c *gc.C) {
84
88
c.Assert(status, gc.Equals, params.StatusPending)
85
89
c.Assert(info, gc.Equals, "")
87
err = apiMachine.SetStatus(params.StatusStarted, "blah")
91
err = apiMachine.SetStatus(params.StatusStarted, "blah", nil)
88
92
c.Assert(err, gc.IsNil)
90
94
status, info, err = apiMachine.Status()
91
95
c.Assert(err, gc.IsNil)
92
96
c.Assert(status, gc.Equals, params.StatusStarted)
93
97
c.Assert(info, gc.Equals, "blah")
98
_, _, data, err := s.machine.Status()
99
c.Assert(err, gc.IsNil)
100
c.Assert(data, gc.HasLen, 0)
103
func (s *provisionerSuite) TestGetSetStatusWithData(c *gc.C) {
104
apiMachine, err := s.provisioner.Machine(s.machine.Tag())
105
c.Assert(err, gc.IsNil)
107
err = apiMachine.SetStatus(params.StatusError, "blah", params.StatusData{"foo": "bar"})
108
c.Assert(err, gc.IsNil)
110
status, info, err := apiMachine.Status()
111
c.Assert(err, gc.IsNil)
112
c.Assert(status, gc.Equals, params.StatusError)
113
c.Assert(info, gc.Equals, "blah")
114
_, _, data, err := s.machine.Status()
115
c.Assert(err, gc.IsNil)
116
c.Assert(data, gc.DeepEquals, params.StatusData{"foo": "bar"})
119
func (s *provisionerSuite) TestMachinesWithTransientErrors(c *gc.C) {
120
machine, err := s.State.AddMachine("quantal", state.JobHostUnits)
121
c.Assert(err, gc.IsNil)
122
err = machine.SetStatus(params.StatusError, "blah", params.StatusData{"transient": true})
123
c.Assert(err, gc.IsNil)
124
machines, info, err := s.provisioner.MachinesWithTransientErrors()
125
c.Assert(err, gc.IsNil)
126
c.Assert(machines, gc.HasLen, 1)
127
c.Assert(machines[0].Id(), gc.Equals, "1")
128
c.Assert(info, gc.HasLen, 1)
129
c.Assert(info[0], gc.DeepEquals, params.StatusResult{
134
Data: params.StatusData{"transient": true},
96
138
func (s *provisionerSuite) TestEnsureDeadAndRemove(c *gc.C) {
338
380
c.Assert(addresses, gc.DeepEquals, stateAddresses)
341
func (s *provisionerSuite) TestAPIAddresses(c *gc.C) {
342
err := s.machine.SetAddresses([]instance.Address{
343
instance.NewAddress("0.1.2.3"),
345
c.Assert(err, gc.IsNil)
347
apiAddresses, err := s.State.APIAddressesFromMachines()
348
c.Assert(err, gc.IsNil)
350
addresses, err := s.provisioner.APIAddresses()
351
c.Assert(err, gc.IsNil)
352
c.Assert(addresses, gc.DeepEquals, apiAddresses)
355
383
func (s *provisionerSuite) TestContainerConfig(c *gc.C) {
356
384
result, err := s.provisioner.ContainerConfig()
357
385
c.Assert(err, gc.IsNil)
360
388
c.Assert(result.SSLHostnameVerification, jc.IsTrue)
363
func (s *provisionerSuite) TestCACert(c *gc.C) {
364
caCert, err := s.provisioner.CACert()
365
c.Assert(err, gc.IsNil)
366
c.Assert(caCert, gc.DeepEquals, s.State.CACert())
369
391
func (s *provisionerSuite) TestToolsWrongMachine(c *gc.C) {
370
392
tools, err := s.provisioner.Tools("42")
371
393
c.Assert(err, gc.ErrorMatches, "permission denied")