MXS-1782: Add listener state to REST API
The state of each individual listener is now displayed in the REST API. Created common functions for printing the listener state and took them into use. Added the new state into MaxCtrl output.
This commit is contained in:
parent
f8a91fb272
commit
32fdc3d454
@ -121,4 +121,13 @@ SERV_LISTENER* listener_iterator_init(const struct service* service, LISTENER_IT
|
||||
*/
|
||||
SERV_LISTENER* listener_iterator_next(LISTENER_ITERATOR* iter);
|
||||
|
||||
/**
|
||||
* Get listener state as a string
|
||||
*
|
||||
* @param listener Listener to inspect
|
||||
*
|
||||
* @return State of the listener as a string
|
||||
*/
|
||||
const char* listener_state_to_string(const SERV_LISTENER* listener);
|
||||
|
||||
MXS_END_DECLS
|
||||
|
@ -104,7 +104,8 @@ exports.builder = function(yargs) {
|
||||
return getSubCollection(host, 'services/' + argv.service, 'attributes.listeners', [
|
||||
{'Name': 'id'},
|
||||
{'Port': 'attributes.parameters.port'},
|
||||
{'Host': 'attributes.parameters.host'}
|
||||
{'Host': 'attributes.parameters.host'},
|
||||
{'State': 'attributes.state'}
|
||||
])
|
||||
})
|
||||
})
|
||||
|
@ -527,6 +527,7 @@ json_t* listener_to_json(const SERV_LISTENER* listener)
|
||||
}
|
||||
|
||||
json_t* attr = json_object();
|
||||
json_object_set_new(attr, CN_STATE, json_string(listener_state_to_string(listener)));
|
||||
json_object_set_new(attr, CN_PARAMETERS, param);
|
||||
|
||||
if (listener->listener->authfunc.diagnostic_json)
|
||||
@ -540,9 +541,9 @@ json_t* listener_to_json(const SERV_LISTENER* listener)
|
||||
}
|
||||
|
||||
json_t* rval = json_object();
|
||||
json_object_set_new(rval, CN_ATTRIBUTES, attr);
|
||||
json_object_set_new(rval, CN_ID, json_string(listener->name));
|
||||
json_object_set_new(rval, CN_TYPE, json_string(CN_LISTENERS));
|
||||
json_object_set_new(rval, CN_ATTRIBUTES, attr);
|
||||
|
||||
return rval;
|
||||
}
|
||||
@ -580,3 +581,28 @@ SERV_LISTENER* listener_iterator_next(LISTENER_ITERATOR* iter)
|
||||
|
||||
return iter->current;
|
||||
}
|
||||
|
||||
const char* listener_state_to_string(const SERV_LISTENER* listener)
|
||||
{
|
||||
ss_dassert(listener);
|
||||
|
||||
if (listener->listener && listener->listener->session)
|
||||
{
|
||||
switch (listener->listener->session->state)
|
||||
{
|
||||
case SESSION_STATE_LISTENER_STOPPED:
|
||||
return "Stopped";
|
||||
|
||||
case SESSION_STATE_LISTENER:
|
||||
return "Running";
|
||||
|
||||
default:
|
||||
ss_dassert(!true);
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Failed";
|
||||
}
|
||||
}
|
||||
|
@ -1626,10 +1626,7 @@ dListListeners(DCB *dcb)
|
||||
listener->name, service->name, listener->protocol,
|
||||
(listener && listener->address) ? listener->address : "*",
|
||||
listener->port,
|
||||
(!listener->listener ||
|
||||
!listener->listener->session ||
|
||||
listener->listener->session->state == SESSION_STATE_LISTENER_STOPPED) ?
|
||||
"Stopped" : "Running");
|
||||
listener_state_to_string(listener));
|
||||
}
|
||||
}
|
||||
service = service->next;
|
||||
@ -2099,10 +2096,7 @@ serviceListenerRowCallback(RESULTSET *set, void *data)
|
||||
resultset_row_set(row, 2, (lptr && lptr->address) ? lptr->address : "*");
|
||||
sprintf(buf, "%d", lptr->port);
|
||||
resultset_row_set(row, 3, buf);
|
||||
resultset_row_set(row, 4,
|
||||
(!lptr->listener || !lptr->listener->session ||
|
||||
lptr->listener->session->state == SESSION_STATE_LISTENER_STOPPED) ?
|
||||
"Stopped" : "Running");
|
||||
resultset_row_set(row, 4, listener_state_to_string(lptr));
|
||||
spinlock_release(&service_spin);
|
||||
return row;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user