Example #1
0
/*
 * Parse an RRA definition
 */
static int parse_tag_rra_cf(
    xmlTextReaderPtr reader,
    rra_def_t *rra_def)
{
    int       status;

    status = get_xml_string(reader,
                                  rra_def->cf_nam, sizeof(rra_def->cf_nam));
    if (status != 0)
        return status;

    status = rrd_cf_conv(rra_def->cf_nam);
    if (status == -1) {
        rrd_set_error("parse_tag_rra_cf: Unknown consolidation function: %s",
                      rra_def->cf_nam);
        return -1;
    }

    return 0;
}                       /* int parse_tag_rra_cf */
Example #2
0
static int set_hwsmootharg(
    rrd_t *rrd,
    enum cf_en cf,
    enum rra_par_en rra_par,
    const char *arg)
{
    double    param;
    unsigned long i;
    signed short rra_idx = -1;
    unsigned int strtod_ret_val;

    /* read the value */
    strtod_ret_val = rrd_strtodbl(arg, NULL, &param, NULL);
    /* in order to avoid smoothing of SEASONAL or DEVSEASONAL, we need to 
     * the 0.0 value*/
    if ( (strtod_ret_val == 1 || strtod_ret_val == 2 ) &&
         (param < 0.0 || param > 1.0) ) {
        rrd_set_error("Holt-Winters parameter must be between 0 and 1");
        return -1;
    } else if( strtod_ret_val == 0 || strtod_ret_val > 2 ) {
        rrd_set_error("Unable to parse Holt-Winters parameter");
        return -1;
    }
    /* does the appropriate RRA exist?  */
    for (i = 0; i < rrd->stat_head->rra_cnt; ++i) {
        if (rrd_cf_conv(rrd->rra_def[i].cf_nam) == cf) {
            rra_idx = i;
            break;
        }
    }
    if (rra_idx == -1) {
        rrd_set_error("Holt-Winters RRA does not exist in this RRD");
        return -1;
    }

    /* set the value */
    rrd->rra_def[rra_idx].par[rra_par].u_val = param;
    return 0;
}
Example #3
0
static int set_windowarg(
    rrd_t *rrd,
    enum rra_par_en rra_par,
    const char *arg)
{
    unsigned long param;
    unsigned long i, cdp_idx;
    signed short rra_idx = -1;

    /* read the value */
    param = atoi(arg);
    if (param < 1 || param > MAX_FAILURES_WINDOW_LEN) {
        rrd_set_error("Parameter must be between %d and %d",
                      1, MAX_FAILURES_WINDOW_LEN);
        return -1;
    }
    /* does the appropriate RRA exist?  */
    for (i = 0; i < rrd->stat_head->rra_cnt; ++i) {
        if (rrd_cf_conv(rrd->rra_def[i].cf_nam) == CF_FAILURES) {
            rra_idx = i;
            break;
        }
    }
    if (rra_idx == -1) {
        rrd_set_error("Failures RRA does not exist in this RRD");
        return -1;
    }

    /* set the value */
    rrd->rra_def[rra_idx].par[rra_par].u_cnt = param;

    /* erase existing violations */
    for (i = 0; i < rrd->stat_head->ds_cnt; i++) {
        cdp_idx = rra_idx * (rrd->stat_head->ds_cnt) + i;
        erase_violations(rrd, cdp_idx, rra_idx);
    }
    return 0;
}
Example #4
0
static int set_deltaarg(
    rrd_t *rrd,
    enum rra_par_en rra_par,
    const char *arg)
{
    rrd_value_t param;
    unsigned long i;
    signed short rra_idx = -1;
    unsigned int strtod_ret_val;

    strtod_ret_val = rrd_strtodbl(arg, NULL, &param, NULL);
    if ((strtod_ret_val == 1 || strtod_ret_val == 2) &&
         param < 0.1) {
        rrd_set_error("Parameter specified is too small");
        return -1;
    } else if( strtod_ret_val == 1 || strtod_ret_val > 2 ) {
        rrd_set_error("Unable to parse parameter in set_deltaarg");
        return -1;
    }

    /* does the appropriate RRA exist?  */
    for (i = 0; i < rrd->stat_head->rra_cnt; ++i) {
        if (rrd_cf_conv(rrd->rra_def[i].cf_nam) == CF_FAILURES) {
            rra_idx = i;
            break;
        }
    }
    if (rra_idx == -1) {
        rrd_set_error("Failures RRA does not exist in this RRD");
        return -1;
    }

    /* set the value */
    rrd->rra_def[rra_idx].par[rra_par].u_val = param;
    return 0;
}