[svn] commit: r844 - /branches/jelte-configuration/src/lib/config/python/isc/config/config_data.py
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Feb 16 21:11:39 UTC 2010
Author: jelte
Date: Tue Feb 16 21:11:38 2010
New Revision: 844
Log:
some more documentation
Modified:
branches/jelte-configuration/src/lib/config/python/isc/config/config_data.py
Modified: branches/jelte-configuration/src/lib/config/python/isc/config/config_data.py
==============================================================================
--- branches/jelte-configuration/src/lib/config/python/isc/config/config_data.py (original)
+++ branches/jelte-configuration/src/lib/config/python/isc/config/config_data.py Tue Feb 16 21:11:38 2010
@@ -13,26 +13,25 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Classes to store configuration data and data specifications
-#
-# Used by the config manager, (python) modules, and UI's (those last
-# two through the classes in ccsession)
-#
-
+"""
+Classes to store configuration data and module specifications
+
+Used by the config manager, (python) modules, and UI's (those last
+two through the classes in ccsession)
+"""
import isc.cc.data
import isc.config.datadefinition
class ConfigDataError(Exception): pass
-def check_type(specification, value):
+def check_type(spec_part, value):
"""Returns true if the value is of the correct type given the
specification part relevant for the value"""
- if type(specification) == list:
+ if type(spec_part) == list:
data_type = "list"
else:
- data_type = specification['item_type']
+ data_type = spec_part['item_type']
if data_type == "integer" and type(value) != int:
raise isc.cc.data.DataTypeError(str(value) + " is not an integer")
@@ -47,7 +46,7 @@
raise isc.cc.data.DataTypeError(str(value) + " is not a list")
else:
for element in value:
- check_type(specification['list_item_spec'], element)
+ check_type(spec_part['list_item_spec'], element)
elif data_type == "map" and type(value) != dict:
# todo: check types of map contents too
raise isc.cc.data.DataTypeError(str(value) + " is not a map")
@@ -115,12 +114,6 @@
self.specification = specification
self.data = {}
- def get_item_list(self, identifier = None, recurse = False):
- if identifier:
- spec = find_spec(self.specification.get_config_spec(), identifier, recurse)
- return spec_name_list(spec, identifier + "/")
- return spec_name_list(self.specification.get_config_spec(), "", recurse)
-
def get_value(self, identifier):
"""Returns a tuple where the first item is the value at the
given identifier, and the second item is a bool which is
@@ -145,19 +138,28 @@
"""Returns the non-default config values in a dict"""
return self.data;
+ def get_item_list(self, identifier = None, recurse = False):
+ """Returns a list of strings containing the full identifiers of
+ all 'sub'options at the given identifier. If recurse is True,
+ it will also add all identifiers of all children, if any"""
+ if identifier:
+ spec = find_spec(self.specification.get_config_spec(), identifier, recurse)
+ return spec_name_list(spec, identifier + "/")
+ return spec_name_list(self.specification.get_config_spec(), "", recurse)
+
def get_full_config(self):
+ """Returns a dict containing identifier: value elements, for
+ all configuration options for this module. If there is
+ a local setting, that will be used. Otherwise the value
+ will be the default as specified by the module specification.
+ If there is no default and no local setting, the value will
+ be None"""
items = self.get_item_list(None, True)
result = {}
for item in items:
value, default = self.get_value(item)
result[item] = value
return result
-
- #def get_identifiers(self):
- # Returns a list containing all identifiers
-
- #def
-
class MultiConfigData:
"""This class stores the datadefinitions, current non-default
More information about the bind10-changes
mailing list