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
