Как изменить реестр переменных Nifi с помощью rest-api - PullRequest
0 голосов
/ 24 августа 2018

Я знаю, что можно использовать rest-api для получения значений в реестре переменных, но есть ли способ установить значения переменных? Когда я изменяю переменную, я вижу, что отправляется следующий запрос POST:

http://localhost:8080/nifi-api/process-groups/{ID}/variable-registry/update-requests

но я не совсем понимаю, где VariableRegistryEntity вступает в игру или как я могу работать с переменными.

В более широком смысле, я пытаюсь манипулировать переменными внутри собственного процессора Nifi из другой программы, поэтому любые рекомендации или идеи о том, как это сделать, будут приветствоваться.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Чтобы обновить переменную с помощью nifi-api с аутентификацией kerberos, вам нужно получить токен от 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 - идентификатор группы процессов

0 голосов
/ 24 августа 2018

Все переменные (ключ, значения) хранятся в реестре переменных , и когда мы обновляем / создаем переменные, у нас будут запросы на обновление rest api call in задний конец.

Если вы создаете пользовательский процессор для использования the variables, то вам нужно create processor до включить язык выражений , тогда вы можете ссылаться на переменные с помощью nifi expression language ${variable_name}, заменив на variable_value at run time.

См. эту ссылку для более подробной информации о реестре переменных в NiFi

Если вам нужно обновить / создать любую переменную в Nifi, вы можете использовать ниже остальных 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?

Вы можете сделать приведенный ниже вызов API Get Rest:

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

из ответа вы можете получить детали clientID.

...