Signed-off-by: Ilias Tsitsimpis <[email protected]>
---
 lib/bootstrap.py               |  1 +
 lib/objects.py                 | 10 +++++++---
 src/Ganeti/Objects.hs          |  1 +
 test/hs/Test/Ganeti/Objects.hs |  3 ++-
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/lib/bootstrap.py b/lib/bootstrap.py
index d77f13e..04c8043 100644
--- a/lib/bootstrap.py
+++ b/lib/bootstrap.py
@@ -868,6 +868,7 @@ def InitConfig(version, cluster_config, master_node_config,
                                    nodes=nodes,
                                    instances={},
                                    networks={},
+                                   disks={},
                                    serial_no=1,
                                    ctime=now, mtime=now)
   utils.WriteFile(cfg_file,
diff --git a/lib/objects.py b/lib/objects.py
index 6d10135..874951e 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -405,19 +405,20 @@ class ConfigData(ConfigObject):
     "nodegroups",
     "instances",
     "networks",
+    "disks",
     "serial_no",
     ] + _TIMESTAMPS
 
   def ToDict(self, _with_private=False):
     """Custom function for top-level config data.
 
-    This just replaces the list of instances, nodes and the cluster
-    with standard python types.
+    This just replaces the list of nodes, instances, nodegroups,
+    networks, disks and the cluster with standard python types.
 
     """
     mydict = super(ConfigData, self).ToDict(_with_private=_with_private)
     mydict["cluster"] = mydict["cluster"].ToDict()
-    for key in "nodes", "instances", "nodegroups", "networks":
+    for key in "nodes", "instances", "nodegroups", "networks", "disks":
       mydict[key] = outils.ContainerToDicts(mydict[key])
 
     return mydict
@@ -435,6 +436,7 @@ class ConfigData(ConfigObject):
     obj.nodegroups = \
       outils.ContainerFromDicts(obj.nodegroups, dict, NodeGroup)
     obj.networks = outils.ContainerFromDicts(obj.networks, dict, Network)
+    obj.disks = outils.ContainerFromDicts(obj.disks, dict, Disk)
     return obj
 
   def HasAnyDiskOfType(self, dev_type):
@@ -475,6 +477,8 @@ class ConfigData(ConfigObject):
       self.networks = {}
     for network in self.networks.values():
       network.UpgradeConfig()
+    for disk in self.disks.values():
+      disk.UpgradeConfig()
 
   def _UpgradeEnabledDiskTemplates(self):
     """Upgrade the cluster's enabled disk templates by inspecting the currently
diff --git a/src/Ganeti/Objects.hs b/src/Ganeti/Objects.hs
index 020e518..3cf1ce8 100644
--- a/src/Ganeti/Objects.hs
+++ b/src/Ganeti/Objects.hs
@@ -757,6 +757,7 @@ $(buildObject "ConfigData" "config" $
   , simpleField "nodegroups" [t| Container NodeGroup |]
   , simpleField "instances"  [t| Container Instance  |]
   , simpleField "networks"   [t| Container Network   |]
+  , simpleField "disks"      [t| Container Disk      |]
   ]
   ++ timeStampFields
   ++ serialFields)
diff --git a/test/hs/Test/Ganeti/Objects.hs b/test/hs/Test/Ganeti/Objects.hs
index bdad838..1a31b55 100644
--- a/test/hs/Test/Ganeti/Objects.hs
+++ b/test/hs/Test/Ganeti/Objects.hs
@@ -296,6 +296,7 @@ genEmptyCluster ncount = do
                     else GenericContainer nodemap
       continsts = GenericContainer Map.empty
       networks = GenericContainer Map.empty
+      disks = GenericContainer Map.empty
   let contgroups = GenericContainer $ Map.singleton guuid grp
   serial <- arbitrary
   -- timestamp fields
@@ -303,7 +304,7 @@ genEmptyCluster ncount = do
   mtime <- arbitrary
   cluster <- resize 8 arbitrary
   let c = ConfigData version cluster contnodes contgroups continsts networks
-            ctime mtime serial
+            disks ctime mtime serial
   return c
 
 -- | FIXME: make an even simpler base version of creating a cluster.
-- 
1.9.1

Reply via email to