def yum_update(downloadonly=False, dest_dir='/tmp'):
    """Run a yum update on this system

    This public method runs the yum -y update command to update
    packages from yum. If downloadonly is set to true, the yum
    updates will be downloaded to the specified dest_dir.

    :param dest_dir: (str) Full path to the download directory
    :param downloadonly: Boolean
    :return: int exit code from the yum command
    :raises CommandError
    """
    log = logging.getLogger(mod_logger + '.yum_update')

    # Type checks on the args
    if not isinstance(dest_dir, basestring):
        msg = 'dest_dir argument must be a string'
        log.error(msg)
        raise CommandError(msg)
    if not isinstance(downloadonly, bool):
        msg = 'downloadonly argument must be a bool'
        log.error(msg)
        raise CommandError(msg)

    # If downloadonly was True, download packages to dest_dir
    if downloadonly:
        # Create the destination directory if it does not exist
        log.info('Creating directory: %s', dest_dir)
        try:
            mkdir_p(dest_dir)
        except OSError:
            _, ex, trace = sys.exc_info()
            msg = 'Unable to create destination directory: {d}'.format(
                d=dest_dir)
            log.error(msg)
            raise CommandError, msg, trace

        # Build command string with downloadonly options specified
        command = ['yum', '-y', 'update', '--downloadonly',
                   '--downloaddir={d}'.format(d=dest_dir)]
        log.info('Downloading updates from yum to %s...', dest_dir)
    else:
        # Build command string to update directly
        command = ['yum', '-y', 'update']
        log.info('Installing yum updates from RHN...')

    # Run the command
    try:
        result = run_command(command)
    except CommandError:
        raise
    log.info('Yum update completed and exit with code: {c}'.format(
        c=result['code']))
    return result['code']
Run a yum update on this system

    This public method runs the yum -y update command to update
    packages from yum. If downloadonly is set to true, the yum
    updates will be downloaded to the specified dest_dir.

    :param dest_dir: (str) Full path to the download directory
    :param downloadonly: Boolean
    :return: int exit code from the yum command
    :raises CommandError