Jobs

This file defines the Job class, which is the primary code API to robot_upstart.

class robot_upstart.job.Job(name='ros', interface=None, user=None, workspace_setup=None, rosdistro=None, master_uri=None, log_path=None)[source]

Represents a ROS configuration to launch on machine startup.

Construct a new Job definition.

Parameters:
  • name (str) – Name of job to create. Defaults to “ros”, but you might prefer to use the name of your platform.
  • interface (str) – Network interface to bring ROS up with. If specified, the job will come up with that network interface, and ROS_IP will be set to that interface’s IP address. If unspecified, the job will come up on system startup, and ROS_HOSTNAME will be set to the system’s hostname.
  • user (str) – Unprivileged user to launch the job as. Defaults to the user creating the job.
  • workspace_setup (str) – Location of the workspace setup file to source for the job’s ROS context. Defaults to the current workspace.
  • rosdistro (str) – rosdistro to use for the /etc/ros/DISTRO path. Defaults to $ROS_DISTRO from the current environment.
  • master_uri (str) – For systems with multiple computers, you may want this job to launch with ROS_MASTER_URI pointing to another machine.
  • log_path (str) – The location to set ROS_LOG_DIR to. If changed from the default of using /tmp, it is the user’s responsibility to manage log rotation.
add(package=None, filename=None, glob=None)[source]

Add launch or other configuration files to Job.

Files may be specified using relative, absolute, or package-relative paths. Files may also be specified using shell globs.

Parameters:
  • package (str) – Optionally specify a package to search for the file or glob relative-to.
  • filename (str) – Name of a file to add to the job. Relative to the package path, if specified.
  • glob (str) – Shell glob of files to add to the job. Relative to the package path, if specified.
install(root='/', sudo='/usr/bin/sudo', Provider=None)[source]

Install the job definition to the system.

Parameters:
  • root (str) – Override the root to install to, useful for testing.
  • sudo (str) – Override which sudo is used, useful for testing or for making it use gksudo instead.
  • provider (Provider) – Override to use your own generator function for the system file preparation.
uninstall(root='/', sudo='/usr/bin/sudo', Provider=None)[source]

Uninstall the job definition from the system.

Parameters:
  • root (str) – Override the root to uninstall from, useful for testing.
  • sudo (str) – Override which sudo is used, useful for testing or for making it use gksudo instead.
  • provider (Provider) – Override to use your own generator function for the system file preparation.

Example

A minimal example of creating an upstart job using this API:

import robot_upstart

j = robot_upstart.Job()
j.add(package="myrobot_bringup", filename="launch/base.launch")
j.install()

The Job.add() method may be called multiple times, of course, and you may alternatively specify a glob, if you’re like to create a job which launches all of the launchfiles from a package, eg:

import robot_upstart

j = robot_upstart.Job()
j.add(package="myrobot_bringup", glob="launch/*.launch")
j.install()

Finally, if the package parameter is not specified, then the glob or filename is relative to the current directory, rather than a package.