nifi-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Burgess <>
Subject Re: Sending Arguments to Scripts from ExecuteScript
Date Mon, 19 Feb 2018 00:54:15 GMT

I don't think that's possible because I don't think the user-defined
properties are guaranteed to be in a particular order (insertion order
in the processor config dialog, e.g.), but someone please correct me
if I'm wrong. If true, then we wouldn't be able to have the
user-defined properties set deterministically as "positional"
arguments in an array.

You might be able to check to see if sys.argvs is defined [1] or None
or empty, and if so, then try the user-defined properties as variables
using the same technique. You wouldn't be able to support a "usage()"
type of thing (where in a command-line script you print the usage if
the arguments are not valid/complete), but you should be able to
determine whether the script is being run from the command-line Python
or from ExecuteScript Jython.



On Sun, Feb 18, 2018 at 10:25 AM, James McMahon <> wrote:
> Checking back in. Can we reference the user-defined custom config parms
> passed in from ExecuteScript as sys.argvs in the python script being
> executed by ExecuteScript?
> On Fri, Feb 16, 2018 at 1:14 PM, James McMahon <> wrote:
>> Good afternoon. I have a python script I would like to run from
>> ExecuteScript. Since my script can run from either a command line in debug
>> mode or from the ES processor, I'd like to set up initial logic to determine
>> which command line parms i have, and direct actions in the script
>> accordingly.
>> At the command line I'll execute like this: [configFile_nifi]
>> [loggingOutput as either of NIFI | SCRIPT] - two arguments.
>> From Matt B's helpful post here...
>> ...I know that I can feed the script these arguments from ExecuteScript by
>> creating two new properties within ExecuteScript and setting their values.
>> In the script I can read those into the script like this:
>> configFile = configFile_nifi.getValue()
>> targetOutput = loggingOutput.getValue()
>> But i need to read these arguments in one way if they are from the command
>> line, and using the above syntax if they are from the ExecuteScript call of
>> the script. If set by the NiFi ES processor, can i refer to these parms as
>> len(sys.argv), sys.argv[1], and sys.argv[2]?
>> If not, how can I direct the setting of my script variables based on
>> whether the arguments come from the command line or from the NiFi processor
>> configuration?
>> Jim

View raw message