[bind10-dev] config data api

JINMEI Tatuya / 神明達哉 jinmei at isc.org
Mon Apr 16 18:32:18 UTC 2012


At Thu, 12 Apr 2012 16:38:07 +0200,
Jelte Jansen <jelte at isc.org> wrote:

> So, initial requirements braindump:
> 
> - - need to be able to represent ?changes? (modifications, additions,
> removals)
> - - need to be able to count on content structure (i.e. data must be
> validated according to .spec file, and to check whether it has been
> validated)
> - - need to be able to easily access ?actual? data (i.e. custom setting
> or default)
> - - need to be able to check whether the value was default
> - - need to be able to override some values for in-source use
> - - need to be able to access ?deeper? parts of the structure, both
> directly as children from an element and an ?absolute? and relative
> ?path? in the data (e.g. the current identifier functions, and
> Element::find())
> - - identifiers must support (nested) maps, and (nested) lists
> - - possibly: case insensitivity in identifiers?
> - - we need extensible/additional ?types? (e.g. IP address, domain name)
> - - while we are at it, we should clarify or redefine ?optional? and
> ?default? values

Not fully thought about this topic, and admittedly not fully
understood the proposals, but providing some feedback...

What I've found inconvenient or confusing was
- it's not easy to get access to the default values
- it's not clear (at least to me) how applications should expect
  config differences are provided.  For example, if there's a list of
  zones (for some purpose) and the admin adds or deletes one zone
  to/from the list, how the application is expected to be notified of
  it?  I also wonder the efficiency considerations of this operation
  especially if the list is very large - this also leads to
  how/whether we handle large scale data using the current config+msgq
  framework.
- it's not clear who is responsible for validating data.  So sometimes
  the application could do redundant checks, and sometimes the
  neceessary checks could be missing, leaving the application
  fragile.  This may be a documentation issue rather than design,
  though.  It would help if we have a big picture (probably literally
  with a drawing) of the relationship between related
  components/modules/libraries in terms of who is responsible for what
  kind of validation, and what's the assumption for each module in
  terms of data validation.

From a quick read of the proposals, some points seem to be in
consideration, and some may not.

Another topic: I wonder whether we can share more code regarding
config data for C++ and Python.  Right now we implement many related
features in both languages separately, slightly with different
capabilities.  This is both inefficient in terms of development and
maintenance, and one main source of confusion.

---
JINMEI, Tatuya


More information about the bind10-dev mailing list