예제 #1
0
    virtual std::unique_ptr<Cursor> metadata_query(std::string metric, std::string where_clause) {
        boost::property_tree::ptree query;

        // No (re)sampling
        query.add("select", "names");

        // Add metric name
        if (!metric.empty()) {
            query.add("metric", metric);
        }

        // Where clause
        if (!where_clause.empty()) {
            boost::property_tree::ptree where = from_json(where_clause);
            query.add_child("where", where);
        }

        std::stringstream stream;
        boost::property_tree::json_parser::write_json(stream, query, true);
        std::string query_text = stream.str();

        auto cursor = aku_query(db_, query_text.c_str());
        std::unique_ptr<LocalCursor> ptr(new LocalCursor(db_, cursor));
        return std::move(ptr);
    }
예제 #2
0
    virtual std::unique_ptr<Cursor> query(std::string begin,
                                          std::string end,
                                          std::vector<std::string> ids)
    {
        boost::property_tree::ptree query;
        // Add metric name
        query.add("metric", "cpu");
        // Add time constraints
        boost::property_tree::ptree range;
        range.add("from", begin);
        range.add("to", end);
        query.add_child("range", range);
        // Where clause
        // Where clause
        boost::property_tree::ptree where;
        boost::property_tree::ptree array;
        for (auto series: ids) {
            auto val = series.substr(8, 1);
            boost::property_tree::ptree elem;
            elem.put("", val);
            array.push_back(std::make_pair("", elem));
        }
        where.add_child("key", array);
        query.add_child("where", where);
        std::stringstream stream;
        boost::property_tree::json_parser::write_json(stream, query, true);
        std::string query_text = stream.str();

        auto cursor = aku_query(db_, query_text.c_str());
        std::unique_ptr<LocalCursor> ptr(new LocalCursor(db_, cursor));
        return std::move(ptr);
    }
예제 #3
0
std::shared_ptr<DbCursor> AkumuliConnection::search(std::string query) {
    aku_Cursor* cursor = aku_query(db_, query.c_str());
    return std::make_shared<AkumuliCursor>(cursor);
}