actually provide validating client-config-from-string function

This commit is contained in:
Jean-Paul Calderone 2019-06-19 10:47:23 -04:00
parent 23e1631259
commit 756c21c251
2 changed files with 36 additions and 7 deletions

View File

@ -62,9 +62,17 @@ GiB=1024*MiB
TiB=1024*GiB
PiB=1024*TiB
def _valid_config():
cfg = node._common_valid_config()
return cfg.update(configutil.ValidConfiguration({
def _is_valid_section(section_name):
"""
Check for valid dynamic configuration section names.
Currently considers all possible storage server plugin sections valid.
"""
return section_name.startswith("storageserver.plugins.")
_client_config = configutil.ValidConfiguration(
static_valid_sections={
"client": (
"helper.furl",
"introducer.furl",
@ -117,7 +125,16 @@ def _valid_config():
"local.directory",
"poll_interval",
),
}))
},
is_valid_section=_is_valid_section,
# Anything in a valid section is a valid item, for now.
is_valid_item=lambda section, ignored: _is_valid_section(section),
)
def _valid_config():
cfg = node._common_valid_config()
return cfg.update(_client_config)
# this is put into README in new node-directories
CLIENT_README = """
@ -207,6 +224,12 @@ def read_config(basedir, portnumfile, generated_files=[]):
)
config_from_string = partial(
node.config_from_string,
_valid_config=_valid_config(),
)
def create_client(basedir=u".", _client_factory=None):
"""
Creates a new client instance (a subclass of Node).

View File

@ -195,14 +195,20 @@ def read_config(basedir, portnumfile, generated_files=[], _valid_config=None):
return _Config(parser, portnumfile, basedir, config_fname)
def config_from_string(basedir, portnumfile, config_str):
def config_from_string(basedir, portnumfile, config_str, _valid_config=None):
"""
load configuration from in-memory string
load and validate configuration from in-memory string
"""
if _valid_config is None:
_valid_config = _common_valid_config()
# load configuration from in-memory string
parser = ConfigParser.SafeConfigParser()
parser.readfp(BytesIO(config_str))
return _Config(parser, portnumfile, basedir, '<in-memory>')
fname = "<in-memory>"
configutil.validate_config(fname, parser, _valid_config)
return _Config(parser, portnumfile, basedir, fname)
def get_app_versions():