def __process_value(self, v, extended=True): log.debug(f"process_value (enter): {v} [extended={extended}]") def repl(match): return str(self.__process_value(match.group()[2:-2], extended)) v = self.regex.sub(lambda m: str(self.__process_value(m.group()[2:-2], extended)), v) parts = v.split('.') prefix = parts[0] if len(parts) == 1: prefix = "" if prefix == "variables": res = self.read_value(v) elif prefix == "secret": res = azutil.get_keyvault_secret(parts[1], parts[2]) elif extended and prefix == "sasurl": log.debug(parts) url = azutil.get_storage_url(parts[1]) x = parts[-1].split(",") if len(x) == 1: perm = "r" else: perm = x[1] parts[-1] = x[0] container = parts[2].split('/')[0] saskey = azutil.get_storage_saskey(parts[1], container, perm) log.debug(parts) path = ".".join(parts[2:]) res = f"{url}{path}?{saskey}" elif extended and prefix == "fqdn": res = azutil.get_fqdn(self.read_value("resource_group"), parts[1]+"_pip") elif extended and prefix == "sakey": res = azutil.get_storage_key(parts[1]) elif extended and prefix == "saskey": x = parts[2].split(",") if len(x) == 1: x.append("r") container = x[0].split('/')[0] res = azutil.get_storage_saskey(parts[1], container, x[1]) elif extended and prefix == "laworkspace": res = azutil.get_log_analytics_workspace(parts[1], parts[2]) elif extended and prefix == "lakey": res = azutil.get_log_analytics_key(parts[1], parts[2]) elif extended and prefix == "acrkey": res = azutil.get_acr_key(parts[1]) elif extended and prefix == "image": res = azutil.get_image_id(parts[1], parts[2]) else: res = v log.debug("process_value (exit): "+str(v)+"="+str(res)) return res
def process_value(self, v, extended=True): log.debug(f"process_value (enter): {v} [extended={extended}]") def repl(match): return str(self.process_value(match.group()[2:-2], extended)) v = self.regex.sub( lambda m: str(self.process_value(m.group()[2:-2], extended)), v) parts = v.split('.') prefix = parts[0] if len(parts) == 1: prefix = "" if prefix == "variables": res = self.read_value(v) elif prefix == "secret": res = azutil.get_keyvault_secret(parts[1], parts[2]) elif prefix == "image": res = azutil.get_image_id(parts[1], parts[2]) elif extended and prefix == "sasurl": log.debug(parts) url = azutil.get_storage_url(parts[1]) x = parts[-1].split(",") if len(x) == 1: perm = "r" else: perm = x[1] parts[-1] = x[0] container = parts[2].split('/')[0] saskey = azutil.get_storage_saskey(parts[1], container, perm) log.debug(parts) path = ".".join(parts[2:]) res = f"{url}{path}?{saskey}" elif extended and prefix == "fqdn": res = azutil.get_fqdn(self.read_value("resource_group"), parts[1] + "_pip") elif extended and prefix == "sakey": res = azutil.get_storage_key(parts[1]) elif extended and prefix == "saskey": x = parts[2].split(",") if len(x) == 1: x.append("r") container = x[0].split('/')[0] res = azutil.get_storage_saskey(parts[1], container, x[1]) elif extended and prefix == "laworkspace": res = azutil.get_log_analytics_workspace(parts[1], parts[2]) elif extended and prefix == "lakey": res = azutil.get_log_analytics_key(parts[1], parts[2]) elif extended and prefix == "acrkey": res = azutil.get_acr_key(parts[1]) else: # test to see if we are including a files contents (e.g. for customData) fname = self.file_location + "/" + v[1:] if v.startswith("@") and os.path.isfile(fname): log.debug(f"loading text include {fname}") with open(fname) as f: res = f.read() else: res = v log.debug("process_value (exit): " + str(v) + "=" + str(res)) return res