initial code repo
[stor4nfv.git] / src / ceph / src / mds / Mantle.h
diff --git a/src/ceph/src/mds/Mantle.h b/src/ceph/src/mds/Mantle.h
new file mode 100644 (file)
index 0000000..7970562
--- /dev/null
@@ -0,0 +1,38 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2016 Michael Sevilla <mikesevilla3@gmail.com>
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation.  See file COPYING.
+ *
+ */
+
+#ifndef CEPH_MANTLE_H
+#define CEPH_MANTLE_H
+
+#include <lua.hpp>
+#include <vector>
+#include <map>
+#include <string>
+
+#include "mdstypes.h"
+
+class Mantle {
+  public:
+    Mantle();
+    ~Mantle() { if (L) lua_close(L); }
+    int balance(const std::string &script,
+                mds_rank_t whoami,
+                const std::vector <std::map<std::string, double>> &metrics,
+                std::map<mds_rank_t,double> &my_targets);
+
+  protected:
+    lua_State *L;
+};
+
+#endif