【问题标题】:How to send parameters to Azure runbook api如何将参数发送到 Azure Runbook api
【发布时间】:2022-01-04 09:34:53
【问题描述】:

我们使用 Scriptrunner 的 Azure 自动化和 groovy 脚本根据不同的 Runbook 创建不同的作业

为此,我们使用以下 API 调用示例

http.request(PUT) {
            requestContentType = ContentType.JSON
            headers.'Authorization' = "Bearer " + AuthToken 
            body = ['properties': ['runbook': ['name': Runbook],'parameters':['Vm': Env], 'runOn': 'devops']]

当我们需要硬编码一个名为 Vm 的参数时,我们在这里格式化正文的方式工作正常,在我们的例子中,它是从一个 Env 参数字符串设置的

我们实际遇到的问题是body的这个parameters部分可以有多个单个参数和不同的参数名称。

例如,根据不同的用例,以下主体也是可能的:

body = ['properties': ['runbook': ['name': Runbook],'parameters':[**'Vm': Env, 'Path': absolute, 'Target':test01**], 'runOn': 'devops']]

我想要做的是构建参数部分有一个变量,然后我可以将它作为身体的一部分放置在下面

body = ['properties': ['runbook': ['name': Runbook],'parameters':[$paramList], 'runOn': 'devops']]

$paramList 是一个包含“'Vm': Env, 'Path': absolute, 'Target':test01”的字符串

由于某种原因它不起作用,我在构建该字符串并注入正文值的参数部分时错过了什么?

感谢您的帮助 问候

【问题讨论】:

  • 我想你想要[... parameters: parameterList, ...]
  • 你是什么意思?我想要做的是动态构建 json 数组“参数”的内容。我试图用“['vm': Env]”定义一个字符串,但它返回一个错误的请求错误。知道如何格式化该值以注入参数数组吗?
  • 这不是字符串,而是 Groovy 中的 map-literal
  • @cfrick,你的意思是我需要将我的参数定义为: Map param=['Vm1': Env1,'Vm2': Env2] 然后 body = ['properties': ['runbook' : ['name': Runbook],'parameters':param, 'runOn': 'devops']],是这个意思吗?
  • @cfrick,我已将其更改为 Map 并将其注入体内,它按预期工作。非常感谢

标签: groovy azure-automation


【解决方案1】:

@cfrick 解释的解决方案是使用 Map 对象,如下所示。 我需要将我的动态参数定义为:

Map myParams=['Vm1': Env1,'Vm2': Env2]

然后将 Map 对象作为全局主体的一部分注入:

body = ['properties': ['runbook': ['name': Runbook],'parameters':myParams, 'runOn': 'devops']]

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 2016-06-22
    • 2019-03-04
    • 1970-01-01
    • 2022-12-07
    • 2019-10-16
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多