Tools

Note

For the Python package containing pre-built and re-usable tools, see Gladier Tools

As noted in A simple Gladier application, a Gladier application defines a set of tools that are to be executed by the associated flow.

Gladier Tools are the glue that holds together Globus Flows and Compute Functions. A tool bundles everything that a Compute Function needs to run, so that the Gladier Client can register the function, check its requirements, and run it inside the Globus Flow.

The following code implements a simple tool, MakeDirs, that runs a single Compute Function, makedirs.

from gladier import GladierBaseTool, generate_flow_definition


def makedirs(**data):
    """Make a directory on the filesystem"""
    import os

    os.makedirs(data["name"], mode=data["mode"], exist_ok=data["exist_ok"])
    return data["name"]


@generate_flow_definition
class MakeDirs(GladierBaseTool):
    """List files on the filesystem"""

    compute_functions = [makedirs]
    required = ["name"]
    flow_input = {"mode": 0o777, "exist_ok": False}

In the same module, this can be added to a client by simply adding the MakeDirs class to gladier_tools:

# from gladier import GladierBaseClient
@generate_flow_definition
class ExampleClient(GladierBaseClient):
   gladier_tools = [MakeDirs]

A tool is composed of zero or more compute_functions and a flow_definition. A flow can be specified explicitly, or if it involves just a single Compute Function, can be generated automatically by using the @generate_flow_definition decorator. When applied to tools, this decorator will create a simple one-state flow for the function to run.

The main attributes of a Gladier Tool are here:

  • compute_functions (list of callables) – A list of functions this tool uses.

  • flow_input (dict): Default input that should be used in the flow. This is automatically overridden if the user supplies flow input to the Gladier Client

  • required (list of strings): A list of critical flow_input keys that must be present for the function to be run. Gladier will raise an exception if these are not present when the user attempts to run the flow.

  • flow_definition (dict): (Optional) A complete Globus Flow for running this tool. Provides a built-in flow new users can use to instantly run your tool.

The Gladier Tools package provides a set of predefined, generally useful tools for common tasks.