[WORKER] Change PING -> STATS, STATS -> METRICS
Gearman message actions need to change to maintain backward compatibility. PING will revert back to STATS, and METRICS will replace the STATS message. Worker message documentation is also updated. Change-Id: I1aa7478abcf29ffe5dbd512b2175dc5633548064
This commit is contained in:
parent
f35ddd0b1d
commit
1be91d326f
|
@ -31,11 +31,11 @@ Required Fields
|
|||
^^^^^^^^^^^^^^^
|
||||
|
||||
* hpcs_action
|
||||
* loadbalancers
|
||||
* loadbalancers.protocol
|
||||
* loadbalancers.nodes
|
||||
* loadbalancers.nodes.address
|
||||
* loadbalancers.nodes.port
|
||||
* loadBalancers
|
||||
* loadBalancers.protocol
|
||||
* loadBalancers.nodes
|
||||
* loadBalancers.nodes.address
|
||||
* loadBalancers.nodes.port
|
||||
|
||||
Example Request
|
||||
^^^^^^^^^^^^^^^
|
||||
|
@ -44,7 +44,7 @@ Example Request
|
|||
|
||||
{
|
||||
"hpcs_action": "UPDATE",
|
||||
"loadbalancers": [
|
||||
"loadBalancers": [
|
||||
{
|
||||
"name": "a-new-loadbalancer",
|
||||
"protocol": "http",
|
||||
|
@ -66,7 +66,7 @@ Example Response
|
|||
|
||||
{
|
||||
"hpcs_action": "UPDATE",
|
||||
"loadbalancers": [
|
||||
"loadBalancers": [
|
||||
{
|
||||
"name": "a-new-loadbalancer",
|
||||
"protocol": "http",
|
||||
|
@ -271,8 +271,8 @@ Required Fields
|
|||
* hpcs_object_store_basepath
|
||||
* hpcs_object_store_endpoint
|
||||
* hpcs_object_store_token
|
||||
* loadbalancers
|
||||
* loadbalancers.protocol
|
||||
* loadBalancers
|
||||
* loadBalancers.protocol
|
||||
|
||||
Example Request
|
||||
^^^^^^^^^^^^^^^
|
||||
|
@ -285,7 +285,7 @@ Example Request
|
|||
"hpcs_object_store_endpoint": "https://example.com/v1/100",
|
||||
"hpcs_object_store_token": "MY_AUTH_TOKEN",
|
||||
"hpcs_object_store_type": "swift",
|
||||
"loadbalancers": [
|
||||
"loadBalancers": [
|
||||
{
|
||||
"id": "15",
|
||||
"name": "lb #1",
|
||||
|
@ -305,7 +305,7 @@ Example Response
|
|||
"hpcs_object_store_endpoint": "https://example.com/v1/100",
|
||||
"hpcs_object_store_token": "MY_AUTH_TOKEN",
|
||||
"hpcs_object_store_type": "swift",
|
||||
"loadbalancers": [
|
||||
"loadBalancers": [
|
||||
{
|
||||
"id": "15",
|
||||
"name": "lb #1",
|
||||
|
@ -320,9 +320,9 @@ Example Response
|
|||
STATS Message
|
||||
-------------
|
||||
|
||||
The STATS message queries the worker for load balancer statistics. Currently,
|
||||
this doesn't do more than verify that the HAProxy process is running and we
|
||||
can successfully query its statistics socket.
|
||||
The STATS message queries the worker for general availability (i.e., a ping)
|
||||
Currently, this doesn't do more than verify that the HAProxy process is
|
||||
running and we can successfully query its statistics socket.
|
||||
|
||||
Required Fields
|
||||
^^^^^^^^^^^^^^^
|
||||
|
@ -348,3 +348,47 @@ Example Response
|
|||
"hpcs_response": "PASS"
|
||||
}
|
||||
|
||||
|
||||
METRICS Message
|
||||
---------------
|
||||
|
||||
The METRICS message queries the worker for load balancer usage metrics.
|
||||
The number of bytes out for each load balancer defined on the device
|
||||
is returned in the response.
|
||||
|
||||
Required Fields
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
* hpcs_action
|
||||
|
||||
Example Request
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"hpcs_action": "METRICS"
|
||||
}
|
||||
|
||||
Example Response
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"hpcs_action": "METRICS",
|
||||
"utc_start": "2014-01-09 15:11.45.704754",
|
||||
"utc_end": "2014-01-09 16:10.00.72683",
|
||||
"loadBalancers": [
|
||||
{
|
||||
"protocol": "HTTP",
|
||||
"bytes_out": "12345"
|
||||
},
|
||||
{
|
||||
"protocol": "TCP",
|
||||
"bytes_out": "5678"
|
||||
}
|
||||
],
|
||||
"hpcs_response": "PASS"
|
||||
}
|
||||
|
||||
|
|
|
@ -70,10 +70,10 @@ class LBaaSController(object):
|
|||
return self._action_discover()
|
||||
elif action == 'ARCHIVE':
|
||||
return self._action_archive()
|
||||
elif action == 'METRICS':
|
||||
return self._action_metrics()
|
||||
elif action == 'STATS':
|
||||
return self._action_stats()
|
||||
elif action == 'PING':
|
||||
return self._action_ping()
|
||||
elif action == 'DIAGNOSTICS':
|
||||
return self._action_diagnostic()
|
||||
else:
|
||||
|
@ -488,7 +488,7 @@ class LBaaSController(object):
|
|||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_SUCCESS
|
||||
return self.msg
|
||||
|
||||
def _action_ping(self):
|
||||
def _action_stats(self):
|
||||
"""
|
||||
Get load balancer and node status.
|
||||
|
||||
|
@ -500,18 +500,18 @@ class LBaaSController(object):
|
|||
try:
|
||||
nodes = self.driver.get_status()
|
||||
except NotImplementedError:
|
||||
error = "Selected driver does not support PING action."
|
||||
error = "Selected driver does not support STATS action."
|
||||
LOG.error(error)
|
||||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
|
||||
self.msg[self.ERROR_FIELD] = error
|
||||
except DeletedStateError:
|
||||
error = "Invalid operation PING on a deleted LB."
|
||||
error = "Invalid operation STATS on a deleted LB."
|
||||
LOG.error(error)
|
||||
self.msg['status'] = 'DELETED'
|
||||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
|
||||
self.msg[self.ERROR_FIELD] = error
|
||||
except Exception as e:
|
||||
LOG.error("PING failed: %s, %s" % (e.__class__, e))
|
||||
LOG.error("STATS failed: %s, %s" % (e.__class__, e))
|
||||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
|
||||
self.msg[self.ERROR_FIELD] = str(e)
|
||||
else:
|
||||
|
@ -522,9 +522,9 @@ class LBaaSController(object):
|
|||
|
||||
return self.msg
|
||||
|
||||
def _action_stats(self):
|
||||
def _action_metrics(self):
|
||||
"""
|
||||
Get load balancer statistics
|
||||
Get load balancer metrics
|
||||
|
||||
This type of request gets the number of bytes out for each load
|
||||
balancer defined on the device. If both a TCP and HTTP load
|
||||
|
@ -534,20 +534,20 @@ class LBaaSController(object):
|
|||
try:
|
||||
start, end, statistics = self.driver.get_statistics()
|
||||
except NotImplementedError:
|
||||
error = "Selected driver does not support STATS action."
|
||||
error = "Selected driver does not support METRICS action."
|
||||
LOG.error(error)
|
||||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
|
||||
self.msg[self.ERROR_FIELD] = error
|
||||
return self.msg
|
||||
except DeletedStateError:
|
||||
error = "Invalid operation STATS on a deleted LB."
|
||||
error = "Invalid operation METRICS on a deleted LB."
|
||||
LOG.error(error)
|
||||
self.msg['status'] = 'DELETED'
|
||||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
|
||||
self.msg[self.ERROR_FIELD] = error
|
||||
return self.msg
|
||||
except Exception as e:
|
||||
LOG.error("STATS failed: %s, %s" % (e.__class__, e))
|
||||
LOG.error("METRICS failed: %s, %s" % (e.__class__, e))
|
||||
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
|
||||
self.msg[self.ERROR_FIELD] = str(e)
|
||||
return self.msg
|
||||
|
|
|
@ -35,7 +35,7 @@ class StatisticsManager(object):
|
|||
These are stats that we need to save because a state change in
|
||||
the HAProxy service is causing it to restart. Since HAProxy stores
|
||||
its stats in memory, they would otherwise be lost. We save them here
|
||||
for consideration in the next STATS request.
|
||||
for consideration in the next METRICS request.
|
||||
|
||||
* Last queried stats
|
||||
These are total bytes out as reported from HAProxy the last time we
|
||||
|
|
|
@ -71,7 +71,7 @@ class UbuntuServices(services_base.ServicesBase):
|
|||
if 'http' in results:
|
||||
curr_http_bo = results['http']
|
||||
|
||||
# If we have unreported totals, then we haven't received a STATS
|
||||
# If we have unreported totals, then we haven't received a METRICS
|
||||
# call since the last restart and we need to carry over those totals.
|
||||
curr_tcp_bo += unrpt_tcp_bo
|
||||
curr_http_bo += unrpt_http_bo
|
||||
|
|
Loading…
Reference in New Issue