普通文本  |  58行  |  1.44 KB

# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Provides utility methods for interacting with upstart"""

import os

from autotest_lib.client.common_lib import utils

def ensure_running(service_name):
    """Fails if |service_name| is not running.

    @param service_name: name of the service.
    """
    cmd = 'initctl status %s | grep start/running' % service_name
    utils.system(cmd)


def has_service(service_name):
    """Returns true if |service_name| is installed on the system.

    @param service_name: name of the service.
    """
    return os.path.exists('/etc/init/' + service_name + '.conf')


def is_running(service_name):
    """
    Returns true if |service_name| is running.

    @param service_name: name of service
    """
    return utils.system_output('status %s' % service_name).find('start/running') != -1

def restart_job(service_name):
    """
    Restarts an upstart job if it's running.
    If it's not running, start it.

    @param service_name: name of service
    """

    if is_running(service_name):
        utils.system_output('restart %s' % service_name)
    else:
        utils.system_output('start %s' % service_name)

def stop_job(service_name):
   """
   Stops an upstart job.
   Fails if the stop command fails.

   @param service_name: name of service
   """

   utils.system('stop %s' % service_name)