]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os: remove KineticStore
authorKefu Chai <kchai@redhat.com>
Tue, 1 Oct 2019 04:51:45 +0000 (12:51 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 1 Oct 2019 04:56:01 +0000 (12:56 +0800)
kinetic-cpp-client and kinetic project as a whole are not acitvely
supported or maintained anymore. see

- https://github.com/Kinetic/kinetic-cpp-client
- http://www.openkinetic.org

Signed-off-by: Kefu Chai <kchai@redhat.com>
qa/suites/perf-basic/settings/optimized.yaml
qa/suites/rados/perf/settings/optimized.yaml
src/common/legacy_config_opts.h
src/common/options.cc
src/common/subsys.h
src/kv/KeyValueDB.cc
src/kv/KineticStore.cc [deleted file]
src/kv/KineticStore.h [deleted file]

index 9e0ebbd451248905651b017176d0a9845365aa41..8b53498db9c033197fa743c3de9c299ba212c1ce 100644 (file)
@@ -71,7 +71,6 @@ overrides:
         debug rocksdb: "0/0"
         debug leveldb: "0/0"
         debug memdb: "0/0"
-        debug kinetic: "0/0"
         debug fuse: "0/0"
         debug mgr: "0/0"
         debug mgrc: "0/0"
index 3a7db65c423d9a21d9b3ce3894272a5e7043e6f8..dc4dcbb969e5ca6d1b469482cac2beb782b4265a 100644 (file)
@@ -67,7 +67,6 @@ overrides:
         debug rocksdb: "0/0"
         debug leveldb: "0/0"
         debug memdb: "0/0"
-        debug kinetic: "0/0"
         debug fuse: "0/0"
         debug mgr: "0/0"
         debug mgrc: "0/0"
index 3f51bb0558a1257679844c51932cf237007e8535..fbc6b1199b463666547cd9232b6720194694b514 100644 (file)
@@ -816,13 +816,6 @@ OPTION(leveldb_paranoid, OPT_BOOL) // leveldb paranoid flag
 OPTION(leveldb_log, OPT_STR)  // enable leveldb log file
 OPTION(leveldb_compact_on_mount, OPT_BOOL)
 
-OPTION(kinetic_host, OPT_STR) // hostname or ip address of a kinetic drive to use
-OPTION(kinetic_port, OPT_INT) // port number of the kinetic drive
-OPTION(kinetic_user_id, OPT_INT) // kinetic user to authenticate as
-OPTION(kinetic_hmac_key, OPT_STR) // kinetic key to authenticate with
-OPTION(kinetic_use_ssl, OPT_BOOL) // whether to secure kinetic traffic with TLS
-
-
 OPTION(rocksdb_log_to_ceph_log, OPT_BOOL)  // log to ceph log
 OPTION(rocksdb_cache_size, OPT_U64)  // rocksdb cache size (unless set by bluestore/etc)
 OPTION(rocksdb_cache_row_ratio, OPT_FLOAT)   // ratio of cache for row (vs block)
index 5f4a2f24791159fa9c52514d873e87306ac4baa1..cc1127f69c94d8f43077175f78ee7cd5a9300807 100644 (file)
@@ -3945,26 +3945,6 @@ std::vector<Option> get_global_options() {
     .set_default(false)
     .set_description(""),
 
-    Option("kinetic_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
-    .set_default("")
-    .set_description(""),
-
-    Option("kinetic_port", Option::TYPE_INT, Option::LEVEL_ADVANCED)
-    .set_default(8123)
-    .set_description(""),
-
-    Option("kinetic_user_id", Option::TYPE_INT, Option::LEVEL_ADVANCED)
-    .set_default(1)
-    .set_description(""),
-
-    Option("kinetic_hmac_key", Option::TYPE_STR, Option::LEVEL_ADVANCED)
-    .set_default("asdfasdf")
-    .set_description(""),
-
-    Option("kinetic_use_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
-    .set_default(false)
-    .set_description(""),
-
     Option("rocksdb_log_to_ceph_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(true)
     .set_description(""),
index f85a8745291f1758e3417b5ee1303fa4ce6efc86..2e134c38bd6fc07b5febcc84499fd7972e8a1493 100644 (file)
@@ -72,7 +72,6 @@ SUBSYS(kstore, 1, 5)
 SUBSYS(rocksdb, 4, 5)
 SUBSYS(leveldb, 4, 5)
 SUBSYS(memdb, 4, 5)
-SUBSYS(kinetic, 1, 5)
 SUBSYS(fuse, 1, 5)
 SUBSYS(mgr, 1, 5)
 SUBSYS(mgrc, 1, 5)
index 30e7e671114473ae206e7a86a7ab607a7fcb4d26..c468654e1eb998db3d0e7b8eb3d59448a20ef3ba 100644 (file)
@@ -9,9 +9,6 @@
 #ifdef HAVE_LIBROCKSDB
 #include "RocksDBStore.h"
 #endif
-#ifdef HAVE_KINETIC
-#include "KineticStore.h"
-#endif
 
 KeyValueDB *KeyValueDB::create(CephContext *cct, const string& type,
                               const string& dir,
@@ -23,12 +20,6 @@ KeyValueDB *KeyValueDB::create(CephContext *cct, const string& type,
     return new LevelDBStore(cct, dir);
   }
 #endif
-#ifdef HAVE_KINETIC
-  if (type == "kinetic" &&
-      cct->check_experimental_feature_enabled("kinetic")) {
-    return new KineticStore(cct);
-  }
-#endif
 #ifdef HAVE_LIBROCKSDB
   if (type == "rocksdb") {
     return new RocksDBStore(cct, dir, options, p);
@@ -49,11 +40,6 @@ int KeyValueDB::test_init(const string& type, const string& dir)
     return LevelDBStore::_test_init(dir);
   }
 #endif
-#ifdef HAVE_KINETIC
-  if (type == "kinetic") {
-    return KineticStore::_test_init(g_ceph_context);
-  }
-#endif
 #ifdef HAVE_LIBROCKSDB
   if (type == "rocksdb") {
     return RocksDBStore::_test_init(dir);
diff --git a/src/kv/KineticStore.cc b/src/kv/KineticStore.cc
deleted file mode 100644 (file)
index ac6ac8f..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-#include "KineticStore.h"
-#include "common/ceph_crypto.h"
-
-#include <set>
-#include <map>
-#include <string>
-#include <errno.h>
-using std::string;
-#include "common/perf_counters.h"
-
-#define dout_subsys ceph_subsys_kinetic
-
-int KineticStore::init()
-{
-  // init defaults.  caller can override these if they want
-  // prior to calling open.
-  host = cct->_conf->kinetic_host;
-  port = cct->_conf->kinetic_port;
-  user_id = cct->_conf->kinetic_user_id;
-  hmac_key = cct->_conf->kinetic_hmac_key;
-  use_ssl = cct->_conf->kinetic_use_ssl;
-  return 0;
-}
-
-int KineticStore::_test_init(CephContext *c)
-{
-  kinetic::KineticConnectionFactory conn_factory =
-    kinetic::NewKineticConnectionFactory();
-
-  kinetic::ConnectionOptions options;
-  options.host = cct->_conf->kinetic_host;
-  options.port = cct->_conf->kinetic_port;
-  options.user_id = cct->_conf->kinetic_user_id;
-  options.hmac_key = cct->_conf->kinetic_hmac_key;
-  options.use_ssl = cct->_conf->kinetic_use_ssl;
-
-  kinetic::Status status = conn_factory.NewThreadsafeBlockingConnection(options, kinetic_conn, 10);
-  kinetic_conn.reset();
-  if (!status.ok())
-    derr << __func__ << " Unable to connect to kinetic store " << options.host
-         << ":" << options.port << " : " << status.ToString() << dendl;
-  return status.ok() ? 0 : -EIO;
-}
-
-int KineticStore::open(ostream &out, const vector<ColumnFamily>& cfs)
-{
-  if (!cfs.empty()) {
-    ceph_abort_msg("Not implemented");
-  }
-  return do_open(out, false);
-}
-
-int KineticStore::create_and_open(ostream &out, const vector<ColumnFamily>& cfs)
-{
-  if (!cfs.empty()) {
-    ceph_abort_msg("Not implemented");
-  }
-  return do_open(out, true);
-}
-
-int KineticStore::do_open(ostream &out, bool create_if_missing)
-{
-  kinetic::KineticConnectionFactory conn_factory =
-    kinetic::NewKineticConnectionFactory();
-  kinetic::ConnectionOptions options;
-  options.host = host;
-  options.port = port;
-  options.user_id = user_id;
-  options.hmac_key = hmac_key;
-  options.use_ssl = use_ssl;
-  kinetic::Status status = conn_factory.NewThreadsafeBlockingConnection(options, kinetic_conn, 10);
-  if (!status.ok()) {
-    derr << "Unable to connect to kinetic store " << host << ":" << port
-        << " : " << status.ToString() << dendl;
-    return -EINVAL;
-  }
-
-  PerfCountersBuilder plb(g_ceph_context, "kinetic", l_kinetic_first, l_kinetic_last);
-  plb.add_u64_counter(l_kinetic_gets, "kinetic_get", "Gets");
-  plb.add_u64_counter(l_kinetic_txns, "kinetic_transaction", "Transactions");
-  logger = plb.create_perf_counters();
-  cct->get_perfcounters_collection()->add(logger);
-  return 0;
-}
-
-KineticStore::KineticStore(CephContext *c) :
-  cct(c),
-  logger(NULL)
-{
-  host = c->_conf->kinetic_host;
-  port = c->_conf->kinetic_port;
-  user_id = c->_conf->kinetic_user_id;
-  hmac_key = c->_conf->kinetic_hmac_key;
-  use_ssl = c->_conf->kinetic_use_ssl;
-}
-
-KineticStore::~KineticStore()
-{
-  close();
-  delete logger;
-}
-
-void KineticStore::close()
-{
-  kinetic_conn.reset();
-  if (logger)
-    cct->get_perfcounters_collection()->remove(logger);
-}
-
-int KineticStore::submit_transaction(KeyValueDB::Transaction t)
-{
-  KineticTransactionImpl * _t =
-    static_cast<KineticTransactionImpl *>(t.get());
-
-  dout(20) << "kinetic submit_transaction" << dendl;
-
-  for (vector<KineticOp>::iterator it = _t->ops.begin();
-       it != _t->ops.end(); ++it) {
-    kinetic::KineticStatus status(kinetic::StatusCode::OK, "");
-    if (it->type == KINETIC_OP_WRITE) {
-      string data(it->data.c_str(), it->data.length());
-      kinetic::KineticRecord record(data, "", "",
-                                   com::seagate::kinetic::client::proto::Message_Algorithm_SHA1);
-      dout(30) << "kinetic before put of " << it->key << " (" << data.length() << " bytes)" << dendl;
-      status = kinetic_conn->Put(it->key, "", kinetic::WriteMode::IGNORE_VERSION,
-                                record);
-      dout(30) << "kinetic after put of " << it->key << dendl;
-    } else {
-      ceph_assert(it->type == KINETIC_OP_DELETE);
-      dout(30) << "kinetic before delete" << dendl;
-      status = kinetic_conn->Delete(it->key, "",
-                                   kinetic::WriteMode::IGNORE_VERSION);
-      dout(30) << "kinetic after delete" << dendl;
-    }
-    if (!status.ok()) {
-      derr << "kinetic error submitting transaction: "
-          << status.message() << dendl;
-      return -1;
-    }
-  }
-
-  logger->inc(l_kinetic_txns);
-  return 0;
-}
-
-int KineticStore::submit_transaction_sync(KeyValueDB::Transaction t)
-{
-  return submit_transaction(t);
-}
-
-void KineticStore::KineticTransactionImpl::set(
-  const string &prefix,
-  const string &k,
-  const bufferlist &to_set_bl)
-{
-  string key = combine_strings(prefix, k);
-  dout(30) << "kinetic set key " << key << dendl;
-  ops.push_back(KineticOp(KINETIC_OP_WRITE, key, to_set_bl));
-}
-
-void KineticStore::KineticTransactionImpl::rmkey(const string &prefix,
-                                                const string &k)
-{
-  string key = combine_strings(prefix, k);
-  dout(30) << "kinetic rm key " << key << dendl;
-  ops.push_back(KineticOp(KINETIC_OP_DELETE, key));
-}
-
-void KineticStore::KineticTransactionImpl::rmkeys_by_prefix(const string &prefix)
-{
-  dout(20) << "kinetic rmkeys_by_prefix " << prefix << dendl;
-  KeyValueDB::Iterator it = db->get_iterator(prefix);
-  for (it->seek_to_first();
-       it->valid();
-       it->next()) {
-    string key = combine_strings(prefix, it->key());
-    ops.push_back(KineticOp(KINETIC_OP_DELETE, key));
-    dout(30) << "kinetic rm key by prefix: " << key << dendl;
-  }
-}
-
-void KineticStore::KineticTransactionImpl::rm_range_keys(const string &prefix, const string &start, const string &end)
-{
-  KeyValueDB::Iterator it = db->get_iterator(prefix);
-  it->lower_bound(start);
-  while (it->valid()) {
-    if (it->key() >= end) {
-      break;
-    }
-    ops.push_back(
-        KineticOp(KINETIC_OP_DELETE, combine_strings(prefix, it->key())));
-    it->next();
-  }
-}
-
-int KineticStore::get(
-    const string &prefix,
-    const std::set<string> &keys,
-    std::map<string, bufferlist> *out)
-{
-  dout(30) << "kinetic get prefix: " << prefix << " keys: " << keys << dendl;
-  for (std::set<string>::const_iterator i = keys.begin();
-       i != keys.end();
-       ++i) {
-    unique_ptr<kinetic::KineticRecord> record;
-    string key = combine_strings(prefix, *i);
-    dout(30) << "before get key " << key << dendl;
-    kinetic::KineticStatus status = kinetic_conn->Get(key, record);
-    if (!status.ok())
-      break;
-    dout(30) << "kinetic get got key: " << key << dendl;
-    out->insert(make_pair(key, to_bufferlist(*record.get())));
-  }
-  logger->inc(l_kinetic_gets);
-  return 0;
-}
-
-string KineticStore::combine_strings(const string &prefix, const string &value)
-{
-  string out = prefix;
-  out.push_back(1);
-  out.append(value);
-  return out;
-}
-
-bufferlist KineticStore::to_bufferlist(const kinetic::KineticRecord &record)
-{
-  bufferlist bl;
-  bl.append(*(record.value()));
-  return bl;
-}
-
-int KineticStore::split_key(string &in, string *prefix, string *key)
-{
-  size_t prefix_len = 0;
-  char* in_data = in.c_str();
-  
-  // Find separator inside Slice
-  char* separator = (char*) memchr((void*)in_data, 1, in.size());
-  if (separator == NULL)
-     return -EINVAL;
-  prefix_len = size_t(separator - in_data);
-  if (prefix_len >= in.size())
-    return -EINVAL;
-
-  // Fetch prefix and/or key directly from Slice
-  if (prefix)
-    *prefix = string(in_data, prefix_len);
-  if (key)
-    *key = string(separator+1, in.size()-prefix_len-1);
-  return 0;
-}
-
-KineticStore::KineticWholeSpaceIteratorImpl::KineticWholeSpaceIteratorImpl(kinetic::BlockingKineticConnection *conn) : kinetic_conn(conn),
-   kinetic_status(kinetic::StatusCode::OK, "")
-{
-  dout(30) << "kinetic iterator constructor()" << dendl;
-  const static string last_key = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF";
-  kinetic::KeyRangeIterator it =
-    kinetic_conn->IterateKeyRange("", true, last_key, true, 1024);
-  while (it != kinetic::KeyRangeEnd()) {
-    try {
-      keys.insert(*it);
-      dout(30) << "kinetic iterator added " << *it << dendl;
-    } catch (std::runtime_error &e) {
-      kinetic_status = kinetic::KineticStatus(kinetic::StatusCode::CLIENT_INTERNAL_ERROR, e.what());
-      return;
-    }
-    ++it;
-  }
-  keys_iter = keys.begin();
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::seek_to_first(const string &prefix)
-{
-  dout(30) << "kinetic iterator seek_to_first(prefix): " << prefix << dendl;
-  keys_iter = keys.lower_bound(prefix);
-  return 0;
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::seek_to_last()
-{
-  dout(30) << "kinetic iterator seek_to_last()" << dendl;
-  keys_iter = keys.end();
-  if (keys.begin() != keys_iter)
-    --keys_iter;
-  return 0;
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::seek_to_last(const string &prefix)
-{
-  dout(30) << "kinetic iterator seek_to_last(prefix): " << prefix << dendl;
-  keys_iter = keys.upper_bound(prefix + "\2");
-  if (keys.begin() == keys_iter) {
-    keys_iter = keys.end();
-  } else {
-    --keys_iter;
-  }
-  return 0;
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::upper_bound(const string &prefix, const string &after) {
-  dout(30) << "kinetic iterator upper_bound()" << dendl;
-  string bound = combine_strings(prefix, after);
-  keys_iter = keys.upper_bound(bound);
-  return 0;
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::lower_bound(const string &prefix, const string &to) {
-  dout(30) << "kinetic iterator lower_bound()" << dendl;
-  string bound = combine_strings(prefix, to);
-  keys_iter = keys.lower_bound(bound);
-  return 0;
-}
-
-bool KineticStore::KineticWholeSpaceIteratorImpl::valid() {
-  dout(30) << "kinetic iterator valid()" << dendl;
-  return keys_iter != keys.end();
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::next() {
-  dout(30) << "kinetic iterator next()" << dendl;
-  if (keys_iter != keys.end()) {
-      ++keys_iter;
-      return 0;
-  }
-  return -1;
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::prev() {
-  dout(30) << "kinetic iterator prev()" << dendl;
-  if (keys_iter != keys.begin()) {
-      --keys_iter;
-      return 0;
-  }
-  keys_iter = keys.end();
-  return -1;
-}
-
-string KineticStore::KineticWholeSpaceIteratorImpl::key() {
-  dout(30) << "kinetic iterator key()" << dendl;
-  string out_key;
-  split_key(*keys_iter, NULL, &out_key);
-  return out_key;
-}
-
-pair<string,string> KineticStore::KineticWholeSpaceIteratorImpl::raw_key() {
-  dout(30) << "kinetic iterator raw_key()" << dendl;
-  string prefix, key;
-  split_key(*keys_iter, &prefix, &key);
-  return make_pair(prefix, key);
-}
-
-bool KineticStore::KineticWholeSpaceIteratorImpl::raw_key_is_prefixed(const string &prefix) {
-  // Look for "prefix\1" right in *keys_iter without making a copy
-  string key = *keys_iter;
-  if ((key.size() > prefix.length()) && (key[prefix.length()] == '\1')) {
-    return memcmp(key.c_str(), prefix.c_str(), prefix.length()) == 0;
-  } else {
-    return false;
-  }
-}
-
-
-bufferlist KineticStore::KineticWholeSpaceIteratorImpl::value() {
-  dout(30) << "kinetic iterator value()" << dendl;
-  unique_ptr<kinetic::KineticRecord> record;
-  kinetic_status = kinetic_conn->Get(*keys_iter, record);
-  return to_bufferlist(*record.get());
-}
-
-int KineticStore::KineticWholeSpaceIteratorImpl::status() {
-  dout(30) << "kinetic iterator status()" << dendl;
-  return kinetic_status.ok() ? 0 : -1;
-}
diff --git a/src/kv/KineticStore.h b/src/kv/KineticStore.h
deleted file mode 100644 (file)
index b22d4f0..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-#ifndef KINETIC_STORE_H
-#define KINETIC_STORE_H
-
-#include "include/types.h"
-#include "include/buffer_fwd.h"
-#include "KeyValueDB.h"
-#include <set>
-#include <map>
-#include <string>
-#include <kinetic/kinetic.h>
-
-#include <errno.h>
-#include "common/errno.h"
-#include "common/dout.h"
-#include "include/ceph_assert.h"
-#include "common/Formatter.h"
-
-#include "common/ceph_context.h"
-
-class PerfCounters;
-
-enum {
-  l_kinetic_first = 34400,
-  l_kinetic_gets,
-  l_kinetic_txns,
-  l_kinetic_last,
-};
-
-/**
- * Uses Kinetic to implement the KeyValueDB interface
- */
-class KineticStore : public KeyValueDB {
-  CephContext *cct;
-  PerfCounters *logger;
-  string host;
-  int port;
-  int user_id;
-  string hmac_key;
-  bool use_ssl;
-  std::unique_ptr<kinetic::BlockingKineticConnection> kinetic_conn;
-
-  int do_open(ostream &out, bool create_if_missing);
-
-public:
-  explicit KineticStore(CephContext *c);
-  ~KineticStore();
-
-  static int _test_init(CephContext *c);
-  int init();
-
-  /// Opens underlying db
-  int open(ostream &out, const std::vector<ColumnFamily>& = {}) override;
-  /// Creates underlying db if missing and opens it
-  int create_and_open(ostream &out, const std::vector<ColumnFamily>& = {}) override;
-
-  void close() override;
-
-  enum KineticOpType {
-    KINETIC_OP_WRITE,
-    KINETIC_OP_DELETE,
-  };
-
-  struct KineticOp {
-    KineticOpType type;
-    std::string key;
-    bufferlist data;
-    KineticOp(KineticOpType type, const string &key) : type(type), key(key) {}
-    KineticOp(KineticOpType type, const string &key, const bufferlist &data)
-      : type(type), key(key), data(data) {}
-  };
-
-  class KineticTransactionImpl : public KeyValueDB::TransactionImpl {
-  public:
-    vector<KineticOp> ops;
-    KineticStore *db;
-
-    explicit KineticTransactionImpl(KineticStore *db) : db(db) {}
-    void set(
-      const string &prefix,
-      const string &k,
-      const bufferlist &bl);
-    void rmkey(
-      const string &prefix,
-      const string &k);
-    void rmkeys_by_prefix(
-      const string &prefix
-      );
-    void rm_range_keys(
-        const string &prefix,
-        const string &start,
-        const string &end) override;
-  };
-
-  KeyValueDB::Transaction get_transaction() override {
-    return std::make_shared<KineticTransactionImpl>(this);
-  }
-
-  int submit_transaction(KeyValueDB::Transaction t) override;
-  int submit_transaction_sync(KeyValueDB::Transaction t) override;
-  int get(
-    const string &prefix,
-    const std::set<string> &key,
-    std::map<string, bufferlist> *out
-    );
-  using KeyValueDB::get;
-
-  class KineticWholeSpaceIteratorImpl :
-    public KeyValueDB::WholeSpaceIteratorImpl {
-    std::set<std::string> keys;
-    std::set<std::string>::iterator keys_iter;
-    kinetic::BlockingKineticConnection *kinetic_conn;
-    kinetic::KineticStatus kinetic_status;
-  public:
-    explicit KineticWholeSpaceIteratorImpl(kinetic::BlockingKineticConnection *conn);
-    virtual ~KineticWholeSpaceIteratorImpl() { }
-
-    int seek_to_first() override {
-      return seek_to_first("");
-    }
-    int seek_to_first(const string &prefix);
-    int seek_to_last() override;
-    int seek_to_last(const string &prefix);
-    int upper_bound(const string &prefix, const string &after);
-    int lower_bound(const string &prefix, const string &to);
-    bool valid() override;
-    int next() override;
-    int prev() override;
-    string key();
-    pair<string,string> raw_key();
-    bool raw_key_is_prefixed(const string &prefix);
-    bufferlist value() override;
-    int status() override;
-  };
-
-  /// Utility
-  static string combine_strings(const string &prefix, const string &value);
-  static int split_key(string &in_prefix, string *prefix, string *key);
-  static bufferlist to_bufferlist(const kinetic::KineticRecord &record);
-  virtual uint64_t get_estimated_size(map<string,uint64_t> &extra) {
-    // not used by the osd
-    return 0;
-  }
-
-
-  WholeSpaceIterator get_wholespace_iterator() {
-    return std::make_shared<KineticWholeSpaceIteratorImpl>(kinetic_conn.get());
-  }
-};
-
-#endif