From f6c5e64f46087f75abf37086b7eb75efa366257d Mon Sep 17 00:00:00 2001
From: Dimitris Aragiorgis <dimara@grnet.gr>
Date: Thu, 9 Aug 2012 16:10:52 +0300
Subject: [PATCH] Use base64 format in network reservations slots

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
---
 lib/network.py | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/network.py b/lib/network.py
index 747904083..58dbcf647 100644
--- a/lib/network.py
+++ b/lib/network.py
@@ -26,6 +26,8 @@
 import ipaddr
 
 from bitarray import bitarray
+from base64 import b64encode
+from base64 import b64decode
 
 from ganeti import errors
 
@@ -60,13 +62,15 @@ class AddressPool(object):
       self.gateway6 = ipaddr.IPv6Address(self.net.gateway6)
 
     if self.net.reservations:
-      self.reservations = bitarray(self.net.reservations)
+      self.reservations = bitarray()
+      self.reservations.fromstring(b64decode(self.net.reservations))
     else:
       self.reservations = bitarray(self.network.numhosts)
       self.reservations.setall(False)
 
     if self.net.ext_reservations:
-      self.ext_reservations = bitarray(self.net.ext_reservations)
+      self.ext_reservations = bitarray()
+      self.ext_reservations.fromstring(b64decode(self.net.ext_reservations))
     else:
       self.ext_reservations = bitarray(self.network.numhosts)
       self.ext_reservations.setall(False)
@@ -92,8 +96,8 @@ class AddressPool(object):
 
   def _Update(self):
     """Write address pools back to the network object"""
-    self.net.ext_reservations = self.ext_reservations.to01()
-    self.net.reservations = self.reservations.to01()
+    self.net.ext_reservations = b64encode(self.ext_reservations.tostring())
+    self.net.reservations = b64encode(self.reservations.tostring())
 
   def _Mark(self, address, value=True, external=False):
     idx = self._GetAddrIndex(address)
-- 
GitLab