func (s *DeployLocalSuite) assertMachines(c *gc.C, service *state.Service, expectCons constraints.Value, expectIds ...string) { units, err := service.AllUnits() c.Assert(err, jc.ErrorIsNil) c.Assert(units, gc.HasLen, len(expectIds)) // first manually tell state to assign all the units for _, unit := range units { id := unit.Tag().Id() res, err := s.State.AssignStagedUnits([]string{id}) c.Assert(err, jc.ErrorIsNil) c.Assert(res[0].Error, jc.ErrorIsNil) c.Assert(res[0].Unit, gc.Equals, id) } // refresh the list of units from state units, err = service.AllUnits() c.Assert(err, jc.ErrorIsNil) c.Assert(units, gc.HasLen, len(expectIds)) unseenIds := set.NewStrings(expectIds...) for _, unit := range units { id, err := unit.AssignedMachineId() c.Assert(err, jc.ErrorIsNil) unseenIds.Remove(id) machine, err := s.State.Machine(id) c.Assert(err, jc.ErrorIsNil) cons, err := machine.Constraints() c.Assert(err, jc.ErrorIsNil) c.Assert(cons, gc.DeepEquals, expectCons) } c.Assert(unseenIds, gc.DeepEquals, set.NewStrings()) }
// assertForceMachine ensures that the result of assigning a unit with --to // is as expected. func (s *AddUnitSuite) assertForceMachine(c *gc.C, svc *state.Service, expectedNumMachines, unitNum int, machineId string) { units, err := svc.AllUnits() c.Assert(err, gc.IsNil) c.Assert(units, gc.HasLen, expectedNumMachines) mid, err := units[unitNum].AssignedMachineId() c.Assert(err, gc.IsNil) c.Assert(mid, gc.Equals, machineId) }
func removeAllUnits(c *gc.C, s *state.Service) { us, err := s.AllUnits() c.Assert(err, gc.IsNil) for _, u := range us { err = u.EnsureDead() c.Assert(err, gc.IsNil) err = u.Remove() c.Assert(err, gc.IsNil) } }
func removeServiceAndUnits(c *gc.C, service *state.Service) { // Destroy all units for the service. units, err := service.AllUnits() c.Assert(err, jc.ErrorIsNil) for _, unit := range units { err = unit.EnsureDead() c.Assert(err, jc.ErrorIsNil) err = unit.Remove() c.Assert(err, jc.ErrorIsNil) } err = service.Destroy() c.Assert(err, jc.ErrorIsNil) err = service.Refresh() c.Assert(err, jc.Satisfies, errors.IsNotFound) }
func (s *DeployLocalSuite) assertMachines(c *gc.C, service *state.Service, expectCons constraints.Value, expectIds ...string) { units, err := service.AllUnits() c.Assert(err, gc.IsNil) c.Assert(units, gc.HasLen, len(expectIds)) unseenIds := set.NewStrings(expectIds...) for _, unit := range units { id, err := unit.AssignedMachineId() c.Assert(err, gc.IsNil) unseenIds.Remove(id) machine, err := s.State.Machine(id) c.Assert(err, gc.IsNil) cons, err := machine.Constraints() c.Assert(err, gc.IsNil) c.Assert(cons, gc.DeepEquals, expectCons) } c.Assert(unseenIds, gc.DeepEquals, set.NewStrings()) }
func addRU(c *gc.C, svc *state.Service, rel *state.Relation, principal *state.Unit) (*state.Unit, *state.RelationUnit) { // Given the service svc in the relation rel, add a unit of svc and create // a RelationUnit with rel. If principal is supplied, svc is assumed to be // subordinate and the unit will be created by temporarily entering the // relation's scope as the principal. var u *state.Unit if principal == nil { unit, err := svc.AddUnit() c.Assert(err, jc.ErrorIsNil) u = unit } else { origUnits, err := svc.AllUnits() c.Assert(err, jc.ErrorIsNil) pru, err := rel.Unit(principal) c.Assert(err, jc.ErrorIsNil) err = pru.EnterScope(nil) // to create the subordinate c.Assert(err, jc.ErrorIsNil) err = pru.LeaveScope() // to reset to initial expected state c.Assert(err, jc.ErrorIsNil) newUnits, err := svc.AllUnits() c.Assert(err, jc.ErrorIsNil) for _, unit := range newUnits { found := false for _, old := range origUnits { if unit.Name() == old.Name() { found = true break } } if !found { u = unit break } } c.Assert(u, gc.NotNil) } preventUnitDestroyRemove(c, u) ru, err := rel.Unit(u) c.Assert(err, jc.ErrorIsNil) return u, ru }
func assertAllUnits(c *gc.C, service *state.Service, expected int) { units, err := service.AllUnits() c.Assert(err, jc.ErrorIsNil) c.Assert(units, gc.HasLen, expected) }