如何使用Rest-API更改Nifi变量注册表

时间:2018-08-24 19:45:13

标签: apache-nifi

我知道可以使用rest-api检索变量注册表中的值,但是有没有办法设置变量值?当我更改变量时,我看到发送了以下POST:

$(' .radio').click(function(){
$(this).parent().find('.radio').removeClass('selected');
$(this).addClass('selected');
var val = $(this).attr('data-value');
//alert(val);
$(this).parent().find('input').val(val);
$('#radio-value').html(val);

但是我真的不明白VariableRegistryEntity在哪里起作用,或者我将如何处理变量。

更广泛地说,我想做的是在另一个程序的自定义Nifi处理器中操作变量,因此,欢迎您提供任何指导或想法。

2 个答案:

答案 0 :(得分:6)

所有变量(键,值)都存储在变量注册表中,当我们更新/创建变量时,我们将拥有更新请求rest api在后端打电话。

如果您要构建自定义处理器以使用the variables,则需要create processor启用表达式语言,然后可以使用nifi expression language ${variable_name}来引用变量替换为variable_value at run time

有关this链接的更多信息,请参见NiFi中的变量注册表。

  

如果您需要在Nifi中更新/创建任何变量,则可以使用   下面的REST API调用:

bash$ curl -i -H 'Content-Type: application/json' -X POST -d '{\
    "processGroupRevision": {\
        "clientId": "<ClientId>",\
        "version": 0\
    },\
    "variableRegistry": {\
        "processGroupId": "<process-group-id>",\
        "variables": [{\
            "variable": {\
                "name": "<variable-name>",\
                "value": "<variable-value>"\
            }\
        }]\
    }\
}' <URL>/nifi-api/process-groups/<process-group-id>/variable-registry/update-requests

此curl调用将更新值

  • 如果已经定义了变量并且值已更改,则停止并启动所有受影响的控制器服务和处理器enter image description here
  • 如果尚未定义变量,则使用定义的值创建新变量。
  

如何获取ClientID?

您可以进行以下Get Rest api调用:

curl -X GET <URL>/nifi-api/process-groups/<process-group-id>/variable-registry

从响应中可以获得clientID详细信息。

答案 1 :(得分:0)

要使用具有kerberos身份验证的nifi-api更新变量,您需要从nifi-api获取令牌并获取版本号,然后卷曲api以更新变量

  1. 获取令牌
kinit  
token=$(curl -k -X POST --negotiate -u : https://nifi_hostname:port/nifi-api/access/kerberos) 
  1. 获取版本号
curl -k -X GET https://nifi_hostname:port/nifi-api/process-groups/PG-Id/variable-registry -H "Authorization: Bearer $token"
  1. 更新变量“ web_site”
curl -k -X PUT https://nifi_hostname:port/nifi-api/process-groups/PG-ID/variable-registry  -H 'Content-Type: application/json' -d '{"processGroupRevision":{"version":**version_number**},"variableRegistry":{"processGroupId":"**PG-ID**","variables":[{"variable":{**"name":"web_site","value":"stackoverflow"**}}]}}' -H "Authorization: Bearer $token"

PG-ID是进程组ID