From 5bf7b5cf4b09beb0bf3723af51c8aa06edcf015c Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 14 Oct 2008 06:36:39 +0000 Subject: [PATCH] Add the hv/be params object attributes This patch adds the instance and cluster be/hvparams attributes, and the Fill* methods on the cluster object. Nothing else is changes, except that these attributes exist now on the objects. Reviewed-by: ultrotter --- lib/objects.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/objects.py b/lib/objects.py index 72ba43c0f..6e6667fb8 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -29,6 +29,7 @@ pass to and from external parties. import ConfigParser import re +import copy from cStringIO import StringIO from ganeti import errors @@ -504,6 +505,8 @@ class Instance(TaggableObject): "primary_node", "os", "hypervisor", + "hvparams", + "beparams", "status", "memory", "vcpus", @@ -703,6 +706,8 @@ class Cluster(TaggableObject): "cluster_name", "file_storage_dir", "enabled_hypervisors", + "hvparams", + "beparams", ] def ToDict(self): @@ -723,6 +728,48 @@ class Cluster(TaggableObject): obj.tcpudp_port_pool = set(obj.tcpudp_port_pool) return obj + @staticmethod + def FillDict(defaults_dict, custom_dict): + """Basic function to apply settings on top a default dict. + + @type defaults_dict: dict + @param defaults_dict: dictionary holding the default values + @type custom_dict: dict + @param custom_dict: dictionary holding customized value + @rtype: dict + @return: dict with the 'full' values + + """ + ret_dict = copy.deepcopy(defaults_dict) + ret_dict.update(custom_dict) + return ret_dict + + def FillHV(self, instance): + """Fill an instance's hvparams dict. + + @type instance: object + @param instance: the instance parameter to fill + @rtype: dict + @return: a copy of the instance's hvparams with missing keys filled from + the cluster defaults + + """ + return self.FillDict(self.hvparams.get(instance.hypervisor, {}), + instance.hvparams) + + def FillBE(self, instance): + """Fill an instance's beparams dict. + + @type instance: object + @param instance: the instance parameter to fill + @rtype: dict + @return: a copy of the instance's beparams with missing keys filled from + the cluster defaults + + """ + return self.FillDict(self.beparams.get(constants.BEGR_DEFAULT, {}), + instance.beparams) + class SerializableConfigParser(ConfigParser.SafeConfigParser): """Simple wrapper over ConfigParse that allows serialization. -- GitLab