Ejemplo n.º 1
0
def test_get_advanced_setting_found(mock_read_settings_file,
                                    mock_settings_values):
    for k, v in mock_settings_values.items():
        s = advanced_settings.get_adv_setting(k)
        assert s.value == v
        assert s.definition == \
            advanced_settings.settings_by_id[k]
Ejemplo n.º 2
0
async def set_advanced_setting(request: web.Request) -> web.Response:
    """ Set a specific advanced setting.

    The "id" field must correspond to an id field of a setting in
    `opentrons.config.advanced_settings.settings`. Saves the value of
    "value" for the setting that matches the supplied id.

    The response body includes the new settings in the same format as
    GET /settings, and a "links" object that may contain a "restart"
    key. If the "restart" key is present, the client should restart
    the robot, and the value is a URI that will do so.

    POST /settings {"id": short-id, "value": tristate new-value}

    -> 400 Bad Request {"error": error-shortname, "message": str}
    -> 500 Internal Server Error {"error": "error-shortname", "message": str}
    -> 200 OK {"settings": (as GET /settings),
               "links": {"restart": uri if restart required}}
    """
    global _SETTINGS_RESTART_REQUIRED
    data = await request.json()
    key = data.get('id')
    value = data.get('value')
    log.info(f'set_advanced_setting: {key} -> {value}')
    setting = advs.settings_by_id.get(key)
    if not setting:
        log.warning(f'set_advanced_setting: bad request: {key} invalid')
        return web.json_response(
            {
                'error': 'no-such-advanced-setting',
                'message': f'ID {key} not found in settings list',
                'links': {}
            },
            status=400)

    old_val = advs.get_adv_setting(key)
    advs.set_adv_setting(key, value)

    if key == 'disableLogAggregation'\
       and ARCHITECTURE == SystemArchitecture.BUILDROOT:
        code, stdout, stderr = await log_control.set_syslog_level(
            'emerg' if value else 'info')
        if code != 0:
            log.error(f"Could not set log control: {code}: stdout={stdout}"
                      f" stderr={stderr}")
            return web.json_response(
                {
                    'error': 'log-config-failure',
                    'message': 'Failed to set log upstreaming: {code}'
                },
                status=500)

    _SETTINGS_RESTART_REQUIRED = _SETTINGS_RESTART_REQUIRED or (
        setting.restart_required and old_val != value)
    return web.json_response(
        _get_adv_settings_response(),
        status=200,
    )
Ejemplo n.º 3
0
def split_labware_definitions():
    return advs.get_adv_setting('splitLabwareDefinitions')
Ejemplo n.º 4
0
def test_get_advanced_setting_not_found(mock_read_settings_file):
    assert advanced_settings.get_adv_setting("unknown") is None
Ejemplo n.º 5
0
def short_fixed_trash():
    return advs.get_adv_setting('shortFixedTrash')
Ejemplo n.º 6
0
def disable_home_on_boot():
    return advs.get_adv_setting('disableHomeOnBoot')
Ejemplo n.º 7
0
def dots_deck_type():
    return advs.get_adv_setting('deckCalibrationDots')
Ejemplo n.º 8
0
def calibrate_to_bottom():
    return advs.get_adv_setting('calibrateToBottom')
Ejemplo n.º 9
0
def get_setting_with_env_overload(setting_name):
    env_name = 'OT_API_FF_' + setting_name
    if env_name in os.environ:
        return os.environ[env_name].lower() in ('1', 'true', 'on')
    else:
        return advs.get_adv_setting(setting_name) is True