Active IQ Unified Manager Discussions
Active IQ Unified Manager Discussions
Hi all,
I've been googling, reading random posts on this forum and pouring over examples in:
https://MYWFAHOST/rest/docs/#!/Execution%3AWorkflows/executeWorkflow
I've been able to make GET calls works, but am yet to make a POST/PUT/DELETE do anything helpful.
I starteed with a hugely basic workflow in an effort get passing things via REST down pat. I've kept everythign in CURL, as that is what the examples noted above use and i'm wanting things to be easy.
For those where i currently am, here is a basic run down of what i know so far.
there are lots of ways to authenticate, but while learing BASIC is the one you should stick with. its super easy.
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" -X GET https://WFAserver:443/rest/workflows
the -k ignores SSH keys
the -u allows you to provide initial challange authentication
the --header is where you call out XML or JSON
the -X is where you specify GET/POST/PUT/DELETE
all of this is followed by the URI
This also works with out issue:
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" -X GET https://WFAserver:443/rest/workflows?name=testIgroup
Easy right? Thats what i thought too. The above work every time with out issue.
So when i tried to preform a POST to create an empty iGroup, my workflow has all the things in it to work and DOES work from the gui. Tthe only user input is "hostName", in an effor to make this as easy as possible. Under the advanced tab, i set the custom URI to "/testIgroup" In theory, it would be as hard as calling this:
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" --header "Accept: text/plain" -d '<?xml version="1.0" encoding="UTF-8"?><workflowInput><userInputValues><userInputEntry key="hostName" value="TESTTESTTEST"/></userInputValues></workflowInput>' -X POST https://WFAserver:443/rest/testIgroup/jobs
the -k ignores SSH keys
the -u allows you to provide initial challange authentication
the --header is where you call out XML or JSON and Accept type per the examples in the docs
the -X is where you specify GET/POST/PUT/DELETE
the -d is where you put your data payload, in this case an XML sting
'<?xml version="1.0" encoding="UTF-8"?>
<workflowInput>
<userInputValues>
<userInputEntry key="hostName" value="TESTTESTTEST"/>
</userInputValues>
</workflowInput>'
all of this is followed by the URI
i get this:
No resource method found for POST, return 405 with Allow header
I then tried using a DELETE method from a post i read from "sinhaa". I changed the type to DELETE and put /{hostName}/testIgroup in the custom URI area under the advanced tab.
then attempted to call it with this:
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" -X DELETE https://WFAserver:443/rest/TESTtestTEST/testIgroup
I was hopeful, but this also didn't work for me.
No resource method found for DELETE, return 405 with Allow header
So. I'm going in circles trying to figure this out and am now giving up and asking for help.
A) what exactally is a "workflow_exectuion_id"
B) what is a "workflow_uuid"
C) what on earth am i doing wrong?
Thanks in advance!
Solved! See The Solution
Well...
In explaing how I am right and WFA is wrong, i answered my own question.
WTF you ask?
Heh.
I will show you the mistake i made using my example from earlier.
Diffrences that made it work are now in RED.
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" --header "Accept: text/plain" -d '<?xml version="1.0" encoding="UTF-8"?><workflowInput><userInputValues><userInputEntry key="hostName" value="TESTTESTTEST"/></userInputEntry></userInputValues></workflowInput>' -X POST https://WFAserver:443/rest/testIgroup/jobs
the -k ignores SSH keys
the -u allows you to provide initial challange authentication
the --header is where you call out XML or JSON and Accept type per the examples in the docs
the -X is where you specify GET/POST/PUT/DELETE
the -d is where you put your data payload, in this case an XML sting
'<?xml version="1.0" encoding="UTF-8"?>
<workflowInput>
<userInputValues>
<userInputEntry key="hostName" value="TESTTESTTEST"/> ### Oops, this needs to be removed
</userInputEntry> ### Oops, i didn't close my user input tag
</userInputValues>
</workflowInput>'
all of this is followed by the URI
Corrected CURL
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" --header "Accept: text/plain" -d '<?xml version="1.0" encoding="UTF-8"?><workflowInput><userInputValues><userInputEntry key="hostName" value="TESTTESTTEST"></userInputEntry></userInputValues></workflowInput>' -X POST https://WFAserver:443/rest/testIgroup/jobs
For posterity, it now returns a pile of things. One of which is the jobId number.
jobId="####"
Once you have this job ID, you can then loop looking for the jobstatus
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" -X GET https://WFAserver:443/rest/rest/workflows/jobs/####
There is a lot of data returned, but this is what i was looking for
<jobStatus>SCHEDULED</jobStatus><jobType>Workflow Execution -
<jobStatus>EXECUTING</jobStatus><jobType>Workflow Execution - ....
<jobStatus>FAILED</jobStatus><errorMessage>Failed to connect to cluster node: ...(i disconnected my arrays on purpose so i can test w/o worry)
Well...
In explaing how I am right and WFA is wrong, i answered my own question.
WTF you ask?
Heh.
I will show you the mistake i made using my example from earlier.
Diffrences that made it work are now in RED.
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" --header "Accept: text/plain" -d '<?xml version="1.0" encoding="UTF-8"?><workflowInput><userInputValues><userInputEntry key="hostName" value="TESTTESTTEST"/></userInputEntry></userInputValues></workflowInput>' -X POST https://WFAserver:443/rest/testIgroup/jobs
the -k ignores SSH keys
the -u allows you to provide initial challange authentication
the --header is where you call out XML or JSON and Accept type per the examples in the docs
the -X is where you specify GET/POST/PUT/DELETE
the -d is where you put your data payload, in this case an XML sting
'<?xml version="1.0" encoding="UTF-8"?>
<workflowInput>
<userInputValues>
<userInputEntry key="hostName" value="TESTTESTTEST"/> ### Oops, this needs to be removed
</userInputEntry> ### Oops, i didn't close my user input tag
</userInputValues>
</workflowInput>'
all of this is followed by the URI
Corrected CURL
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" --header "Accept: text/plain" -d '<?xml version="1.0" encoding="UTF-8"?><workflowInput><userInputValues><userInputEntry key="hostName" value="TESTTESTTEST"></userInputEntry></userInputValues></workflowInput>' -X POST https://WFAserver:443/rest/testIgroup/jobs
For posterity, it now returns a pile of things. One of which is the jobId number.
jobId="####"
Once you have this job ID, you can then loop looking for the jobstatus
curl -k -u USERNAME:PASS --header "Content-Type: application/xml" -X GET https://WFAserver:443/rest/rest/workflows/jobs/####
There is a lot of data returned, but this is what i was looking for
<jobStatus>SCHEDULED</jobStatus><jobType>Workflow Execution -
<jobStatus>EXECUTING</jobStatus><jobType>Workflow Execution - ....
<jobStatus>FAILED</jobStatus><errorMessage>Failed to connect to cluster node: ...(i disconnected my arrays on purpose so i can test w/o worry)