Change camelCase to snake_case in JSON

The Java Persister converts camelCase to snake_case for
the alarm state transition sub_alarms JSON element.

The python persister needs to do the same.

The following element names in the alarm state transition
sub_alarm element need to be converted to snake_case:

subAlarmExpression -> sub_alarm_expression
metricDefinition -> metric_definition
alarmState -> alarm_state

These elements originate from the Monasca Threshold Engine.
Ideally, the Threshold Engine should be modified to send
the JSON in snake_case.

Change-Id: I33c779e4741c797fbeeaf179441a65504444b0bd
This commit is contained in:
Deklan Dieterly 2015-10-13 09:22:54 -06:00
parent 075002df2f
commit 9b1f5b60cc
1 changed files with 21 additions and 3 deletions

View File

@ -440,6 +440,26 @@ class AlarmPersister(AbstractPersister):
sub_alarms = alarm_transitioned['subAlarms']
if sub_alarms:
sub_alarms_json = json.dumps(sub_alarms, ensure_ascii=False)
sub_alarms_json_snake_case = sub_alarms_json.replace(
'"subAlarmExpression":',
'"sub_alarm_expression":')
sub_alarms_json_snake_case = sub_alarms_json_snake_case.replace(
'"metricDefinition":',
'"metric_definition":')
sub_alarms_json_snake_case = sub_alarms_json_snake_case.replace(
'"subAlarmState":',
'"sub_alarm_state":')
else:
sub_alarms_json_snake_case = "[]"
ts = time_stamp / 1000.0
data = {"measurement": 'alarm_state_history',
@ -453,9 +473,7 @@ class AlarmPersister(AbstractPersister):
"old_state": old_state.encode('utf8'),
"reason": state_change_reason.encode('utf8'),
"reason_data": "{}".encode('utf8'),
"sub_alarms": json.dumps(sub_alarms,
ensure_ascii=False).encode(
'utf8') if sub_alarms else "[]".encode('utf8')
"sub_alarms": sub_alarms_json_snake_case.encode('utf8')
},
"tags": {
"tenant_id": tenant_id.encode('utf8')