DaemonStateIndex &ds, ClusterState &cs,
MonClient &mc, LogChannelRef clog_,
LogChannelRef audit_clog_, Objecter &objecter_,
- Client &client_, Finisher &f, DaemonServer &server,
+ Finisher &f, DaemonServer &server,
PyModuleRegistry &pmr)
: module_config(module_config_), daemon_state(ds), cluster_state(cs),
monc(mc), clog(clog_), audit_clog(audit_clog_), objecter(objecter_),
- client(client_), finisher(f),
+ finisher(f),
cmd_finisher(g_ceph_context, "cmd_finisher", "cmdfin"),
server(server), py_module_registry(pmr)
{
#include "PyFormatter.h"
#include "osdc/Objecter.h"
-#include "client/Client.h"
#include "common/LogClient.h"
#include "mon/MgrMap.h"
#include "mon/MonCommand.h"
MonClient &monc;
LogChannelRef clog, audit_clog;
Objecter &objecter;
- Client &client;
Finisher &finisher;
TTLCache<std::string, PyObject*> ttl_cache;
public:
std::map<std::string, std::string> store_data,
bool mon_provides_kv_sub,
DaemonStateIndex &ds, ClusterState &cs, MonClient &mc,
- LogChannelRef clog_, LogChannelRef audit_clog_, Objecter &objecter_, Client &client_,
+ LogChannelRef clog_, LogChannelRef audit_clog_, Objecter &objecter_,
Finisher &f, DaemonServer &server, PyModuleRegistry &pmr);
~ActivePyModules();
// FIXME: wrap for send_command?
MonClient &get_monc() {return monc;}
Objecter &get_objecter() {return objecter;}
- Client &get_client() {return client;}
PyObject *cacheable_get_python(const std::string &what);
PyObject *get_python(const std::string &what);
PyObject *get_server_python(const std::string &hostname);
f->queue(command_c);
});
} else if (std::string(type) == "mds") {
- int r = self->py_modules->get_client().mds_command(
- name,
- {cmd_json},
- inbuf,
- &command_c->outbl,
- &command_c->outs,
- new C_OnFinisher(command_c, &self->py_modules->cmd_finisher),
- one_shot);
- if (r != 0) {
- string msg("failed to send command to mds: ");
- msg.append(cpp_strerror(r));
- PyEval_RestoreThread(tstate);
- PyErr_SetString(PyExc_RuntimeError, msg.c_str());
- return nullptr;
- }
+ string msg("cannot send command to mds via this interface: ");
+ msg.append(cpp_strerror(-ENOSYS));
+ PyEval_RestoreThread(tstate);
+ PyErr_SetString(PyExc_RuntimeError, msg.c_str());
+ return nullptr;
} else if (std::string(type) == "pg") {
pg_t pgid;
if (!pgid.parse(name)) {
target_include_directories(ceph-mgr PRIVATE
$<TARGET_PROPERTY:RocksDB::RocksDB,INTERFACE_INCLUDE_DIRECTORIES>)
target_link_libraries(ceph-mgr
- osdc client heap_profiler
+ osdc heap_profiler
global-static ceph-common
Boost::python${MGR_PYTHON_VERSION_MAJOR}${MGR_PYTHON_VERSION_MINOR}
Python3::Python
#include <Python.h>
#include "osdc/Objecter.h"
-#include "client/Client.h"
#include "common/errno.h"
#include "mon/MonClient.h"
#include "include/stringify.h"
Mgr::Mgr(MonClient *monc_, const MgrMap& mgrmap,
PyModuleRegistry *py_module_registry_,
Messenger *clientm_, Objecter *objecter_,
- Client* client_, LogChannelRef clog_, LogChannelRef audit_clog_) :
+ LogChannelRef clog_, LogChannelRef audit_clog_) :
monc(monc_),
objecter(objecter_),
- client(client_),
client_messenger(clientm_),
finisher(g_ceph_context, "Mgr", "mgr-fin"),
digest_received(false),
py_module_registry->active_start(
daemon_state, cluster_state,
pre_init_store, mon_allows_kv_sub,
- *monc, clog, audit_clog, *objecter, *client,
+ *monc, clog, audit_clog, *objecter,
finisher, server);
cluster_state.final_init();
class MLog;
class MServiceMap;
class Objecter;
-class Client;
class Mgr : public AdminSocketHook {
protected:
MonClient *monc;
Objecter *objecter;
- Client *client;
Messenger *client_messenger;
mutable ceph::mutex lock = ceph::make_mutex("Mgr::lock");
Mgr(MonClient *monc_, const MgrMap& mgrmap,
PyModuleRegistry *py_module_registry_,
Messenger *clientm_, Objecter *objecter_,
- Client *client_, LogChannelRef clog_, LogChannelRef audit_clog_);
+ LogChannelRef clog_, LogChannelRef audit_clog_);
~Mgr();
bool is_initialized() const {return initialized;}
"mgr",
Messenger::get_random_nonce())),
objecter{g_ceph_context, client_messenger.get(), &monc, poolctx},
- client{client_messenger.get(), &monc, &objecter},
mgrc(g_ceph_context, client_messenger.get(), &monc.monmap),
log_client(g_ceph_context, client_messenger.get(), &monc.monmap, LogClient::NO_FLAGS),
clog(log_client.create_channel(CLOG_CHANNEL_CLUSTER)),
// Initialize Messenger
client_messenger->add_dispatcher_tail(this);
client_messenger->add_dispatcher_head(&objecter);
- client_messenger->add_dispatcher_tail(&client);
client_messenger->start();
poolctx.start(2);
objecter.set_client_incarnation(0);
objecter.init();
objecter.start();
- client.init();
timer.init();
py_module_registry.init();
dout(1) << "Activating!" << dendl;
active_mgr.reset(new Mgr(&monc, map, &py_module_registry,
client_messenger.get(), &objecter,
- &client, clog, audit_clog));
+ clog, audit_clog));
active_mgr->background_init(new LambdaContext(
[this](int r){
// Advertise our active-ness ASAP instead of waiting for
#include "common/Timer.h"
#include "common/LogClient.h"
-#include "client/Client.h"
#include "mon/MonClient.h"
#include "osdc/Objecter.h"
#include "PyModuleRegistry.h"
MonClient monc;
std::unique_ptr<Messenger> client_messenger;
Objecter objecter;
- Client client;
MgrClient mgrc;
const std::map<std::string, std::string> &kv_store,
bool mon_provides_kv_sub,
MonClient &mc, LogChannelRef clog_, LogChannelRef audit_clog_,
- Objecter &objecter_, Client &client_, Finisher &f,
+ Objecter &objecter_, Finisher &f,
DaemonServer &server)
{
std::lock_guard locker(lock);
module_config,
kv_store, mon_provides_kv_sub,
ds, cs, mc,
- clog_, audit_clog_, objecter_, client_, f, server,
+ clog_, audit_clog_, objecter_, f, server,
*this));
for (const auto &i : modules) {
const std::map<std::string, std::string> &kv_store,
bool mon_provides_kv_sub,
MonClient &mc, LogChannelRef clog_, LogChannelRef audit_clog_,
- Objecter &objecter_, Client &client_, Finisher &f,
+ Objecter &objecter_, Finisher &f,
DaemonServer &server);
void standby_start(MonClient &mc, Finisher &f);