微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python - 使用函数输出来迭代命令

如何解决Python - 使用函数输出来迭代命令

我编写了一些函数来执行以下操作:

我的问题是如何使用这两个函数输出来检索集群和资源组,并将它们作为参数传递并为每个值迭代命令。

我曾尝试将它们转换为字符串,但这导致在一个命令中使用它们。

我对如何迭代包含参数的列表非常困惑。

以下是代码的细分。

我正在使用以下软件包:

azure.cli.core - get_default_cli 操作系统

az_helper 函数 - 使用您传入的参数调用 az cli:

app.post('/api/teacher/courses/maintopics',async (req,res,next) =>
{
    try {
       let SubCode = req.body.data;
       let teacher = new Teacher();
       const results = await teacher.getCoursesMainContent(SubCode);
       let Contiants = [];
       for (let element of results) {
           SubContent = [];
           for (let e of element) {
                let contentCode = e.ContentCode;
                
                let res = await teacher.getCoursesSubContent(contentCode);
                SubContent.push(res)
           }
      }
       res.json(Contiants);
    } catch(err) {
      next(err);
    }
});

然后我编写了两个函数来收集资源组和集群名称

from azure.cli.core import get_default_cli
import os


def az(args,suppress_stdout=False):
    cli = get_default_cli()

    if suppress_stdout:
        cli.invoke(args,out_file=open(os.devnull,"w"))
    else:
        cli.invoke(args)

    if cli.result.result:
        return cli.result.result
    elif cli.result.error:
        raise cli.result.error

    return True


if __name__ == "__main__":
    az(args="",suppress_stdout=False)

最后一个函数是我想组合上述输出并将它们作为参数传递给迭代的地方:

from az_helper import az


# Function to get the cluster names
def get_aks_clusters():
    cli_args = (
        "aks","list","--query","[].name","-o","json"
    )

    clusters = az(cli_args,suppress_stdout=True)

    outputs = []

    for cluster in clusters:
        outputs.append(cluster)
    return outputs


# Function to get cluster resource groups
def get_aks_rg():
    cli_args = (
        "aks","[].resourceGroup","json"
    )

    resource_groups = az(cli_args,suppress_stdout=True)

    outputs = []

    for rg,value in enumerate(resource_groups):
        outputs.append(value)
    return outputs

解决方法

如果你提供一个集群和 rgs 列表的例子,那就更容易了,所以我会根据我自己的理解写一个解决方案,如果你编辑你的问题,我会相应地修改我的解决方案。

>
def get_aks_k8s_ver(clusters,rgs):
    versions = []
    for rg,cluster in zip(clusters,rgs):
        cli_args = (
            "aks","get-upgrades","-g",rg,"-n",cluster,"--query","controlPlaneProfile.kubernetesVersion","-o","json"
        )
        version = az(cli_args,suppress_stdout=False)
        versions.append(version)
    return versions

# clusters = ['cluster1','cluster2',...,'clusterN']
clusters = get_aks_clusters()
# rgs = ['rg1','rg2','rgN']
rgs = get_aks_rgs()

# versions = ['version1','version2','versionN']
versions = get_aks_k8s_ver(clusters,rgs)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。