Also
- hide the internal representation of Ip4Address and BitArray;
- persist temporary reservations to a file;
- allow logging inside functions that atomically modify an IORef.

Petr Pudlak (18):
  Abstract WConfd resources that need to be saved/loaded
  Add JSON instances for temporary reservation data structures
  Persist temporary reservations in WConfd
  Hide the implementation of Ip4Address
  Add module for implementing bit arrays in Haskell
  mapMOf2: traversing a lens over a monad + applicative
  Replace AddressPool with directly working with Network
  An lens-like utility function for accessing a Container
  Ensure that temp.res. functions throw ReservationError
  Refactor and add utility functions for temp. reservations
  Add functions for temporary reservations of IP addresses
  Add an alias for WriterLogT Identity
  Atomic updates of an IORef with logging and errors
  Enhance functions for modifying the configuration in WConfd
  Expose IP reservations through WConfd RPC
  Let config.py call WConfd for IP reservations
  Move old reservation code to Python tests
  Add basic serialization tests for TempRes's data types

 Makefile.am                               |  10 +-
 lib/config.py                             |  90 ++++-------
 src/Ganeti/Constants.hs                   |  13 ++
 src/Ganeti/JSON.hs                        |  13 ++
 src/Ganeti/Lens.hs                        |   9 +-
 src/Ganeti/Locking/Locks.hs               |  41 +----
 src/Ganeti/Logging/WriterLog.hs           |  23 +++
 src/Ganeti/Network.hs                     | 220 +++++++++++++++++++-------
 src/Ganeti/Objects.hs                     |  73 ++++++---
 src/Ganeti/Objects/BitArray.hs            | 153 ++++++++++++++++++
 src/Ganeti/Path.hs                        |   5 +
 src/Ganeti/Query/Network.hs               |  12 +-
 src/Ganeti/Utils/IORef.hs                 |  20 +++
 src/Ganeti/Utils/MultiMap.hs              |   5 +
 src/Ganeti/WConfd/ConfigWriter.hs         |   2 +-
 src/Ganeti/WConfd/Core.hs                 |  51 +++++-
 src/Ganeti/WConfd/DeathDetection.hs       |   7 +-
 src/Ganeti/WConfd/Monad.hs                |  72 +++++++--
 src/Ganeti/WConfd/Persistent.hs           | 126 +++++++++++++++
 src/Ganeti/WConfd/Server.hs               |  21 +--
 src/Ganeti/WConfd/TempRes.hs              | 249 +++++++++++++++++++++++++-----
 test/hs/Test/Ganeti/Network.hs            | 100 +++---------
 test/hs/Test/Ganeti/Objects.hs            |  39 ++---
 test/hs/Test/Ganeti/Objects/BitArray.hs   | 102 ++++++++++++
 test/hs/Test/Ganeti/WConfd/TempRes.hs     |  58 +++++++
 test/hs/htest.hs                          |   4 +
 test/py/cmdlib/testsupport/config_mock.py |  93 ++++++++++-
 test/py/ganeti.config_unittest.py         |  14 +-
 28 files changed, 1260 insertions(+), 365 deletions(-)
 create mode 100644 src/Ganeti/Objects/BitArray.hs
 create mode 100644 src/Ganeti/WConfd/Persistent.hs
 create mode 100644 test/hs/Test/Ganeti/Objects/BitArray.hs
 create mode 100644 test/hs/Test/Ganeti/WConfd/TempRes.hs

-- 
2.0.0.526.g5318336

Reply via email to