#define CEPH_MMGRBEACON_H
#include "messages/PaxosServiceMessage.h"
+#include "mon/MonCommand.h"
#include "include/types.h"
class MMgrBeacon : public PaxosServiceMessage {
- static const int HEAD_VERSION = 3;
+ static const int HEAD_VERSION = 5;
static const int COMPAT_VERSION = 1;
protected:
std::string name;
uuid_d fsid;
std::set<std::string> available_modules;
+ map<string,string> metadata; ///< misc metadata about this osd
+
+ // Only populated during activation
+ std::vector<MonCommand> command_descs;
public:
MMgrBeacon()
MMgrBeacon(const uuid_d& fsid_, uint64_t gid_, const std::string &name_,
entity_addr_t server_addr_, bool available_,
- const std::set<std::string>& module_list)
+ const std::set<std::string>& module_list,
+ map<string,string>&& metadata)
: PaxosServiceMessage(MSG_MGR_BEACON, 0, HEAD_VERSION, COMPAT_VERSION),
gid(gid_), server_addr(server_addr_), available(available_), name(name_),
- fsid(fsid_), available_modules(module_list)
+ fsid(fsid_), available_modules(module_list), metadata(std::move(metadata))
{
}
const std::string& get_name() const { return name; }
const uuid_d& get_fsid() const { return fsid; }
std::set<std::string>& get_available_modules() { return available_modules; }
+ const std::map<std::string,std::string>& get_metadata() const {
+ return metadata;
+ }
+
+ void set_command_descs(const std::vector<MonCommand> &cmds)
+ {
+ command_descs = cmds;
+ }
+
+ const std::vector<MonCommand> &get_command_descs()
+ {
+ return command_descs;
+ }
private:
~MMgrBeacon() override {}
::encode(name, payload);
::encode(fsid, payload);
::encode(available_modules, payload);
+ ::encode(command_descs, payload);
+ ::encode(metadata, payload);
}
void decode_payload() override {
bufferlist::iterator p = payload.begin();
if (header.version >= 3) {
::decode(available_modules, p);
}
+ if (header.version >= 4) {
+ ::decode(command_descs, p);
+ }
+ if (header.version >= 5) {
+ ::decode(metadata, p);
+ }
}
};