def restart_app(id, restart=False, force=True):
    '''
    Restart the current server configuration for the specified app.

    :param restart: Restart the app
    :param force: Override the current deployment

    CLI Example:

    .. code-block:: bash

        salt marathon-minion-id marathon.restart_app my-app

    By default, this will only check if the app exists in marathon. It does
    not check if there are any tasks associated with it or if the app is suspended.

    .. code-block:: bash

        salt marathon-minion-id marathon.restart_app my-app true true

    The restart option needs to be set to True to actually issue a rolling
    restart to marathon.

    The force option tells marathon to ignore the current app deployment if
    there is one.
    '''
    ret = {'restarted': None}
    if not restart:
        ret['restarted'] = False
        return ret
    try:
        response = salt.utils.http.query(
            "{0}/v2/apps/{1}/restart?force={2}".format(_base_url(), _app_id(id), force),
            method='POST',
            decode_type='json',
            decode=True,
            header_dict={
                'Content-Type': 'application/json',
                'Accept': 'application/json',
            },
        )
        log.debug('restart response: %s', response)

        ret['restarted'] = True
        ret.update(response['dict'])
        return ret
    except Exception as ex:
        log.error('unable to restart marathon app: %s', ex.message)
        return {
            'exception': {
                'message': ex.message,
            }
        }
Restart the current server configuration for the specified app.

    :param restart: Restart the app
    :param force: Override the current deployment

    CLI Example:

    .. code-block:: bash

        salt marathon-minion-id marathon.restart_app my-app

    By default, this will only check if the app exists in marathon. It does
    not check if there are any tasks associated with it or if the app is suspended.

    .. code-block:: bash

        salt marathon-minion-id marathon.restart_app my-app true true

    The restart option needs to be set to True to actually issue a rolling
    restart to marathon.

    The force option tells marathon to ignore the current app deployment if
    there is one.