void CephContext::do_command(std::string command, bufferlist *out)
{
- std::vector<char> v;
-
- if (command == "perfcounters_dump" || command == "1")
+ if (command == "perfcounters_dump" || command == "1") {
+ std::vector<char> v;
_perf_counters_collection->write_json_to_buf(v, false);
- else if (command == "perfcounters_schema" || command == "2")
+ out->append(&v[0], v.size());
+ }
+ else if (command == "perfcounters_schema" || command == "2") {
+ std::vector<char> v;
_perf_counters_collection->write_json_to_buf(v, true);
- else
+ out->append(&v[0], v.size());
+ }
+ else if (command == "show_config") {
+ ostringstream ss;
+ _conf->show_config(ss);
+ out->append(ss.str());
+ }
+ else {
assert(0 == "registered under wrong command?");
- out->append(&v[0], v.size());
+ }
};
_admin_socket->register_command("1", _admin_hook, "");
_admin_socket->register_command("perfcounters_schema", _admin_hook, "dump perfcounters schema");
_admin_socket->register_command("2", _admin_hook, "");
+ _admin_socket->register_command("show_config", _admin_hook, "dump current config settings");
}
CephContext::~CephContext()
_admin_socket->unregister_command("1");
_admin_socket->unregister_command("perfcounters_schema");
_admin_socket->unregister_command("2");
+ _admin_socket->unregister_command("show_config");
delete _admin_hook;
delete _heartbeat_map;
}
void md_config_t::show_config(std::ostream& out)
+{
+ Mutex::Locker l(lock);
+ _show_config(out);
+}
+
+void md_config_t::_show_config(std::ostream& out)
{
out << "name = " << name << std::endl;
out << "cluster = " << cluster << std::endl;
}
else if (ceph_argparse_flag(args, i, "--show_config", (char*)NULL)) {
expand_all_meta();
- show_config(cout);
+ _show_config(cout);
_exit(0);
}
else if (ceph_argparse_witharg(args, i, &val, "--show_config_value", (char*)NULL)) {
int get_val_from_conf_file(const std::vector <std::string> §ions,
const char *key, std::string &out, bool emeta) const;
+ /// dump all config values to a stream
void show_config(std::ostream& out);
private:
+ void _show_config(std::ostream& out);
+
int parse_option(std::vector<const char*>& args,
std::vector<const char*>::iterator& i,
std::ostream *oss);