diff --git a/Tests/iaas/flavor-naming/flavor-form.py b/Tests/iaas/flavor-naming/flavor-form.py index 066794165..b1957d530 100755 --- a/Tests/iaas/flavor-naming/flavor-form.py +++ b/Tests/iaas/flavor-naming/flavor-form.py @@ -90,34 +90,38 @@ def generate_name(form): if idx < 0: ERROR = f"Unknown key {keypair[0]}" return None - idx2 = find_attr(FLAVOR_SPEC[idx], keypair[1]) + spec = FLAVOR_SPEC[idx] + idx2 = find_attr(spec, keypair[1]) if idx2 < 0: ERROR = f"Can not find attribute {keypair[1]} in {keypair[1]}" return None - fdesc = FLAVOR_SPEC[idx].pnames[idx2] + fdesc = spec.pnames[idx2] if val == "NN": val = "" if val and val != "" and val != "0" and not (val == "1" and fdesc[0:2] == "#:"): - FLAVOR_SPEC[idx].parsed += 1 + spec.parsed += 1 # Now parse fdesc to get the right value if fdesc[0:2] == '##': - setattr(FLAVOR_SPEC[idx], keypair[1], float(val)) + setattr(spec, 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)) + setattr(spec, keypair[1], int(val)) elif fdesc[0] == '?': - setattr(FLAVOR_SPEC[idx], keypair[1], bool(val)) - elif hasattr(FLAVOR_SPEC[idx], f"tbl_{keypair[1]}"): - tbl = getattr(FLAVOR_SPEC[idx], f"tbl_{keypair[1]}") + setattr(spec, keypair[1], bool(val)) + elif hasattr(spec, f"tbl_{keypair[1]}"): + tbl = getattr(spec, f"tbl_{keypair[1]}") # print(f'tbl_{keypair[1]}: {tbl}: Search for {val}', file=sys.stderr) if not val in tbl and (val or fdesc[0] != '.'): ERROR = f'Invalid key {val} for tbl_{keypair[1]}' return None - setattr(FLAVOR_SPEC[idx], keypair[1], val) + setattr(spec, keypair[1], val) + spec.create_dep_tbl(idx2, val) + # if idx2 < len(spec.pattrs)-1 and hasattr(spec, f"tbl_{spec.pattrs[idx2+1]}"): + # print(f"Dynamically set tbl_{spec.pattrs[idx2+1]} to tbl_{spec.pattrs[idx2]}_{val}_{spec.pattrs[idx2+1]}", file=sys.stderr) else: setattr(FLAVOR_SPEC[idx], keypair[1], val) # Eliminate empty features @@ -133,66 +137,6 @@ def generate_name(form): return FLAVOR_SPEC -def input_method(self): - "Interactive input method 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): "Checked attribute string" if flag: @@ -236,7 +180,7 @@ def form_attr(attr): pass # FIXME: Handle leading . qualifier # Table => READIO - if hasattr(spec, f"tbl_{fname}"): + if hasattr(attr, f"tbl_{fname}"): tbl = getattr(attr, f"tbl_{fname}") if tbl: tblopt = False @@ -254,6 +198,9 @@ def form_attr(attr): if tblopt: print(f'\t ') print(f'\t
') + attr.create_dep_tbl(i, value) + # if i < len(attr.pattrs)-1 and hasattr(attr, f"tbl_{spec.pattrs[i+1]}"): + # print(f" Dynamically set tbl_{attr.pattrs[i+1]} to tbl_{attr.pattrs[i]}_{value}_{attr.pattrs[i+1]}", file=sys.stderr) elif fdesc[0:2] == "##": # Float number => NUMBER print(f'\t
')