From af55095914a9d66db3d8a8b296899dc5992238b0 Mon Sep 17 00:00:00 2001 From: Kurt Garloff Date: Fri, 8 Dec 2023 10:30:50 +0100 Subject: [PATCH] Do a bit more input validation. Set parsed. ... to create output for extensions. Signed-off-by: Kurt Garloff --- Tests/iaas/flavor-naming/flavor-form.py | 34 ++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Tests/iaas/flavor-naming/flavor-form.py b/Tests/iaas/flavor-naming/flavor-form.py index 32795f05b..2324439e8 100755 --- a/Tests/iaas/flavor-naming/flavor-form.py +++ b/Tests/iaas/flavor-naming/flavor-form.py @@ -76,6 +76,7 @@ def generate_name(form): "Parse submitted form with flavor properties" global ERROR, FLAVOR_SPEC, FLAVOR_NAME ERROR = "" + FLAVOR_NAME = "" FLAVOR_SPEC = (fnmck.Main("0L-0"), fnmck.Disk(""), fnmck.Hype(""), fnmck.HWVirt(""), fnmck.CPUBrand(""), fnmck.GPU(""), fnmck.IB("")) for key, val in form.items(): @@ -89,16 +90,24 @@ def generate_name(form): idx2 = find_attr(FLAVOR_SPEC[idx], keypair[1]) if idx2 < 0: ERROR = f"Can not find attribute {keypair[1]} in {keypair[1]}" + return None + FLAVOR_SPEC[idx].parsed += 1 fdesc = FLAVOR_SPEC[idx].pnames[idx2] # Now parse fdesc to get the right value - if val != "NN": - if fdesc[0:2] == '##': - setattr(FLAVOR_SPEC[idx], keypair[1], float(val)) - elif fdesc[0] == '#': - setattr(FLAVOR_SPEC[idx], keypair[1], int(val)) - # TODO: Handle boolean - else: - setattr(FLAVOR_SPEC[idx], keypair[1], val) + if fdesc[0:2] == '##': + setattr(FLAVOR_SPEC[idx], keypair[1], float(val)) + elif fdesc[0] == '#': + if fdesc[1] != '.' and not int(val) > 0: + ERROR = f"{key} must be > 0, found {val}" + return None + if fdesc[1] == ':' and not int(val): + val = '1' + setattr(FLAVOR_SPEC[idx], keypair[1], int(val)) + # TODO: Handle boolean and tables + else: + if val == "NN": + val = "" + setattr(FLAVOR_SPEC[idx], keypair[1], val) FLAVOR_NAME = fnmck.outname(*FLAVOR_SPEC) return FLAVOR_SPEC @@ -242,8 +251,6 @@ def output_generate(): else: print(f'\tERROR: {html.escape(ERROR, quote=True)}') return - # print("\tNot implemented yet as webform, use") - # print('\tflavor-name-check.py -i') print('\t
\n\t
') form_attr(cpu, False) print('\t
The following settings are all optional and (except for disk) meant for highly specialized / differentiated offerings.
') @@ -255,10 +262,13 @@ def output_generate(): form_attr(gpu) form_attr(ibd) print('\t
') + print('\tRemember that you are allowed to understate performance.') print('\t
') print('\t
') - # TODO: Submission - print('\tRemember that you are allowed to understate performance.') + if FLAVOR_NAME: + print(f"\t
Flavor {html.escape(FLAVOR_NAME, quote=True)}") + else: + print(f'\tERROR: {html.escape(ERROR, quote=True)}') def main(argv):