Active IQ Unified Manager Discussions

Giving "Break QSM" command a valid "dest interface"

korns
4,483 Views

I can't find a way to make this workflow work. We have a workflow that create QSM relationships and then this one which removes QSM relationships. The "Break QSM" Certified command has "destination interface" as a mandatory parameter. This environment is not use separate interfaces for snapmirror and we're just trying to get the simple case working where the destination interface is the same as what resolves for it's hostname or FQDN. So for "dest interface" I pass "secArray.name". However, that gives a FQDN such as hostname.acme.com. The WF returns an error saying Destination filer 'hostname.acme.com' does not match hostname 'hostname' which secArray.name is passed. This matches what snapmirror status shows:

dr-stor-7m-2> snapmirror status

Snapmirror is on.

Source                                            Destination                                 State          Lag        Status

hq-stor-7m-1.acme.com:/vol/alpha/dev_aaaaa_ddddd  dr-stor-7m-2:/vol/gamma/sm_dev_aaaaa_ddddd  Snapmirrored   00:18:42   Idle

hq-stor-7m-1.acme.com:beta                        dr-stor-7m-2:sm_beta                        Snapmirrored   05:06:56   Idle

192.168.126.185:prd_ms_prd_pdc_01_ds23            dr-stor-7m-2:sm_prd_ms_prd_pdc_01_ds23      Snapmirrored   1002:51:21  Idle

So thinking I need "dest interface" to just be the simple name I changed the parameter for dest interface to:

     splitByDelimiter(secArray.name,".",0)  

to split out just the simple name in front of the first dot.

But with this change the commands reports that no 'dest interface' has been passed at all and fails. Any ideas to get out of this?

Screen shot of errors follows and workflow itself is attached

1 ACCEPTED SOLUTION

ajitb
4,483 Views

Passing the destination interface as just the hostname instead of the FQDN should work for you and splitByDelimiter() is a good tool for getting the hostname from the FQDN.

However, the delimiter argument in splitByDelimiter(secArray.name, ".", 0) is actually a regular expression because MVEL delegates split() to String.split(). The dot character has special meaning in regular expressions and therefore we must escape it. The following syntax with "\\" as the escape sequence should work.

splitByDelimiter(secArray.name,"\\.",0)

-Ajit

View solution in original post

5 REPLIES 5

abhit
4,483 Views

Able to reproduce the issue.

More details will be posted soon.

Regards

Abhi

adaikkap
4,483 Views

Hi David,

     Can you open a case with NetApp Global Support ? So that it can be added to the bug  ?

Regards

adai

korns
4,483 Views

Hi Adai,

So what do you think? Since I've resolved my issue to being improperly escaped "." is there really a bug here? ... or is this just the way it works?


Dave

ajitb
4,484 Views

Passing the destination interface as just the hostname instead of the FQDN should work for you and splitByDelimiter() is a good tool for getting the hostname from the FQDN.

However, the delimiter argument in splitByDelimiter(secArray.name, ".", 0) is actually a regular expression because MVEL delegates split() to String.split(). The dot character has special meaning in regular expressions and therefore we must escape it. The following syntax with "\\" as the escape sequence should work.

splitByDelimiter(secArray.name,"\\.",0)

-Ajit

korns
4,483 Views

Thanks Ajit,

That fixed the workflow and tested successfully!

This community site is awesome! I was working another issue the other day where I thought I needed to escape a "." and I was only single-back-slashing "\." ... so thanks again.

Dave

Public