Skip to content

Commit

Permalink
Generate form for flavor name generation.
Browse files Browse the repository at this point in the history
Signed-off-by: Kurt Garloff <[email protected]>
  • Loading branch information
garloff committed Dec 6, 2023
1 parent e807b1b commit 9fb7a3d
Showing 1 changed file with 132 additions and 3 deletions.
135 changes: 132 additions & 3 deletions Tests/iaas/flavor-naming/flavor-form.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ def output_parse():
"output pretty description from SCS flavor name"
fnmd = importlib.import_module("flavor-name-describe")
print('\t<br/>\n\t<FORM ACTION="/cgi-bin/flavor-form.py" METHOD="GET">')
print(f'\t Flavor name: <INPUT TYPE="text" NAME="flavor" SIZE=24 VALUE="{html.escape(FLAVOR_NAME, quote=True)}"/>')
print('\t <label for="flavor"?Flavor name:</label>')
print(f'\t <INPUT TYPE="text" ID="flavor" NAME="flavor" SIZE=24 VALUE="{html.escape(FLAVOR_NAME, quote=True)}"/>')
print('\t <INPUT TYPE="submit" VALUE="Submit"/>')
# print(' <INPUT TYPE="reset" VALUE="Clear"/>\n</FORM>')
print('\t</FORM>')
Expand All @@ -57,10 +58,138 @@ def output_parse():
print(f"\t<br/>{html.escape(ERROR, quote=True)})")


def collect_input(self):
"This is just for reference"
print(self.type)
for i in range(0, len(self.pnames)):
tbl = None
fname = self.pattrs[i]
fdesc = self.pnames[i]
if hasattr(self, f"tbl_{fname}"):
tbl = self.__getattribute__(f"tbl_{fname}")
if tbl:
print(f" {fdesc} Options:")
for key in tbl.keys():
print(f" {key}: {tbl[key]}")
while True:
print(f" {fdesc}: ", end="")
val = input()
try:
if fdesc[0] == "." and not val and i == 0:
return
if fdesc[0] == "?":
val = fnmck.to_bool(val)
if not val:
break
elif fdesc[0:2] == "##":
val = float(val)
elif fdesc[0] == "#":
if fdesc[1] == ":" and not val: # change?
val = 1
break
if fdesc[1] == "." and not val:
break
oval = val
val = int(val)
if str(val) != oval:
print(" INVALID!")
continue
elif tbl:
if fdesc[0] == "." and not val:
break
if val in tbl:
pass
elif val.upper() in tbl:
val = val.upper()
elif val.lower() in tbl:
val = val.lower()
if val in tbl:
self.parsed += 1
self.create_dep_tbl(i, val)
break
print(" INVALID!")
continue
except BaseException as exc:
print(exc)
print(" INVALID!")
continue
self.parsed += 1
break
self.__setattr__(fname, val)


def is_checked(flag):
if flag:
return "checked"
else:
return ""


def form_attr(attr):
"This mirrors flavor-name-check.py input()"
spec = type(attr)
pct = min(20, int(100/len(spec.pnames)))
# print(attr, spec)
print(f'\t <fieldset><legend>{spec.type}</legend><br/>')
print('\t <div id="the-whole-thing" style="position: relative; overflow: hidden;">')
for i in range(0, len(spec.pnames)):
print(f'\t <div id="column" style="position: relative; width: {pct}%; float: left;">')
tbl = None
fname = spec.pattrs[i]
fdesc = spec.pnames[i]
# print(fname, fdesc)
value = None
try:
value = attr.__getattribute__(fname)
except AttributeError:
pass
# FIXME: Handle leading . qualifier
# Table => READIO
if hasattr(spec, f"tbl_{fname}"):
tbl = attr.__getattribute__(f"tbl_{fname}")
if tbl:
print(f'\t <label for="{fname}">{fname[0].upper()+fname[1:]}</label><br/>')
for key in tbl.keys():
ischk = value == key
print(f'\t <input type="radio" id="{key}" name="{fname}" value="{key}" {is_checked(ischk)}/>')
print(f'\t <label for="{key}">{tbl[key]}</label><br/>')
elif fdesc[0:2] == "##":
# Float number => NUMBER
print(f'\t <label for="{fname}">{fdesc}</label><br/>')
print(f'\t <input type="number" name="{fname}" id="{fname}" min=0 value={value} size=5/>')
elif fdesc[0] == "#":
# Float number => NUMBER
# FIXME: Handle : and .
print(f'\t <label for="{fname}">{fdesc}</label><br/>')
print(f'\t <input type="number" name="{fname}" id="{fname}" min=0 step=1 value={value} size=4/>')
elif fdesc[0] == "?":
# Bool => Checkbox
print(f'\t <input type="checkbox" name="{fname}" id="{fname}" {is_checked(value)}/>')
print(f'\t <label for="{fname}">{fdesc}</label>')
print('\t </div>')

print('\t </div>')
print('\t </fieldset>')


def output_generate():
"input details to generate SCS flavor name"
print("\tNot implemented yet as webform, use")
print('\t<tt><a href="https://github.com/SovereignCloudStack/standards/blob/main/Tests/iaas/flavor-naming/flavor-name-check.py">flavor-name-check.py</a> -i</tt>')
if FLAVOR_SPEC:
cpu, disk, hype, hvirt, cpubrand, gpu, ibd = FLAVOR_SPEC
else:
return
# print("\tNot implemented yet as webform, use")
# print('\t<tt><a href="https://github.com/SovereignCloudStack/standards/blob/main/Tests/iaas/flavor-naming/flavor-name-check.py">flavor-name-check.py</a> -i</tt>')
print('\t<br/>\n\t<FORM ACTION=/cgi-bin/flavor-form.py" METHOD="GET">')
form_attr(cpu)
form_attr(disk)
form_attr(hype)
form_attr(hvirt)
form_attr(cpubrand)
form_attr(gpu)
form_attr(ibd)
print('\t</FORM>')
# TODO: Submission


def main(argv):
Expand Down

0 comments on commit 9fb7a3d

Please sign in to comment.