Fusion Server

Version 4.0
How To
Documentation
    Learn More

      Jobs API

      The Jobs API allows you to define schedules for objects that perform work. You can schedule datasources, tasks, and Spark jobs.

      This topic explains how to format requests to the Jobs API. To learn how to work with jobs and schedules in the Fusion UI, see Jobs and Schedules.

      Job runtime configuration

      In order to see this object within the Fusion UI, it must be associated with an app. To do this, create the object using the /apps endpoint.

      Job configuration requests have these parameters:

      • <type>:<id> path parameter (required)

        The resource identifier takes the form <type>:<id>, such as datasource:movie-db, spark:dailyMetricsRollup-counters, or task:delete-old-system-logs.

        See Job types below.

      • enabled body parameter

        "True" or "false" to enable or disable the job.

      • triggers body parameter

        This parameter defines one or more conditions that trigger the job. See Job triggers below.

      Below is an example request that configures a job:

      PUT /jobs/datasource:movie-db/schedule
      {
        "enabled": true,
        "triggers": [
          {"type": "cron", "enabled": true, "value": "0 */10 * * * *"}
        ]
      }

      Job types

      The job type must be specified as part of the resource identifier in PUT, POST, and DELETE calls. These are the possible job types:

      datasource

      A job to ingest data according to the specified datasource configuration, such as datasource:movie-db. Datasources are created using the Connector Datasources API or the Fusion UI.

      spark

      A Spark job to process data, such as spark:dailyMetricsRollup-counters. Spark jobs are created using the Spark Jobs API or the Fusion UI.

      See Spark Jobs.

      task

      A job to perform an HTTP call or log cleanup, such as task:delete-old-system-logs. Tasks are created using the Tasks API or the Fusion UI.

      See Tasks.

      Job triggers

      Each job can have multiple triggers, and each trigger configuration requires enabled and type parameters.

      Additional parameters are required by each trigger type, described below:

      Trigger type Parameters

      interval

      Run the job at a regular interval over some time range.

      • startTime

        The date and time at which the job will first run, as an ISO-8601 date-time string.

      • endTime

        The date and time at which the job will run last, as an ISO-8601 date-time string.

      • interval

        The interval at which the job will run, as an integer whose unit is specified by repeatUnit below.

      • repeatUnit

        One of: minute, hour, or day.

      cron

      Run the job on a cron-style schedule.

      value

      A cron string.

      job

      Run the job after another job succeeds or fails.

      • jobID

        The ID of the job that triggers this one.

      • runOnSuccess

        "True" to run when the specified job succeeds.

      • runOnFailure

        "True" to run when the specified job fails.

      • runOnAbort

        "True" to run when the specified job is aborted.

      Examples

      Get all datasource jobs

      Input
      curl -u user:pass http://fusion-host:8764/api/jobs?type=datasource
      Output
      [ {
        "resource" : "datasource:ratings-db",
        "enabled" : true,
        "startedBy" : "acb38917-611a-46e1-a3cf-4ed46a30fd24"
      }, {
        "resource" : "datasource:movies-db",
        "enabled" : true,
        "startedBy" : "acb38917-611a-46e1-a3cf-4ed46a30fd24",
        "status" : "success",
        "lastStartTime" : "2017-05-17T20:58:10.503Z",
        "lastEndTime" : "2017-05-17T20:58:42.020Z"
      } ]

      Start a datasource job now

      Input
      curl -u user:pass -X POST -H "Content-Type: application/json" http://fusion-host:8764/api/jobs/datasource:movies-db/actions -d '{"action": "start"}'
      Output
      {
        "resource" : "datasource:movies-db",
        "action" : "start",
        "accepted" : true,
        "message" : "Started job datasource:movies-db"
      }

      Get the job history for a datasource

      Input
      curl -u user:pass http://fusion-host:8764/api/jobs/datasource:movies-db/history
      Output
      [ {
        "resource" : "datasource:movies-db",
        "startTime" : "2017-05-17T21:01:46.743Z",
        "endTime" : "2017-05-17T21:02:05.720Z",
        "status" : "success"
      }, {
        "resource" : "datasource:movies-db",
        "startTime" : "2017-05-17T20:58:10.503Z",
        "endTime" : "2017-05-17T20:58:42.020Z",
        "status" : "success"
      } ]

      Define a trigger for a datasource job

      Input
      curl -u user:pass -X PUT -H "Content-Type: application/json" http://fusion-host:8764/api/jobs/datasource:ratings-db/schedule -d '{"triggers": [{"type": "cron", "enabled": "true", "expression": "0 15 10 ? * MON-FRI"}]}'
      Output
      {
        "resource" : "datasource:ratings-db",
        "triggers" : [ {
          "type" : "cron",
          "enabled" : true,
          "expression" : "0 15 10 ? * MON-FRI",
          "type" : "cron"
        } ]
      }
      Loading API specification...