MXS-1775 Add default implementations

This commit is contained in:
Johan Wikman
2018-05-25 16:17:44 +03:00
parent 9b7e37e112
commit ebcb807438
10 changed files with 47 additions and 64 deletions

View File

@ -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);

View File

@ -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))

View File

@ -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 "

View File

@ -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);

View File

@ -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));

View File

@ -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;

View File

@ -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);

View File

@ -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;
}

View File

@ -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'");

View File

@ -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);