On Apr 14 14:29, Ilias Tsitsimpis wrote:
> 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()
If noticed some items first test if the attribute is 'None', others don't.
Isn't it necessary to do this first:
if self.disks is None:
self.disks = {}
Can you explain the difference?
> 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
>
--
Jose Antonio Lopes
Ganeti Engineering
Google Germany GmbH
Dienerstr. 12, 80331, München
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores
Steuernummer: 48/725/00206
Umsatzsteueridentifikationsnummer: DE813741370