Alistair Coles 71ec83f414 Ring rebalance respects co-builders' last_part_moves
- Add a CooperativeRingBuilder subclass of RingBuilder. The subclass takes
  a reference to a parent CompositeRingBuilder which is consulted about
  whether a part can be moved during rebalance. The parent builder in turn
  consults all component CooperativeRingBuilder's to decide if a part can
  be moved.

- Make CompositeRingBuilder load CooperativeRingBuilder instances.

- Add rebalance() method to CompositeRingBuilder class.

- Add a load_components() method to CompositeRingBuilder class.

- Change the CompositeRingBuilder compose() method to NOT by default
  raise a ValueError if component builders have not been modified since
  last loaded. With the load_components method being added it makes
  less sense insist by default on loaded components being modified, and
  it is desirable to have the same semantic for all methods that load
  components. Previously it has been necessary to use the 'force' flag
  with compose() to prevent these errors being raised, which has the
  unfortunate side effect of also disabling all other checks on
  component builders. A new 'require_modified' parameter is added to
  compose() which defaults to False but can be set to True if the
  previous default behaviour is required.

Change-Id: I1b30cb3d776be441346a4131007d2487a5440a81
2017-07-21 22:17:48 +01:00
..
2017-04-27 14:19:00 -07:00
2016-07-19 08:27:04 +00:00
2017-07-18 03:27:50 +00:00