Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 07-21-2023 06:17 AM
Hi everyone,
I'm trying to use NiFis Rest API to start and stop a Processor, but evertime I get the response
The desired state is not set
Here is my curl-Command which I use:
curl -k --header "Authorization: Bearer $token" -i -H 'Content-Type: application/json' -XPUT -d'{ "revision": { "version": 18, "clientId": "01891026-da00-199f-9dc9-ae3a37dce067" }, "status": { "runStatus": "RUNNING" }, "component": { "id": "0189100e-1e29-115c-ec96-b857cd155f4a", "state": "RUNNING" }, "id": "0189100e-1e29-115c-ec96-b857cd155f4a" }' https://localhost:8443/nifi-api/processors/0189100e-1e29-115c-ec96-b857cd155f4a/run-statusHas anyone an idea what's the problem?
Best regards
Maik
Created 07-21-2023 06:28 AM
Hi @CommanderLaus ,
Are you sure that your post data is correct? It needs to be in the following format:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}yours looks like this:
{
"revision": {
"version": 18,
"clientId": "01891026-da00-199f-9dc9-ae3a37dce067"
},
"status": {
"runStatus": "RUNNING"
},
"component": {
"id": "0189100e-1e29-115c-ec96-b857cd155f4a",
"state": "RUNNING"
},
"id": "0189100e-1e29-115c-ec96-b857cd155f4a"
}refer to : https://nifi.apache.org/docs/nifi-docs/rest-api/index.html
If that helps please accept solution.
Thanks
Created 07-21-2023 06:28 AM
Hi @CommanderLaus ,
Are you sure that your post data is correct? It needs to be in the following format:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}yours looks like this:
{
"revision": {
"version": 18,
"clientId": "01891026-da00-199f-9dc9-ae3a37dce067"
},
"status": {
"runStatus": "RUNNING"
},
"component": {
"id": "0189100e-1e29-115c-ec96-b857cd155f4a",
"state": "RUNNING"
},
"id": "0189100e-1e29-115c-ec96-b857cd155f4a"
}refer to : https://nifi.apache.org/docs/nifi-docs/rest-api/index.html
If that helps please accept solution.
Thanks
Created 07-21-2023 06:47 AM
Hi @SAMSAL ,
thank you very much, you where absolutely right. I tried so many solutions from other members from other topics, that I completly messed up my own one.
Nice one, thank's again
Maik
Created 07-21-2023 07:17 AM
Hello again,
if I start the processor via API, the "version" of the processor counts up. In my case above from version 18 to version 19.
If I want to stop the processor now via API, I have to submit the new version 19.
Is it possible to start/stop the processoer without the up-to-date version? Or is it possible, that I get the current version only via API, save it as a variable (e.g. $version) and use this variable in my next API-Call?
Greetings
Maik
Created 07-21-2023 07:49 AM
Hi @CommanderLaus ,
If you do anything manually with the processor you are trying to change its Running State through the API, then yes the revision will be updated. In my case what I do is basically the first API InvokeHttp is to get the latest revision using the following GET API:
https://localhost:8443/nifi-api/processors/${pipeline.start.processor.id}
This will give the following response where you can parse the latest "version" value using something like EvaluateJsonPath processor and store the value in an attribute:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"id": "value",
"uri": "value",
"position": {…},
"permissions": {…},
"bulletins": [{…}],
"disconnectedNodeAcknowledged": true,
"component": {…},
"inputRequirement": "value",
"status": {…},
"operatePermissions": {…}
}
Then use extracted version attribute to build the next API post Body , for example in my case I use ReplaceText processor to generate the post body :
{
"revision": {
"clientId": "${pipeline.start.processor.id}",
"version": ${processorVersion}
},
"state": "...",
"disconnectedNodeAcknowledged": true
}
Hope that helps.