首页 > 解决方案 > 如何获取 Azure Batch 自动池的池 ID 和相应的作业 ID?

问题描述

我正在使用 Azure Batch 并通过 Java API ( BatchClient) 使用 AutoPoolSpecification 创建池。通过 Azure 门户或桌面应用程序Batch Explorer,可以查看有关当前运行的池的所有详细信息,包括它们的 ID 和相应的作业 ID。

现在我想使用Java API 找出所有正在运行的作业的这些信息(例如,显示每个作业的节点数量和它们的状态)。通过BatchClient.poolOperations().listPools()我可以获得有关现有池的详细信息。虽然BatchClient.jobOperations().listJobs()我还可以检索所有作业的列表,但我不知道如何将作业连接到相应的池 ID:

BatchClient batchClient = BatchClient.open(
  new BatchSharedKeyCredentials(baseUrl, accountName, keyValue)
);

batchClient.jobOperations().listJobs(
  new DetailLevel.Builder().withFilterClause("state ne 'completed'").build()
).forEach(job -> {
  String jobId = job.id();
  job.poolInfo().poolId(); // null
  job.poolInfo().autoPoolSpecification(); // contains no pool ID
});

因为我使用的是 AutoPools,所以这段代码似乎没有帮助:poolIdnull并且autoPoolSpecification不包含池 ID 或任何其他标识数据(请参阅PoolInformation 文档)。使用 Java API 似乎不可能找出池 ID 和作业 ID 之间的联系,即使 Azure 工具能够显示此信息。

BatchClient.jobOperations().listJobs()用于检索池 ID?有没有其他方法可以以编程方式获取池 ID 和作业 ID 之间的连接?

标签: javaazureazure-batch

解决方案


推荐阅读