Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
Command to run/execute workflows ready for production in workflow automation tool...
2013-10-14
02:22 AM
7,582 Views
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Can we use command line(or any command) to run(execute) already created production workflows?
If yes, what are those commands and what is the process to do?
Regards
Shariq
Solved! See The Solution
1 ACCEPTED SOLUTION
migration has accepted the solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Shariq,
I'm not certain of what you're asking.
If you're asking if WFA can execute CLI commands against systems, the answer is "yes", but those wouldn't be workflows... those would be individual tasks. I also would like to point out that a recommendation and effectively a best practice is to leverage the API's via PowerShell or Perl in the WFA commands.
If you're asking if it is possible to call WFA workflows remotely, the answer to that question is also "yes". However, that's not exactly a 'cli'. WFA does have Web Services via REST and SOAP (REST is preferred) that allow you to programatically call WFA workflows. If that is what you're interested in, then I would suggest the following documents:
Hope this helps,
Kevin
6 REPLIES 6
migration has accepted the solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Shariq,
I'm not certain of what you're asking.
If you're asking if WFA can execute CLI commands against systems, the answer is "yes", but those wouldn't be workflows... those would be individual tasks. I also would like to point out that a recommendation and effectively a best practice is to leverage the API's via PowerShell or Perl in the WFA commands.
If you're asking if it is possible to call WFA workflows remotely, the answer to that question is also "yes". However, that's not exactly a 'cli'. WFA does have Web Services via REST and SOAP (REST is preferred) that allow you to programatically call WFA workflows. If that is what you're interested in, then I would suggest the following documents:
Hope this helps,
Kevin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Kevin,
Yes, I was asking that is it possible to call WFA workflows remotely via a command line. Actually, my problem statement is that I am looking to call and execute WFA workflows through Microsoft System Center Orchestrator. I think these WFA web services call should work.
So I will take a look at these documents. Thanks...
Regards
Shariq
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Shariq,
In that case, I think it might also be worthwhile if you check out this communities document: https://communities.netapp.com/docs/DOC-25899. This is where Jeremy shows how to initiate WFA workflows from vCenter Orchestrator... great stuff!
I also have a couple of requests... Please share your results when you're ready to share. Also, can you please mark if this post was helpful, or is answered? We're just trying to make sure we close out all open questions.
Thanks!
Kevin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Kevin,
Sure; once I am done, will share the results with the community.
Further, I have marked the answer "Correct".
Thanks for your prompt support!!!
Regards
Shariq
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ask and ye, shall receive. I actually built this little diddy a few days ago because I was trying to test for an intermittent error that I was getting with a command. (thousands of executions and finally found that the issue was the actual command (not the script... the actual command... strange). Anyway, I haven't had time to 'clean' this up but it will get you going. This is a simple script to execute a hard coded workflow with no User inputs though I do have the user inputs section definable in the script. The script executes the workflow and waits for the job to complete
Jeremy Goodrum, NetApp
The Pirate
Twitter: @virtpirate
Blog: www.virtpirate.com
--------------------------------------------
function Execute-HTTPPostCommand() {
param(
[string] $target = $null
)
$username = "admin"
$password = "admin"
$webRequest = [System.Net.WebRequest]::Create($target)
$auth = [System.Text.Encoding]::UTF8.GetBytes($username+":"+$password)
$base64 = [System.Convert]::ToBase64String($auth)
$webRequest.Headers.Add("AUTHORIZATION", "Basic $base64");
$webRequest.PreAuthenticate = $true
$webRequest.Method = "POST"
$webRequest.ContentType = "application/xml"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($post.OuterXML)
$webRequest.ContentLength = $bytes.Length
[System.IO.Stream] $requestStream = [System.IO.Stream]$webRequest.GetRequestStream()
$requestStream.Write($bytes,0,$bytes.Length)
$requestStream.Close()
[System.Net.WebResponse] $resp = $webRequest.GetResponse();
$rs = $resp.GetResponseStream();
[System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs;
[string] $results = $sr.ReadToEnd();
return $results;
}
function Execute-HTTPGetCommand() {
param(
[string] $target = $null
)
$username = "admin"
$password = "admin"
$webRequest = [System.Net.WebRequest]::Create($target)
$auth = [System.Text.Encoding]::UTF8.GetBytes($username+":"+$password)
$base64 = [System.Convert]::ToBase64String($auth)
$webRequest.Headers.Add("AUTHORIZATION", "Basic $base64");
$webRequest.PreAuthenticate = $true
[System.Net.WebResponse] $resp = $webRequest.GetResponse();
$rs = $resp.GetResponseStream();
[System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs;
[string] $results = $sr.ReadToEnd();
return $results;
}
# <userInputEntry key='vcs' value='192.168.0.31'/>
$post = [xml] "<workflowInput><userInputValues></userInputValues></workflowInput>"
$URL = "http://192.168.0.5/rest/workflows/66187d17-1092-4d2d-9072-2e5b06d9e723/jobs"
for ($i=1;$i -lt 101;$i++) {
$wait = 0
Write-Host "Starting Iteration #$i"
$results = Execute-HTTPPostCommand $URL
$jobs = [xml] $results
$JobURL = $URL + "/" + $jobs.job.jobId
DO {
$results = Execute-HTTPGetCommand $JobURL
$job = [xml] $results
$jobStatus = $job.job.jobStatus.jobStatus
switch ($jobStatus) {
"SCHEDULED" {$wait = 0;break;}
"PENDING" {$wait = 0;break;}
"EXECUTING" {$wait = 0;break;}
"COMPLETED" {$wait = 1;Write-Host "--Workflow Run $i Completed" -foregroundcolor "magenta";break;}
"FAILED" {$wait = 1;Write-Host "--Workflow Failed!!!!" -foregroundcolor "red"; Write-Host $job.job.jobStatus.errorMessage -foregroundcolor "red"; exit -1;break;}
"PLANNING" {$wait =0;break;}
default {$wait = 1;Write-Host "--Unexpected Message - $jobStatus" -foregroundcolor "red"; exit -1;break;}
}
} UNTIL ($wait -eq 1)
}
--------------------------------------------
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks...
I think this will help, though I am just in an initial phases of learning PowerShell scripting but it seems to be very helpful.
I will try this and let you know.
Regards
Shariq
