2015-07-08 01:45 AM
I created a workflow for volume creation, but the execution of it behaves differently and strange.
Yesterday, I executed the workflow with all the params and that's how it looks like:
Today my colleague tried to execute the same workflow, it failed and see the details:
It happend several times already. It looks like when she executes the workflow, it does not pass the params and values to the "ISCSI - Map LUN" command. It did in my case.
I'm 100 % sure nobody modified the workflow.
Have you ever seen this? May it be somehow related to reservations?
Thanks for help.
Solved! SEE THE SOLUTION
2015-07-08 03:21 AM
2015-07-09 03:53 AM
thanks for hints. I did a few more tests and it looks like the workflow does not take hostnames, only IPs. If I use hostname, it fails, if IP it proceeds.
Strange. May be something in OCUM as well.
I'll continue troubleshooting.
Thank you anyway.
2015-07-09 07:09 AM
Hmm.. there is nothing strange about it. Its only the expected bahviour depending on the filter query you have in your workflow. You need to understand the building blocks of a workflow and how it works.
But since you insist on troubleshooting yourself , please continue.
2015-07-10 03:06 AM - edited 2015-07-10 03:09 AM
Filters are SQL queries which run against wfa internal DB. So if you get errors like No results were found. The following filters have returned empty result. You can go to the location which is also pointed out in the error message and Test the filter with the same set of inputs as you gave at workflow execution time.. The filter Test Button is available at the bottom left corner.
Now about your error. If you look at the filter you have in Resource Selection for Command ISCSI Map Lun, its clearly says it needs Array IP and NOT Array name. If you give array name, the SQL query will not be able to find any row with that input in ip column. Hence the failure.
Now if you don't want to enter another User-Input called array IP, you can get it from the Volume definition from the Command "Create Volume" . See below.
I've obtained the array ip from volume1.array.ip
If you start typing the words "volume1." you'll see auto-complete drop-down options being available for selection.
Now your workflow will work for both Array name as well as array IP whichever the user provides.
2015-07-10 04:22 AM
thanks a lot for your answer, much appreciated. I will give it a try this afternoon.
But I'm still thinking, I know the Map Lun command wanted IP, but where am I supposed to find which command provides IP? What if I have 20 or more commands in a workflow, should I go and try all of them? Obviously I want user to enter either IP or hostname and WF should take care of it.
This way, it's not very efficient.
2015-07-10 11:20 AM - edited 2015-07-10 11:28 AM
As I said before, you need to understand the building blocks of a workflow and how it works. I'll try to help you here in as simple terms as I can.
@ But I'm still thinking, I know the Map Lun command wanted IP, but where am I supposed to find which command provides IP?
Its not any command that provides the IP, its the found resource for the command which can do it. And its not just the volume1 resource for the Create Volume command which can do it. You could have used lun1.array.ip from command Create Lun and it would work. Or igroup1.array.ip or nfs_export_datavol.array.ip or even lun1.volume.aggregate.array.ip
So how to decide which one would? For that you need to look at the dictionary objects and understand what they are. For example the dictionary item volume for scheme storage. A dictionary items can be seen as a table in a DB schema and every simgle row in WFA dictionary is equivalent to a column in a DB table. So if a volume resouce is found, it means a row in DB is found, I can now get any column value for this volume row.
A volume row also has column array which is referance object to an array dictionary i.e. to an array table. You can identify them easily, they have an (R) in front of them when you look at them in Resource selection.
So the found volume row, gets me the array row and from array row I can get the ip.
Similarly from the found igroup, I get get array and from that the ip. or from lun I get volume, from volume I get aggrgate, from aggregate I can get array and then from array I can get ip. So out of all the possibilities, you decide which one to pick.
@ Obviously I want user to enter either IP or hostname and WF should take care of it.
WFA can take care of anything, provided you tell it to do so. Its a very intelligent and also highy flexible framework. And thats why it doesn't assume anything. It will do just as you direct it. There is nothing obvious here.