diff --git a/Tests/iaas/flavor-naming/flavor-form.py b/Tests/iaas/flavor-naming/flavor-form.py index 006fc38ac..7b8324113 100755 --- a/Tests/iaas/flavor-naming/flavor-form.py +++ b/Tests/iaas/flavor-naming/flavor-form.py @@ -12,43 +12,52 @@ or a human-readable description of the flavor. """ -# import os +import os import sys import re -# import traceback -# TODO: Replace cgi by urllib, cgi is deprecated -import cgi +import urllib.parse +import html +import importlib +fnmck = importlib.import_module("flavor-name-check") +# Global variables +FLAVOR_NAME = "" +FLAVOR_SPEC = () +ERROR = "" -class TestForm: - "Class for testing via cmd line" - def __init__(self, fnm): - self.value = fnm + +def parse_name(fnm): + "return tuple with flavor description" + global FLAVOR_SPEC, FLAVOR_NAME, ERROR + FLAVOR_NAME = fnm + try: + FLAVOR_SPEC = fnmck.parsename(fnm) + except (TypeError, NameError, KeyError) as exc: + ERROR = f"\tERROR
\n\t{exc}" + return () + ERROR = "" + return FLAVOR_SPEC -def parse_form(form): +def output_parse(): "output pretty description from SCS flavor name" - import importlib fnmd = importlib.import_module("flavor-name-describe") - fnm = "" - try: - fnm = form["flavor"].value - except KeyError: - pass print('\t
\n\t
') - print(f'\t Flavor name: ') + print(f'\t Flavor name: ') print('\t ') # print(' \n
') print('\t') - if fnm: - print("\t
Flavor") - try: - fnmd.main((fnm,)) - except (TypeError, NameError, KeyError) as exc: - print(f"\tERROR
\n\t{exc}") + if FLAVOR_NAME: + print(f"\t
Flavor {html.escape(FLAVOR_NAME, quote=True)}:") + if FLAVOR_SPEC: + print(f"\t{html.escape(fnmd.prettyname(FLAVOR_SPEC), quote=True)}") + else: + print("\tNot an SCS flavor") + if ERROR: + print(f"\t
{html.escape(ERROR, quote=True)})") -def parse_generate(form): +def output_generate(): "input details to generate SCS flavor name" print("\tNot implemented yet as webform, use") print('\tflavor-name-check.py -i') @@ -57,19 +66,23 @@ def parse_generate(form): def main(argv): "Entry point for cgi flavor parsing" print("Content-Type: text/html\n") - form = cgi.FieldStorage() + form = {"flavor": [""]} + if 'QUERY_STRING' in os.environ: + form = urllib.parse.parse_qs(os.environ['QUERY_STRING']) # For testing if len(argv) > 0: - form = {"flavor": TestForm(argv[0])} + form = {"flavor": [argv[0],]} find_parse = re.compile(r'^[ \t]*[ \t]*$') find_generate = re.compile(r'^[ \t]*[ \t]*$') + if "flavor" in form: + parse_name(form["flavor"][0]) with open("page/index.html", "r", encoding='utf-8') as infile: for line in infile: print(line, end='') if find_parse.match(line): - parse_form(form) + output_parse() elif find_generate.match(line): - parse_generate(form) + output_generate() if __name__ == "__main__":