]> git.proxmox.com Git - ceph.git/blame - ceph/src/mon/ConfigMonitor.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / mon / ConfigMonitor.h
CommitLineData
11fdf7f2
TL
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab
3
4#pragma once
5
20effc67 6#include <optional>
11fdf7f2
TL
7
8#include "ConfigMap.h"
9#include "mon/PaxosService.h"
10
11class MonSession;
12
13class ConfigMonitor : public PaxosService
14{
15 version_t version = 0;
16 ConfigMap config_map;
20effc67 17 std::map<std::string,std::optional<ceph::buffer::list>> pending;
f67539c2 18 std::string pending_description;
20effc67 19 std::map<std::string,std::optional<ceph::buffer::list>> pending_cleanup;
11fdf7f2 20
f67539c2
TL
21 std::map<std::string,ceph::buffer::list> current;
22
23 void encode_pending_to_kvmon();
11fdf7f2
TL
24
25public:
f67539c2 26 ConfigMonitor(Monitor &m, Paxos &p, const std::string& service_name);
11fdf7f2
TL
27
28 void init() override;
29
30 void load_config();
31 void load_changeset(version_t v, ConfigChangeSet *ch);
32
33 bool preprocess_query(MonOpRequestRef op) override;
34 bool prepare_update(MonOpRequestRef op) override;
35
36 bool preprocess_command(MonOpRequestRef op);
37 bool prepare_command(MonOpRequestRef op);
38
39 void handle_get_config(MonOpRequestRef op);
40
41 void create_initial() override;
42 void update_from_paxos(bool *need_bootstrap) override;
43 void create_pending() override;
44 void encode_pending(MonitorDBStore::TransactionRef t) override;
45 version_t get_trim_to() const override;
46
47 void encode_full(MonitorDBStore::TransactionRef t) override { }
48
49 void on_active() override;
50 void tick() override;
51
52 bool refresh_config(MonSession *s);
53 bool maybe_send_config(MonSession *s);
54 void send_config(MonSession *s);
55 void check_sub(MonSession *s);
56 void check_sub(Subscription *sub);
57 void check_all_subs();
58};