Commit 2e89f300 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

Merge remote-tracking branch 'bogensberger/master' into crate_backend

Conflicts:
	fnordmetric-core/build/cmake/CMakeLists.txt
	fnordmetric-core/src/metricdb/httpapi.cc
	fnordmetric-core/src/server.cc
parents 88b62145 015d37f7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
#cmakedefine FNORD_ENABLE_MYSQL
#cmakedefine FNORD_ENABLE_CRATE
+5 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include "fnordmetric/sql/backends/metricservice/metrictablerepository.h"
#include "fnordmetric/sql/backends/csv/csvbackend.h"
#include "fnordmetric/sql/backends/mysql/mysqlbackend.h"
#include <fnordmetric/sql/backends/crate/cratebackend.h>

namespace fnordmetric {

@@ -61,6 +62,10 @@ void QueryEndpoint::handleHTTPRequest(
    query_service.registerBackend(
        std::unique_ptr<fnordmetric::query::Backend>(
            new fnordmetric::query::csv_backend::CSVBackend));

    query_service.registerBackend(
        std::unique_ptr<fnordmetric::query::Backend>(
            new fnordmetric::query::crate_backend::CrateBackend));
  }

  query::QueryService::kFormat resp_format = query::QueryService::FORMAT_JSON;
+5 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include "cli/cli.h"
#include <fnordmetric/sql/backends/csv/csvbackend.h>
#include <fnordmetric/sql/backends/mysql/mysqlbackend.h>
#include <fnordmetric/sql/backends/crate/cratebackend.h>

namespace fnordmetric {
namespace cli {
@@ -168,6 +169,10 @@ void CLI::execute(Environment* env) {
      std::unique_ptr<fnordmetric::query::Backend>(
          new fnordmetric::query::csv_backend::CSVBackend));

  query_service.registerBackend(
      std::unique_ptr<fnordmetric::query::Backend>(
        new fnordmetric::query::crate_backend::CrateBackend));

  query_service.executeQuery(
      input,
      getOutputFormat(env),
+25 −1
Original line number Diff line number Diff line
@@ -73,6 +73,21 @@ static MetricService makeMetricService(
    return MetricService::newWithDiskBackend(datadir, backend_scheduler);
  }

  if (backend_type == "crate") {
    if (!env()->flags()->isSet("crate_host")) {
       RAISE(
           kUsageError,
           "the --crate_host flag must be set when using the crate backend");
     }

    auto host = env()->flags()->getString("host");
    fnord::logInfo(
        "fnordmetric",
        "Opening crate backend at $0", host);

    return new crate_backend::MetricRepository(host);
  }

  RAISEF(kUsageError, "unknown backend type: $0", backend_type);
}

@@ -118,7 +133,7 @@ int main(int argc, const char** argv) {
      false,
      NULL,
      "disk",
      "One of 'disk', 'inmemory', 'mysql' or 'hbase'. Default: 'disk'",
      "One of 'disk', 'inmemory' or 'crate'. Default: 'disk'",
      "<name>");

  env()->flags()->defineFlag(
@@ -130,6 +145,15 @@ int main(int argc, const char** argv) {
      "Store the database in this directory (disk backend only)",
      "<path>");

   env()->flags()->defineFlag(
      "crate_host",
      cli::FlagParser::T_STRING,
      false,
      NULL,
      "http://localhost:4200",
      "Crate host (crate backend only). Default: http://localhost:4200",
      "<host>");

  env()->flags()->defineFlag(
      "disable_external_sources",
      cli::FlagParser::T_SWITCH,
+38 −0
Original line number Diff line number Diff line
/**
 * This file is part of the "FnordMetric" project
 *   Copyright (c) 2011-2014 Paul Asmuth, Google Inc.
 *
 * FnordMetric is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License v3.0. You should have received a
 * copy of the GNU General Public License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 */

#include <fnordmetric/environment.h>
#include <fnordmetric/sql/backends/crate/cratebackend.h>
#include <fnordmetric/sql/backends/crate/cratetableref.h>
#include <fnordmetric/sql/runtime/tablescan.h>
#include <iostream>
namespace fnordmetric {
namespace query {
namespace crate_backend {

CrateBackend* CrateBackend::singleton() {
    static CrateBackend singleton_backend;
    return &singleton_backend;
}

bool CrateBackend::openTables(
    const std::vector<std::string>& table_names,
    const util::URI& source_uri,
    std::vector<std::unique_ptr<TableRef>>* target) {
    CrateConnection conn = CrateConnection(source_uri);
    for (const auto& tbl : table_names) {
        target->emplace_back(new CrateTableRef(conn, tbl));
    }
    return true;
}

}
}
}
Loading