By now, you will no doubt be aware that Ooyala Flex is a media management platform, and as a media management platform, it must deal with large files and long term operations. So, certain Actions such as transcoding and publishing may take a long time to run. Some Actions may also require access to Resources to get work done. For example a Transcode Action will require access to a Transcode Resource. Although Ooyala Flex could run an Action immediately at your request, this could present problems in terms of Resource contention and the extended length time of the User interface or API interface to respond. It also limits the use of Actions to a certain degree, as you may wish a specific Action to run at a specific time in the future. An example might be that you want to publish an Asset to YouTube next Sunday at 09:00 hours.

For all of these reasons, Actions are run inside Jobs. These Jobs are managed by Ooyala Flex’s internal Job Scheduler. The Job scheduler is responsible for that handling the storage, retrieval, prioritization, and execution of Jobs.

A Job is a unit of work that comprises of an Action (that defines the work) and additional properties such as start time, priority, status and owner. Jobs run as transactions which means they either complete, or fail and roll back to their original state. A Job runs in its own Context which means it is completely isolated from all other Jobs and can be run on any Ooyala Flex Node in a Ooyala Flex Cluster that supports this Job type. A Job contains all the information to run in isolation, including configuration information. This information is stored in the Job's "Context". This is important, as it means that if a Job fails, it can be retried.

The properties that belong to each Job are:

Start Time: The time that the Job has been scheduled to begin execution.

End Time: The time that the Job completed execution (assumed it has completed).

Duration: The time the Job took to run.

Priority: The priority of the Job e.g. Lowest, Low, Normal, High, Highest.

Owner: The User that owns the Job.

Status: The current status of the Job e.g. Scheduled, Running, Failed, Completed.

Retries: The number of times that a Job has been retried. This means that if a Job has failed it can be retried.

Action: This is the Action (defined work) that the Job is carrying out on your behalf.

Configuration: When a Job is created, the Configuration is copied from the Action to the Job. This means that if a Job fails, you can amend the Configuration for a specific Job and then retry it.

There are a few scenarios in which the actual start time of a job may be delayed. This could happen if:

• There are other higher priority Jobs that require execution.

• The resources that are required for the job are contended.

This guide contains the following topics: