#include "osdc/Objecter.h"
#include "client/Client.h"
+#include "common/LogClient.h"
+#include "mon/MgrMap.h"
+#include "mon/MonCommand.h"
#include "DaemonState.h"
#include "ClusterState.h"
class ServeThread;
+class health_check_map_t;
class PyModules
{
DaemonStateIndex &daemon_state;
ClusterState &cluster_state;
MonClient &monc;
+ LogChannelRef clog;
Objecter &objecter;
Client &client;
Finisher &finisher;
- mutable Mutex lock{"PyModules"};
+ mutable Mutex lock{"PyModules::lock"};
std::string get_site_packages();
static std::string config_prefix;
PyModules(DaemonStateIndex &ds, ClusterState &cs, MonClient &mc,
- Objecter &objecter_, Client &client_,
+ LogChannelRef clog_, Objecter &objecter_, Client &client_,
Finisher &f);
~PyModules();
PyObject *get_python(const std::string &what);
PyObject *get_server_python(const std::string &hostname);
PyObject *list_servers_python();
- PyObject *get_metadata_python(std::string const &handle,
- entity_type_t svc_type, const std::string &svc_id);
- PyObject *get_counter_python(std::string const &handle,
- entity_type_t svc_type, const std::string &svc_id,
- const std::string &path);
+ PyObject *get_metadata_python(
+ std::string const &handle,
+ const std::string &svc_name, const std::string &svc_id);
+ PyObject *get_daemon_status_python(
+ std::string const &handle,
+ const std::string &svc_name, const std::string &svc_id);
+ PyObject *get_counter_python(
+ std::string const &handle,
+ const std::string &svc_name,
+ const std::string &svc_id,
+ const std::string &path);
+ PyObject *get_perf_schema_python(
+ const std::string &handle,
+ const std::string svc_type,
+ const std::string &svc_id);
PyObject *get_context();
std::map<std::string, std::string> config_cache;
- std::vector<ModuleCommand> get_commands();
+ // Python command definitions, including callback
+ std::vector<ModuleCommand> get_py_commands() const;
+
+ // Monitor command definitions, suitable for CLI
+ std::vector<MonCommand> get_commands() const;
void insert_config(const std::map<std::string, std::string> &new_config);
PyObject *get_config_prefix(const std::string &handle,
const std::string &prefix) const;
void set_config(const std::string &handle,
- const std::string &key, const std::string &val);
+ const std::string &key, const boost::optional<std::string> &val);
+
+ void set_health_checks(const std::string& handle,
+ health_check_map_t&& checks);
+ void get_health_checks(health_check_map_t *checks);
void log(const std::string &handle,
int level, const std::string &record);
+
+ static void list_modules(std::set<std::string> *modules);
};
#endif