"NIMBY" -- "Not In My Back Yard" -- controlling access to user-managed desktop blades.

Tractor allows user desktop machines to be used as part of the site-wide renderfarm simply by running the tractor-blade server program on them, just like on more typical server hosts. The blade process can be started automatically as a system service or manually by users themselves, then the blade registers itself automatically with tractor-engine.

However, it is not always desirable to allow all jobs from the site job queue to run on every machine, especially desktop machines. Tractor provides several levels of control over which jobs are allowed to run on a given blade.

In some cases the host is just not a good match to run certain types of jobs. Some jobs will require special software to be installed on target blades, or they may require a certain minimum amount of install RAM or disk. These are the cases where the "service key" job scripting system is used to match job requirements to server capabilities. For more details on this type of restriction, see the job scripting discussion of "RemoteCmd -service" keys, and the blade profile discussion of "Provides" lists.

Blade profile definitions, in blade.config, can also define which job owners have access to a given set of blades. The "Access" parameters in a blade profile define these user restrictions for all blades that are members of that profile. This generally the right level of control for typical farm machines.

In contrast, a given blade's NIMBY settings are often used to further restrict the set of jobs that will run on that specific host. Also, unlike blade.config profile settings, the NIMBY settings can be changed dynamically by users or wranglers through the main dashboard or the desktop nimby application. The most common form of NIMBY restriction for desktop blades is limit them to accepting work only from jobs that were spooled from that same host, that is from the user sitting at that desktop.

Running the NIMBY application

Program Arguments

The NIMBY appalication responds to the following command line arguments:

General Options
-h, --helpShow the help message and exit
Tractor monitor hostname and port (host:port).
Default (tractor-engine:80)
Port on which the tractor daemon(s) are listening
Default: 80
Port on which blade listens for admin queries
Default: 9005
Restrict jobs that the blade will execute; '1' to only accept jobs spooled from this blade's host, '0' to always allow remote jobs, 'private' to only accept remote or local jobs for current user, and 'screensaver' to only accept remote jobs when the screen saver is active.
The query interval (in seconds) that nimby will use when querying the blade for running jobs. The default is 5 seconds.
Tractor user to login.
Default: current computer logged in user.
Password for tractor user to login.
Default: None.
File containing login and password information.
Default: None.


Logging Options
-v, --verboseSet logging level to INFO and above.
--debugSet logging level to DEBUG and above.
--warningSet logging level to WARNING and above. This is the default logging level.
-q, --quietSet logging level to CRITICAL only.
--logfile=LOGFILEDefine a local file for logging. Default logging is to stdout. If a logfile is specified, the Python logger will use a rotating file handler, which allows the log file to be rotated at various intervals.


Operational Modes

The NIMBY UI supports 4 modes of operation:

Ejecting Active Jobs

If there are one or more active commands running on the local blade, they will be detailed in the Active Jobs box in the UI. If the operational mode is changed above to a mode which will not allow access, the current jobs will be allowed to finish, but no new tasks will be picked up by the blade.

Clicking on the Eject Active Jobs button will cause the blade to message the engine to kill the currently running task, and to re-queue it.

NIMBY Profile Settings

By default, all Tractor blades will accept work from any job owner, assuming that service keys match and other dispatching criteria are met. The optional "NIMBY" entry in a profile definition can be used to limit the jobs that will reach blades using that profile:

If you add "NIMBY": 1," to a blade's profile it will only accept local jobs spooled from that blade's host. Setting it to 0 restores the default behavior, described above.
The "NIMBY" setting can also accept a user name as a string. In so doing, all blades matching that profile will only accept jobs from the named user.

Note: This parameter is at the "top" level of a profile definition, is not placed in the "Access" dictionary. Also note that this value can be changed for an individual blade via the blade list context menus in the Tractor Dashboard.

Setting NIMBY

In addition to using blade profiles, there are two other ways to set the NIMBY state:

Working with Authentication

Beginning with the 1.5 version of Tractor, scripts now have the ability to authenticate via the engine. The NIMBY application supports three different ways of handling the password required for authentication.

Note that the configuration file may contain other information which might be read by other tractor scripts which also require authentication. The NIMBY application will read and use any information defined in the Tractor config dictionary as shown above.