Tuesday, June 19, 2012

FTP Integration Pack Update v1.2

****Update 20120918****
I've just released v1.3 of the FTP/SFTP IP.
Post:
http://jmattivi.blogspot.com/2012/09/scorch-ftp-integration-pack-update-v13.html
CodePlex:
https://scorchestrator.codeplex.com/releases/view/94807


 ****Update****
I've updated the IP to v1.2 to fix an issue w/ the List Folder activity when using Secure = False.  Updated build has been posted to codeplex.
https://scorchestrator.codeplex.com/releases/view/89913


I've kicked the tires on the FTP Integration Pack a bit more and have updated the List Folder activity.  It will now only output the directory contents rather than displaying the entire verbose output (which is kinda redundant from the results published data).

I've also updated the download to Stable from Beta.  Please let me know if any bugs are encountered and/or if there are any feature requests.

Unfortunately, the FTPWebRequest class doesn't support wildcards for Secure = False (FTP). However, the Secure = True method (SFTP) in the IP does support using wildcards such as * or *.txt.

One way to get around the FTP method using wildcards would be to use the List Folder activity to find the files in the folder, parse them, and then pass each into the Download File activity.

For instance, use List Folder to get the files in the Output published data:
07-12-12 08:56AM 0 asdf.txt
07-12-12 08:56AM 0 blah.txt

Parse the Output and pass asdf.txt and blah.txt to the Download File activity.


The Integration Pack can be downloaded from this link below:
https://scorchestrator.codeplex.com/releases/view/89913



17 comments:

  1. Hello, I have this error when running the activity List Folder :

    Exception calling "Substring" with "2" argument(s): "StartIndex cannot be less than zero.
    Parameter name: startIndex"

    Exception: MethodInvocationException
    Target site: PipelineBase.Invoke

    Stack trace:
    at System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object[] arguments, MethodInformation methodInformation, Object[] originalArguments)
    at System.Management.Automation.DotNetAdapter.MethodInvokeDotNet(String methodName, Object target, MethodInformation[] methodInformation, Object[] arguments)
    at System.Management.Automation.DotNetAdapter.MethodInvoke(PSMethod method, Object[] arguments)
    at System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod method, Object[] arguments)
    at System.Management.Automation.PSMethod.Invoke(Object[] arguments)
    at System.Management.Automation.ParserOps.CallMethod(Token token, Object target, String methodName, Object[] paramArray, Boolean callStatic, Object valueToSet)
    at System.Management.Automation.MethodCallNode.InvokeMethod(Object target, Object[] arguments, Object value)
    at System.Management.Automation.MethodCallNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
    at System.Management.Automation.AssignmentStatementNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
    at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)

    ReplyDelete
    Replies
    1. Was this happening when the input Secure was set to False (standard FTP)?

      I've posted a new build of the IP below v1.2. Please let me know if this resolves the issue you're seeing.

      Thanks!

      https://scorchestrator.codeplex.com/releases/view/89913

      Delete
  2. Thanks to you !!
    Yes I use the standard FTP.

    This 1.2 version fails at registration :(

    ReplyDelete
  3. I believe this is due to the upgrade known issues w/ the OIT.

    You need to unregister the original version and uninstall it from the designer client and runbook servers. Then register and deploy the new version. Any runbooks w/ the activities should remain intact.

    ReplyDelete
  4. Hi,
    I have an error on the Download file activity, the List folder take the same ftp and work well. Thanks
    Error :

    Exception lors de l'appel de « GetResponse » avec « 0 » argument(s) : « Le serveur distant a retourné une erreur : (550) Fichier non disponible (par exemple, fichier introuvable, accès impossible). »

    Exception: MethodInvocationException
    Target site: PipelineBase.Invoke

    Stack trace:
    à System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object[] arguments, MethodInformation methodInformation, Object[] originalArguments)
    à System.Management.Automation.DotNetAdapter.MethodInvokeDotNet(String methodName, Object target, MethodInformation[] methodInformation, Object[] arguments)
    à System.Management.Automation.DotNetAdapter.MethodInvoke(PSMethod method, Object[] arguments)
    à System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod method, Object[] arguments)
    à System.Management.Automation.PSMethod.Invoke(Object[] arguments)
    à System.Management.Automation.ParserOps.CallMethod(Token token, Object target, String methodName, Object[] paramArray, Boolean callStatic, Object valueToSet)
    à System.Management.Automation.MethodCallNode.InvokeMethod(Object target, Object[] arguments, Object value)
    à System.Management.Automation.MethodCallNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
    à System.Management.Automation.AssignmentStatementNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
    à System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)

    ReplyDelete
  5. Hi,

    Are you using a wildcard in the file name for the Download File activity? Such as *.txt?

    ReplyDelete
    Replies
    1. Yes.
      My mistake, I didn't read the update ;)
      Thanks

      Delete
  6. Feature request:
    Be able to change filename in the same call, so a rename afterwards is not necessary, it's really not that hard to implement since it's in the (s)ftp standard
    Another thing would be to be able to choose bin/ascii transfer

    Regards KE

    ReplyDelete
  7. Hello,
    I just downloaded v1.2. The Published Data "FileName from Download File" always contains a leading blank ...
    Best Regards,
    Stefan

    ReplyDelete
    Replies
    1. Is this using SFTP or FTP? Is it only the Download File activity having the issue? I'm not able to repro this using SFTP. Are you using the published data in further activities that are showing the leading space?

      Delete
  8. I have v1.2 and I have made list folder (FTP) and Download file, I will like to make a wildcard download copy.
    I use {Output from "List Folder"} i filename in downloadfile.
    But I got this err.

    Exception calling "GetResponse" with "0" argument(s): "The remote server returned an error: (550) File unavailable (e.g., file not found, no access)."

    Exception: MethodInvocationException
    Target site: PipelineBase.Invoke

    Stack trace:
    at System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object[] arguments, MethodInformation methodInformation, Object[] originalArguments)
    at System.Management.Automation.DotNetAdapter.MethodInvokeDotNet(String methodName, Object target, MethodInformation[] methodInformation, Object[] arguments)
    at System.Management.Automation.DotNetAdapter.MethodInvoke(PSMethod method, Object[] arguments)
    at System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod method, Object[] arguments)
    at System.Management.Automation.PSMethod.Invoke(Object[] arguments)
    at System.Management.Automation.ParserOps.CallMethod(Token token, Object target, String methodName, Object[] paramArray, Boolean callStatic, Object valueToSet)
    at System.Management.Automation.MethodCallNode.InvokeMethod(Object target, Object[] arguments, Object value)
    at System.Management.Automation.MethodCallNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
    at System.Management.Automation.AssignmentStatementNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
    at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)

    Regards
    Torben

    ReplyDelete
    Replies
    1. Hi,

      You would need a PowerShell script or something after the List Folder activity to parse the Output published data and format it. Currently, the Output contains other properties in addition to the filename.

      For example,

      -rw-rw-r-- 1 1140 1013 37 Aug 20 13:23 filename.txt

      I know this isn't ideal and it's on my to-do list to fix. I've gotten some other feedback in previous comments above that I'd like to combine into the next v1.3 build.

      I don't want to remove all of the file properties in the response as these could be helpful in some circumstances. So I'm thinking of maybe adding another field to the published data that would contain only the filenames w/o the other properties.

      Delete
  9. Hi,

    I get "The operation has timed out" error when trying to list files. Is there a possibility to adjust time out period? Are you planning to release v1.3 soon?

    ReplyDelete
  10. Were you getting this timeout while using the FTP protocol (Secure = False)? I actually started updating the activities late last week to resolve some bugs and apply some feature requests. I'll add in lengthening the timeout for FTP transfers to 120 seconds. I'm hoping to wrap up v1.3 in the next couple days and have it updated on Codeplex by later this week.

    I'll also be updating it once the Toolkit hits RTM for SP1 as it includes some major improvements (i.e. cascading inputs).

    ReplyDelete
    Replies
    1. Secure is set to false. Runbook tester error sumary text is "Exception calling "GetResponse" with "0" argument(s): "The operation has timed out."
      When i connenct to ftp server using usual ftp client, getting welcome message takes ~10-15 s.

      Delete
  11. I've just released v1.3 out on CodePlex. Please let me know if that resolves the timeout issue.

    Thanks!

    ReplyDelete