1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_RBD_MIRROR_DAEMON_SERVICE_INFO_H
5 #define CEPH_RBD_MIRROR_DAEMON_SERVICE_INFO_H
7 #include "include/rados/librados_fwd.hpp"
8 #include "tools/rbd/ArgumentTypes.h"
19 MIRROR_HEALTH_UNKNOWN
= 1,
20 MIRROR_HEALTH_WARNING
= 2,
21 MIRROR_HEALTH_ERROR
= 3
24 std::ostream
& operator<<(std::ostream
& os
, MirrorHealth mirror_health
);
26 struct MirrorService
{
28 explicit MirrorService(const std::string
& service_id
)
29 : service_id(service_id
) {
32 std::string service_id
;
33 std::string instance_id
;
35 std::string client_id
;
36 std::string ceph_version
;
38 std::list
<std::string
> callouts
;
40 MirrorHealth health
= MIRROR_HEALTH_UNKNOWN
;
42 std::string
get_image_description() const;
43 void dump_image(argument_types::Format::Formatter formatter
) const;
46 typedef std::list
<MirrorService
> MirrorServices
;
48 class MirrorDaemonServiceInfo
{
50 MirrorDaemonServiceInfo(librados::IoCtx
&io_ctx
) : m_io_ctx(io_ctx
) {
55 const MirrorService
* get_by_service_id(const std::string
& service_id
) const;
56 const MirrorService
* get_by_instance_id(const std::string
& instance_id
) const;
58 MirrorServices
get_mirror_services() const;
59 MirrorHealth
get_daemon_health() const {
60 return m_daemon_health
;
64 librados::IoCtx
&m_io_ctx
;
66 std::map
<std::string
, MirrorService
> m_mirror_services
;
67 std::map
<std::string
, std::string
> m_instance_to_service_ids
;
69 MirrorHealth m_daemon_health
= MIRROR_HEALTH_UNKNOWN
;
71 int get_mirror_service_dump();
72 int get_mirror_service_status();
78 #endif // CEPH_RBD_MIRROR_DAEMON_SERVICE_INFO_H