コード例 #1
0
ファイル: azconfig.py プロジェクト: husiana/azurehpc
    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
コード例 #2
0
    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