From ebcb807438774ddaa31c2910bdf4b7b38f947656 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Fri, 25 May 2018 16:17:44 +0300 Subject: [PATCH] MXS-1775 Add default implementations --- include/maxscale/monitor.hh | 10 +++-- server/core/monitor.cc | 41 ++++++++++++++++++- server/modules/monitor/auroramon/auroramon.cc | 14 ------- server/modules/monitor/auroramon/auroramon.hh | 3 -- server/modules/monitor/galeramon/galeramon.cc | 7 +--- server/modules/monitor/grmon/grmon.cc | 14 ------- server/modules/monitor/grmon/grmon.hh | 3 -- server/modules/monitor/mmmon/mmmon.cc | 2 +- .../monitor/ndbclustermon/ndbclustermon.cc | 14 ------- .../monitor/ndbclustermon/ndbclustermon.hh | 3 -- 10 files changed, 47 insertions(+), 64 deletions(-) diff --git a/include/maxscale/monitor.hh b/include/maxscale/monitor.hh index a71a8dc61..54fa26fed 100644 --- a/include/maxscale/monitor.hh +++ b/include/maxscale/monitor.hh @@ -53,21 +53,23 @@ public: * @brief Write diagnostics * * The implementation should write diagnostic information to the - * provided dcb. + * provided dcb. The default implementation writes nothing. * * @param dcb The dcb to write to. */ - virtual void diagnostics(DCB* dcb) const = 0; + virtual void diagnostics(DCB* dcb) const; /** * @brief Obtain diagnostics * * The implementation should create a JSON object and fill it with diagnostics - * information. + * information. The default implementation returns an object that is populated + * with the keys 'script' and 'events' if they have been set, otherwise the + * object is empty. * * @return An object, if there is information to return, NULL otherwise. */ - virtual json_t* diagnostics_json() const = 0; + virtual json_t* diagnostics_json() const; protected: MonitorInstance(MXS_MONITOR* pMonitor); diff --git a/server/core/monitor.cc b/server/core/monitor.cc index ec1b30dc2..982c10c08 100644 --- a/server/core/monitor.cc +++ b/server/core/monitor.cc @@ -2573,6 +2573,43 @@ void MonitorInstance::stop() m_shutdown = 0; } +void MonitorInstance::diagnostics(DCB* pDcb) const +{ +} + +json_t* MonitorInstance::diagnostics_json() const +{ + json_t* pJson = json_object(); + + if (!m_script.empty()) + { + json_object_set_new(pJson, CN_SCRIPT, json_string(m_script.c_str())); + + string events; + + const MXS_ENUM_VALUE* pValue = mxs_monitor_event_enum_values; + + while (pValue->name) + { + if (pValue->enum_value & m_events) + { + if (!events.empty()) + { + events += ","; + } + + events += pValue->enum_value; + } + + ++pValue; + } + + json_object_set_new(pJson, CN_EVENTS, json_string(events.c_str())); + } + + return pJson; +} + bool MonitorInstance::start(const MXS_CONFIG_PARAMETER* pParams) { bool started = false; @@ -2595,8 +2632,8 @@ bool MonitorInstance::start(const MXS_CONFIG_PARAMETER* pParams) if (m_checked) { - m_script = config_get_string(pParams, "script"); - m_events = config_get_enum(pParams, "events", mxs_monitor_event_enum_values); + m_script = config_get_string(pParams, CN_SCRIPT); + m_events = config_get_enum(pParams, CN_EVENTS, mxs_monitor_event_enum_values); m_master = NULL; if (configure(pParams)) diff --git a/server/modules/monitor/auroramon/auroramon.cc b/server/modules/monitor/auroramon/auroramon.cc index 5a58cc5ca..f4709af48 100644 --- a/server/modules/monitor/auroramon/auroramon.cc +++ b/server/modules/monitor/auroramon/auroramon.cc @@ -40,20 +40,6 @@ AuroraMonitor* AuroraMonitor::create(MXS_MONITOR* monitor) return new AuroraMonitor(monitor); } -void AuroraMonitor::diagnostics(DCB *dcb) const -{ -} - -json_t* AuroraMonitor::diagnostics_json() const -{ - return NULL; -} - -bool AuroraMonitor::configure(const MXS_CONFIG_PARAMETER* params) -{ - return true; -} - bool AuroraMonitor::has_sufficient_permissions() const { return check_monitor_permissions(m_monitor, "SELECT @@aurora_server_id, server_id FROM " diff --git a/server/modules/monitor/auroramon/auroramon.hh b/server/modules/monitor/auroramon/auroramon.hh index 6e5054343..ee5b8c135 100644 --- a/server/modules/monitor/auroramon/auroramon.hh +++ b/server/modules/monitor/auroramon/auroramon.hh @@ -28,11 +28,8 @@ public: ~AuroraMonitor(); static AuroraMonitor* create(MXS_MONITOR* monitor); - void diagnostics(DCB* dcb) const; - json_t* diagnostics_json() const; protected: - bool configure(const MXS_CONFIG_PARAMETER* params); bool has_sufficient_permissions() const; void update_server_status(MXS_MONITORED_SERVER* monitored_server); diff --git a/server/modules/monitor/galeramon/galeramon.cc b/server/modules/monitor/galeramon/galeramon.cc index b2e9b44e2..9d21eb3ce 100644 --- a/server/modules/monitor/galeramon/galeramon.cc +++ b/server/modules/monitor/galeramon/galeramon.cc @@ -109,18 +109,13 @@ void GaleraMonitor::diagnostics(DCB *dcb) const json_t* GaleraMonitor::diagnostics_json() const { - json_t* rval = json_object(); + json_t* rval = MonitorInstance::diagnostics_json(); json_object_set_new(rval, "disable_master_failback", json_boolean(m_disableMasterFailback)); json_object_set_new(rval, "disable_master_role_setting", json_boolean(m_disableMasterRoleSetting)); json_object_set_new(rval, "root_node_as_master", json_boolean(m_root_node_as_master)); json_object_set_new(rval, "use_priority", json_boolean(m_use_priority)); json_object_set_new(rval, "set_donor_nodes", json_boolean(m_set_donor_nodes)); - if (!script().empty()) - { - json_object_set_new(rval, "script", json_string(script().c_str())); - } - if (m_cluster_info.c_uuid) { json_object_set_new(rval, "cluster_uuid", json_string(m_cluster_info.c_uuid)); diff --git a/server/modules/monitor/grmon/grmon.cc b/server/modules/monitor/grmon/grmon.cc index 665d09f31..f6a4caef8 100644 --- a/server/modules/monitor/grmon/grmon.cc +++ b/server/modules/monitor/grmon/grmon.cc @@ -40,20 +40,6 @@ GRMon* GRMon::create(MXS_MONITOR* monitor) return new GRMon(monitor); } -void GRMon::diagnostics(DCB* dcb) const -{ -} - -json_t* GRMon::diagnostics_json() const -{ - return NULL; -} - -bool GRMon::configure(const MXS_CONFIG_PARAMETER* params) -{ - return true; -} - bool GRMon::has_sufficient_permissions() const { return true; diff --git a/server/modules/monitor/grmon/grmon.hh b/server/modules/monitor/grmon/grmon.hh index c7dae9ab6..d0734d51a 100644 --- a/server/modules/monitor/grmon/grmon.hh +++ b/server/modules/monitor/grmon/grmon.hh @@ -28,11 +28,8 @@ public: ~GRMon(); static GRMon* create(MXS_MONITOR* monitor); - void diagnostics(DCB* dcb) const; - json_t* diagnostics_json() const; protected: - bool configure(const MXS_CONFIG_PARAMETER* params); bool has_sufficient_permissions() const; void update_server_status(MXS_MONITORED_SERVER* monitored_server); diff --git a/server/modules/monitor/mmmon/mmmon.cc b/server/modules/monitor/mmmon/mmmon.cc index 006e4dbf0..8b454b58e 100644 --- a/server/modules/monitor/mmmon/mmmon.cc +++ b/server/modules/monitor/mmmon/mmmon.cc @@ -59,7 +59,7 @@ void MMMonitor::diagnostics(DCB *dcb) const json_t* MMMonitor::diagnostics_json() const { - json_t* rval = json_object(); + json_t* rval = MonitorInstance::diagnostics_json(); json_object_set_new(rval, "detect_stale_master", json_boolean(m_detectStaleMaster)); return rval; } diff --git a/server/modules/monitor/ndbclustermon/ndbclustermon.cc b/server/modules/monitor/ndbclustermon/ndbclustermon.cc index 4596ebea1..757eef8ad 100644 --- a/server/modules/monitor/ndbclustermon/ndbclustermon.cc +++ b/server/modules/monitor/ndbclustermon/ndbclustermon.cc @@ -38,20 +38,6 @@ NDBCMonitor* NDBCMonitor::create(MXS_MONITOR* monitor) return new NDBCMonitor(monitor); } -void NDBCMonitor::diagnostics(DCB *dcb) const -{ -} - -json_t* NDBCMonitor::diagnostics_json() const -{ - return NULL; -} - -bool NDBCMonitor::configure(const MXS_CONFIG_PARAMETER* params) -{ - return true; -} - bool NDBCMonitor::has_sufficient_permissions() const { return check_monitor_permissions(m_monitor, "SHOW STATUS LIKE 'Ndb_number_of_ready_data_nodes'"); diff --git a/server/modules/monitor/ndbclustermon/ndbclustermon.hh b/server/modules/monitor/ndbclustermon/ndbclustermon.hh index ef476b804..971eb41c1 100644 --- a/server/modules/monitor/ndbclustermon/ndbclustermon.hh +++ b/server/modules/monitor/ndbclustermon/ndbclustermon.hh @@ -28,11 +28,8 @@ public: ~NDBCMonitor(); static NDBCMonitor* create(MXS_MONITOR* monitor); - void diagnostics(DCB* dcb) const; - json_t* diagnostics_json() const; protected: - bool configure(const MXS_CONFIG_PARAMETER* params); bool has_sufficient_permissions() const; void update_server_status(MXS_MONITORED_SERVER* monitored_server);