func (s *lxcProvisionerSuite) expectStarted(c *gc.C, machine *state.Machine) string { event := <-s.events c.Assert(event.Action, gc.Equals, mock.Started) err := machine.Refresh() c.Assert(err, gc.IsNil) s.waitInstanceId(c, machine, instance.Id(event.InstanceId)) return event.InstanceId }
// waitRemoved waits for the supplied machine to be removed from state. func (s *ProvisionerSuite) waitRemoved(c *C, m *state.Machine) { s.waitMachine(c, m, func() bool { err := m.Refresh() if state.IsNotFound(err) { return true } c.Assert(err, IsNil) c.Logf("machine %v is still %s", m, m.Life()) return false }) }
// waitInstanceId waits until the supplied machine has an instance id, then // asserts it is as expected. func (s *ProvisionerSuite) waitInstanceId(c *C, m *state.Machine, expect state.InstanceId) { s.waitMachine(c, m, func() bool { err := m.Refresh() c.Assert(err, IsNil) if actual, ok := m.InstanceId(); ok { c.Assert(actual, Equals, expect) return true } c.Logf("machine %v is still unprovisioned", m) return false }) }
func (t *LiveTests) assertStartInstance(c *C, m *state.Machine) { // Wait for machine to get an instance id. for a := waitAgent.Start(); a.Next(); { err := m.Refresh() c.Assert(err, IsNil) instId, err := m.InstanceId() if err != nil { c.Assert(state.IsNotProvisionedError(err), IsTrue) continue } _, err = t.Env.Instances([]instance.Id{instId}) c.Assert(err, IsNil) return } c.Fatalf("provisioner failed to start machine after %v", waitAgent.Total) }
// assertInstanceId asserts that the machine has an instance id // that matches that of the given instance. If the instance is nil, // It asserts that the instance id is unset. func assertInstanceId(c *C, m *state.Machine, inst instance.Instance) { var wantId, gotId instance.Id var err error if inst != nil { wantId = inst.Id() } for a := waitAgent.Start(); a.Next(); { err := m.Refresh() c.Assert(err, IsNil) gotId, err = m.InstanceId() if err != nil { c.Assert(state.IsNotProvisionedError(err), IsTrue) if inst == nil { return } continue } break } c.Assert(err, IsNil) c.Assert(gotId, Equals, wantId) }
// assertInstanceId asserts that the machine has an instance id // that matches that of the given instance. If the instance is nil, // It asserts that the instance id is unset. func assertInstanceId(c *C, m *state.Machine, inst environs.Instance) { var wantId, gotId state.InstanceId var err error if inst != nil { wantId = inst.Id() } for a := waitAgent.Start(); a.Next(); { err := m.Refresh() c.Assert(err, IsNil) gotId, err = m.InstanceId() if state.IsNotFound(err) { if inst == nil { return } continue } c.Assert(err, IsNil) break } c.Assert(err, IsNil) c.Assert(gotId, Equals, wantId) }
// checkInstanceIdSet checks that the machine has an instance id // that matches that of the given instance. If the instance is nil, // It checks that the instance id is unset. func (s *ProvisionerSuite) checkInstanceId(c *C, m *state.Machine, inst environs.Instance) { // TODO(dfc) add machine.Watch() to avoid having to poll. s.State.StartSync() var instId state.InstanceId if inst != nil { instId = inst.Id() } for a := veryShortAttempt.Start(); a.Next(); { err := m.Refresh() c.Assert(err, IsNil) _, err = m.InstanceId() if state.IsNotFound(err) { if inst == nil { return } continue } c.Assert(err, IsNil) break } id, err := m.InstanceId() c.Assert(err, IsNil) c.Assert(id, Equals, instId) }