Use monasca-common json processing
Following replaces usage of standard json with monasca-common rest layer. Depends-On: I186abe4cdafd58d998f8aaf36d866795771a9e0a Change-Id: I2f9d22a2c5e18826c8f9bb1e817ad963731b390f
This commit is contained in:
parent
2fabda60db
commit
ed8238dfdc
|
@ -12,10 +12,10 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import json
|
|
||||||
|
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
|
||||||
|
from monasca_common.rest import utils as rest_utils
|
||||||
|
|
||||||
|
|
||||||
def transform(metrics, tenant_id, region):
|
def transform(metrics, tenant_id, region):
|
||||||
transformed_metric = {'metric': {},
|
transformed_metric = {'metric': {},
|
||||||
|
@ -26,8 +26,8 @@ def transform(metrics, tenant_id, region):
|
||||||
transformed_metrics = []
|
transformed_metrics = []
|
||||||
for metric in metrics:
|
for metric in metrics:
|
||||||
transformed_metric['metric'] = metric
|
transformed_metric['metric'] = metric
|
||||||
transformed_metrics.append(json.dumps(transformed_metric))
|
transformed_metrics.append(rest_utils.as_json(transformed_metric))
|
||||||
return transformed_metrics
|
return transformed_metrics
|
||||||
else:
|
else:
|
||||||
transformed_metric['metric'] = metrics
|
transformed_metric['metric'] = metrics
|
||||||
return [json.dumps(transformed_metric)]
|
return [rest_utils.as_json(transformed_metric)]
|
||||||
|
|
|
@ -16,7 +16,6 @@ import binascii
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from cassandra.cluster import Cluster
|
from cassandra.cluster import Cluster
|
||||||
|
@ -25,6 +24,8 @@ from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
|
||||||
|
from monasca_common.rest import utils as rest_utils
|
||||||
|
|
||||||
from monasca_api.common.repositories import exceptions
|
from monasca_api.common.repositories import exceptions
|
||||||
from monasca_api.common.repositories import metrics_repository
|
from monasca_api.common.repositories import metrics_repository
|
||||||
|
|
||||||
|
@ -233,7 +234,7 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
|
||||||
measurements_list = (
|
measurements_list = (
|
||||||
[[self._isotime_msec(time_stamp),
|
[[self._isotime_msec(time_stamp),
|
||||||
value,
|
value,
|
||||||
json.loads(value_meta) if value_meta else {}]
|
rest_utils.from_json(value_meta) if value_meta else {}]
|
||||||
for (time_stamp, value, value_meta) in rows])
|
for (time_stamp, value, value_meta) in rows])
|
||||||
|
|
||||||
measurement = {u'name': name,
|
measurement = {u'name': name,
|
||||||
|
@ -621,12 +622,12 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
|
||||||
|
|
||||||
alarm = {u'timestamp': self._isotime_msec(time_stamp),
|
alarm = {u'timestamp': self._isotime_msec(time_stamp),
|
||||||
u'alarm_id': alarm_id,
|
u'alarm_id': alarm_id,
|
||||||
u'metrics': json.loads(metrics),
|
u'metrics': rest_utils.from_json(metrics),
|
||||||
u'new_state': new_state,
|
u'new_state': new_state,
|
||||||
u'old_state': old_state,
|
u'old_state': old_state,
|
||||||
u'reason': reason,
|
u'reason': reason,
|
||||||
u'reason_data': reason_data,
|
u'reason_data': reason_data,
|
||||||
u'sub_alarms': json.loads(sub_alarms),
|
u'sub_alarms': rest_utils.from_json(sub_alarms),
|
||||||
u'id': str(self._get_millis_from_timestamp(time_stamp)
|
u'id': str(self._get_millis_from_timestamp(time_stamp)
|
||||||
).decode('utf8')}
|
).decode('utf8')}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from distutils import version
|
from distutils import version
|
||||||
import json
|
|
||||||
|
|
||||||
from influxdb import client
|
from influxdb import client
|
||||||
from influxdb.exceptions import InfluxDBClientError
|
from influxdb.exceptions import InfluxDBClientError
|
||||||
|
@ -23,6 +22,8 @@ from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
|
||||||
|
from monasca_common.rest import utils as rest_utils
|
||||||
|
|
||||||
from monasca_api.common.repositories import exceptions
|
from monasca_api.common.repositories import exceptions
|
||||||
from monasca_api.common.repositories import metrics_repository
|
from monasca_api.common.repositories import metrics_repository
|
||||||
|
|
||||||
|
@ -556,7 +557,7 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
|
||||||
|
|
||||||
measurements_list = []
|
measurements_list = []
|
||||||
for point in serie['values']:
|
for point in serie['values']:
|
||||||
value_meta = json.loads(point[2]) if point[2] else {}
|
value_meta = rest_utils.from_json(point[2]) if point[2] else {}
|
||||||
timestamp = point[0][:19] + '.' + point[0][20:-1].ljust(3, '0') + 'Z'
|
timestamp = point[0][:19] + '.' + point[0][20:-1].ljust(3, '0') + 'Z'
|
||||||
|
|
||||||
measurements_list.append([timestamp,
|
measurements_list.append([timestamp,
|
||||||
|
@ -840,12 +841,12 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
|
||||||
for point in result.raw['series'][0]['values']:
|
for point in result.raw['series'][0]['values']:
|
||||||
alarm_point = {u'timestamp': point[0],
|
alarm_point = {u'timestamp': point[0],
|
||||||
u'alarm_id': point[1],
|
u'alarm_id': point[1],
|
||||||
u'metrics': json.loads(point[2]),
|
u'metrics': rest_utils.from_json(point[2]),
|
||||||
u'new_state': point[3],
|
u'new_state': point[3],
|
||||||
u'old_state': point[4],
|
u'old_state': point[4],
|
||||||
u'reason': point[5],
|
u'reason': point[5],
|
||||||
u'reason_data': point[6],
|
u'reason_data': point[6],
|
||||||
u'sub_alarms': json.loads(point[7]),
|
u'sub_alarms': rest_utils.from_json(point[7]),
|
||||||
u'id': str(self._get_millis_from_timestamp(
|
u'id': str(self._get_millis_from_timestamp(
|
||||||
timeutils.parse_isotime(point[0])))}
|
timeutils.parse_isotime(point[0])))}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
def on_post(self, req, res):
|
def on_post(self, req, res):
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
|
|
||||||
alarm_definition = helpers.read_json_msg_body(req)
|
alarm_definition = helpers.from_json(req)
|
||||||
|
|
||||||
self._validate_alarm_definition(alarm_definition)
|
self._validate_alarm_definition(alarm_definition)
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
ok_actions)
|
ok_actions)
|
||||||
|
|
||||||
helpers.add_links_to_resource(result, req.uri)
|
helpers.add_links_to_resource(result, req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_201
|
res.status = falcon.HTTP_201
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -115,7 +115,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
req.uri, sort_by,
|
req.uri, sort_by,
|
||||||
offset, req.limit)
|
offset, req.limit)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -127,7 +127,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
helpers.add_links_to_resource(result,
|
helpers.add_links_to_resource(result,
|
||||||
re.sub('/' + alarm_definition_id, '',
|
re.sub('/' + alarm_definition_id, '',
|
||||||
req.uri))
|
req.uri))
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -135,7 +135,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
|
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
|
|
||||||
alarm_definition = helpers.read_json_msg_body(req)
|
alarm_definition = helpers.from_json(req)
|
||||||
|
|
||||||
self._validate_alarm_definition(alarm_definition, require_all=True)
|
self._validate_alarm_definition(alarm_definition, require_all=True)
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
patch=False)
|
patch=False)
|
||||||
|
|
||||||
helpers.add_links_to_resource(result, req.uri)
|
helpers.add_links_to_resource(result, req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -173,7 +173,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
|
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
|
|
||||||
alarm_definition = helpers.read_json_msg_body(req)
|
alarm_definition = helpers.from_json(req)
|
||||||
|
|
||||||
# Optional args
|
# Optional args
|
||||||
name = get_query_alarm_definition_name(alarm_definition,
|
name = get_query_alarm_definition_name(alarm_definition,
|
||||||
|
@ -210,7 +210,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
|
||||||
patch=True)
|
patch=True)
|
||||||
|
|
||||||
helpers.add_links_to_resource(result, req.uri)
|
helpers.add_links_to_resource(result, req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
|
|
@ -174,8 +174,7 @@ class Alarming(object):
|
||||||
|
|
||||||
def send_event(self, message_queue, event_msg):
|
def send_event(self, message_queue, event_msg):
|
||||||
try:
|
try:
|
||||||
message_queue.send_message(
|
message_queue.send_message(helpers.to_json(event_msg))
|
||||||
helpers.dumpit_utf8(event_msg))
|
|
||||||
except message_queue_exceptions.MessageQueueException as ex:
|
except message_queue_exceptions.MessageQueueException as ex:
|
||||||
LOG.exception(ex)
|
LOG.exception(ex)
|
||||||
raise falcon.HTTPInternalServerError(
|
raise falcon.HTTPInternalServerError(
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Alarms(alarms_api_v2.AlarmsV2API,
|
||||||
|
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
|
|
||||||
alarm = helpers.read_http_resource(req)
|
alarm = helpers.from_json(req)
|
||||||
schema_alarm.validate(alarm)
|
schema_alarm.validate(alarm)
|
||||||
|
|
||||||
# Validator makes state optional, so check it here
|
# Validator makes state optional, so check it here
|
||||||
|
@ -73,7 +73,7 @@ class Alarms(alarms_api_v2.AlarmsV2API,
|
||||||
|
|
||||||
result = self._alarm_show(req.uri, req.project_id, alarm_id)
|
result = self._alarm_show(req.uri, req.project_id, alarm_id)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -81,7 +81,7 @@ class Alarms(alarms_api_v2.AlarmsV2API,
|
||||||
|
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
|
|
||||||
alarm = helpers.read_http_resource(req)
|
alarm = helpers.from_json(req)
|
||||||
schema_alarm.validate(alarm)
|
schema_alarm.validate(alarm)
|
||||||
|
|
||||||
old_alarm = self._alarms_repo.get_alarm(req.project_id, alarm_id)[0]
|
old_alarm = self._alarms_repo.get_alarm(req.project_id, alarm_id)[0]
|
||||||
|
@ -99,7 +99,7 @@ class Alarms(alarms_api_v2.AlarmsV2API,
|
||||||
|
|
||||||
result = self._alarm_show(req.uri, req.project_id, alarm_id)
|
result = self._alarm_show(req.uri, req.project_id, alarm_id)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -150,13 +150,13 @@ class Alarms(alarms_api_v2.AlarmsV2API,
|
||||||
query_parms, offset,
|
query_parms, offset,
|
||||||
req.limit)
|
req.limit)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
else:
|
else:
|
||||||
result = self._alarm_show(req.uri, req.project_id, alarm_id)
|
result = self._alarm_show(req.uri, req.project_id, alarm_id)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _alarm_update(self, tenant_id, alarm_id, new_state, lifecycle_state,
|
def _alarm_update(self, tenant_id, alarm_id, new_state, lifecycle_state,
|
||||||
|
@ -397,7 +397,7 @@ class AlarmsCount(alarms_api_v2.AlarmsCountV2API, alarming.Alarming):
|
||||||
|
|
||||||
result = self._alarms_count(req.uri, req.project_id, query_parms, offset, req.limit)
|
result = self._alarms_count(req.uri, req.project_id, query_parms, offset, req.limit)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _alarms_count(self, req_uri, tenant_id, query_parms, offset, limit):
|
def _alarms_count(self, req_uri, tenant_id, query_parms, offset, limit):
|
||||||
|
@ -484,7 +484,7 @@ class AlarmsStateHistory(alarms_api_v2.AlarmsStateHistoryV2API,
|
||||||
end_timestamp, dimensions,
|
end_timestamp, dimensions,
|
||||||
req.uri, offset, req.limit)
|
req.uri, offset, req.limit)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -495,7 +495,7 @@ class AlarmsStateHistory(alarms_api_v2.AlarmsStateHistoryV2API,
|
||||||
req.uri, offset,
|
req.uri, offset,
|
||||||
req.limit)
|
req.limit)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _alarm_history_list(self, tenant_id, start_timestamp,
|
def _alarm_history_list(self, tenant_id, start_timestamp,
|
||||||
|
|
|
@ -14,22 +14,22 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
|
||||||
|
|
||||||
import falcon
|
import falcon
|
||||||
from monasca_common.validation import metrics as metric_validation
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
import simplejson
|
|
||||||
import six
|
import six
|
||||||
import six.moves.urllib.parse as urlparse
|
import six.moves.urllib.parse as urlparse
|
||||||
|
|
||||||
|
from monasca_common.rest import utils as rest_utils
|
||||||
|
from monasca_common.validation import metrics as metric_validation
|
||||||
|
|
||||||
from monasca_api.v2.common.exceptions import HTTPUnprocessableEntityError
|
from monasca_api.v2.common.exceptions import HTTPUnprocessableEntityError
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def read_json_msg_body(req):
|
def from_json(req):
|
||||||
"""Read the json_msg from the http request body and return them as JSON.
|
"""Read the json_msg from the http request body and return them as JSON.
|
||||||
|
|
||||||
:param req: HTTP request object.
|
:param req: HTTP request object.
|
||||||
|
@ -38,14 +38,29 @@ def read_json_msg_body(req):
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
msg = req.stream.read()
|
msg = req.stream.read()
|
||||||
json_msg = json.loads(msg)
|
return rest_utils.from_json(msg)
|
||||||
return json_msg
|
except Exception as ex:
|
||||||
except ValueError as ex:
|
LOG.exception(ex)
|
||||||
LOG.debug(ex)
|
|
||||||
raise falcon.HTTPBadRequest('Bad request',
|
raise falcon.HTTPBadRequest('Bad request',
|
||||||
'Request body is not valid JSON')
|
'Request body is not valid JSON')
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(data):
|
||||||
|
"""Converts data to JSON string.
|
||||||
|
|
||||||
|
:param dict data: data to be transformed to JSON
|
||||||
|
:return: JSON string
|
||||||
|
:rtype: str
|
||||||
|
:raises: Exception
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# NOTE(trebskit) ensure_ascii => UTF-8
|
||||||
|
return rest_utils.as_json(data, ensure_ascii=False)
|
||||||
|
except Exception as ex:
|
||||||
|
LOG.exception(ex)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
def validate_json_content_type(req):
|
def validate_json_content_type(req):
|
||||||
if req.content_type not in ['application/json']:
|
if req.content_type not in ['application/json']:
|
||||||
raise falcon.HTTPBadRequest('Bad request', 'Bad content type. Must be '
|
raise falcon.HTTPBadRequest('Bad request', 'Bad content type. Must be '
|
||||||
|
@ -718,20 +733,6 @@ def add_links_to_resource_list(resourcelist, uri):
|
||||||
return resourcelist
|
return resourcelist
|
||||||
|
|
||||||
|
|
||||||
def read_http_resource(req):
|
|
||||||
"""Read from http request and return json.
|
|
||||||
|
|
||||||
:param req: the http request.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
msg = req.stream.read()
|
|
||||||
json_msg = simplejson.loads(msg)
|
|
||||||
return json_msg
|
|
||||||
except ValueError as ex:
|
|
||||||
LOG.debug(ex)
|
|
||||||
raise HTTPUnprocessableEntityError('Unprocessable Entity', 'Request body is not valid JSON')
|
|
||||||
|
|
||||||
|
|
||||||
def raise_not_found_exception(resource_name, resource_id, tenant_id):
|
def raise_not_found_exception(resource_name, resource_id, tenant_id):
|
||||||
"""Provides exception for not found requests (update, delete, list).
|
"""Provides exception for not found requests (update, delete, list).
|
||||||
|
|
||||||
|
@ -748,9 +749,5 @@ def raise_not_found_exception(resource_name, resource_id, tenant_id):
|
||||||
code=404)
|
code=404)
|
||||||
|
|
||||||
|
|
||||||
def dumpit_utf8(thingy):
|
|
||||||
return json.dumps(thingy, ensure_ascii=False).encode('utf8')
|
|
||||||
|
|
||||||
|
|
||||||
def str_2_bool(s):
|
def str_2_bool(s):
|
||||||
return s.lower() in ("true")
|
return s.lower() in ("true")
|
||||||
|
|
|
@ -96,7 +96,7 @@ class Metrics(metrics_api_v2.MetricsV2API):
|
||||||
helpers.validate_json_content_type(req)
|
helpers.validate_json_content_type(req)
|
||||||
helpers.validate_authorization(req,
|
helpers.validate_authorization(req,
|
||||||
self._post_metrics_authorized_roles)
|
self._post_metrics_authorized_roles)
|
||||||
metrics = helpers.read_http_resource(req)
|
metrics = helpers.from_json(req)
|
||||||
try:
|
try:
|
||||||
metric_validation.validate(metrics)
|
metric_validation.validate(metrics)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
@ -129,7 +129,7 @@ class Metrics(metrics_api_v2.MetricsV2API):
|
||||||
dimensions, req.uri,
|
dimensions, req.uri,
|
||||||
offset, req.limit,
|
offset, req.limit,
|
||||||
start_timestamp, end_timestamp)
|
start_timestamp, end_timestamp)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ class MetricsMeasurements(metrics_api_v2.MetricsMeasurementsV2API):
|
||||||
req.limit, merge_metrics_flag,
|
req.limit, merge_metrics_flag,
|
||||||
group_by)
|
group_by)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _measurement_list(self, tenant_id, name, dimensions, start_timestamp,
|
def _measurement_list(self, tenant_id, name, dimensions, start_timestamp,
|
||||||
|
@ -241,7 +241,7 @@ class MetricsStatistics(metrics_api_v2.MetricsStatisticsV2API):
|
||||||
offset, req.limit, merge_metrics_flag,
|
offset, req.limit, merge_metrics_flag,
|
||||||
group_by)
|
group_by)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _metric_statistics(self, tenant_id, name, dimensions, start_timestamp,
|
def _metric_statistics(self, tenant_id, name, dimensions, start_timestamp,
|
||||||
|
@ -292,7 +292,7 @@ class MetricsNames(metrics_api_v2.MetricsNamesV2API):
|
||||||
offset = helpers.get_query_param(req, 'offset')
|
offset = helpers.get_query_param(req, 'offset')
|
||||||
result = self._list_metric_names(tenant_id, dimensions,
|
result = self._list_metric_names(tenant_id, dimensions,
|
||||||
req.uri, offset, req.limit)
|
req.uri, offset, req.limit)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _list_metric_names(self, tenant_id, dimensions, req_uri, offset,
|
def _list_metric_names(self, tenant_id, dimensions, req_uri, offset,
|
||||||
|
@ -335,7 +335,7 @@ class DimensionValues(metrics_api_v2.DimensionValuesV2API):
|
||||||
offset = helpers.get_query_param(req, 'offset')
|
offset = helpers.get_query_param(req, 'offset')
|
||||||
result = self._dimension_values(tenant_id, req.uri, metric_name,
|
result = self._dimension_values(tenant_id, req.uri, metric_name,
|
||||||
dimension_name, offset, req.limit)
|
dimension_name, offset, req.limit)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _dimension_values(self, tenant_id, req_uri, metric_name,
|
def _dimension_values(self, tenant_id, req_uri, metric_name,
|
||||||
|
@ -377,7 +377,7 @@ class DimensionNames(metrics_api_v2.DimensionNamesV2API):
|
||||||
offset = helpers.get_query_param(req, 'offset')
|
offset = helpers.get_query_param(req, 'offset')
|
||||||
result = self._dimension_names(tenant_id, req.uri, metric_name,
|
result = self._dimension_names(tenant_id, req.uri, metric_name,
|
||||||
offset, req.limit)
|
offset, req.limit)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
def _dimension_names(self, tenant_id, req_uri, metric_name, offset, limit):
|
def _dimension_names(self, tenant_id, req_uri, metric_name, offset, limit):
|
||||||
|
|
|
@ -196,10 +196,10 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
||||||
def on_post(self, req, res):
|
def on_post(self, req, res):
|
||||||
helpers.validate_json_content_type(req)
|
helpers.validate_json_content_type(req)
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
notification = helpers.read_http_resource(req)
|
notification = helpers.from_json(req)
|
||||||
self._parse_and_validate_notification(notification)
|
self._parse_and_validate_notification(notification)
|
||||||
result = self._create_notification(req.project_id, notification, req.uri)
|
result = self._create_notification(req.project_id, notification, req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_201
|
res.status = falcon.HTTP_201
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -228,7 +228,7 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
||||||
|
|
||||||
result = self._list_notifications(req.project_id, req.uri, sort_by,
|
result = self._list_notifications(req.project_id, req.uri, sort_by,
|
||||||
offset, req.limit)
|
offset, req.limit)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
else:
|
else:
|
||||||
helpers.validate_authorization(req,
|
helpers.validate_authorization(req,
|
||||||
|
@ -236,7 +236,7 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
||||||
result = self._list_notification(req.project_id,
|
result = self._list_notification(req.project_id,
|
||||||
notification_method_id,
|
notification_method_id,
|
||||||
req.uri)
|
req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
|
@ -249,21 +249,21 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
||||||
def on_put(self, req, res, notification_method_id):
|
def on_put(self, req, res, notification_method_id):
|
||||||
helpers.validate_json_content_type(req)
|
helpers.validate_json_content_type(req)
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
notification = helpers.read_http_resource(req)
|
notification = helpers.from_json(req)
|
||||||
self._parse_and_validate_notification(notification, require_all=True)
|
self._parse_and_validate_notification(notification, require_all=True)
|
||||||
result = self._update_notification(notification_method_id, req.project_id,
|
result = self._update_notification(notification_method_id, req.project_id,
|
||||||
notification, req.uri)
|
notification, req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
def on_patch(self, req, res, notification_method_id):
|
def on_patch(self, req, res, notification_method_id):
|
||||||
helpers.validate_json_content_type(req)
|
helpers.validate_json_content_type(req)
|
||||||
helpers.validate_authorization(req, self._default_authorized_roles)
|
helpers.validate_authorization(req, self._default_authorized_roles)
|
||||||
notification = helpers.read_http_resource(req)
|
notification = helpers.from_json(req)
|
||||||
self._patch_get_notification(req.project_id, notification_method_id, notification)
|
self._patch_get_notification(req.project_id, notification_method_id, notification)
|
||||||
self._parse_and_validate_notification(notification, require_all=True)
|
self._parse_and_validate_notification(notification, require_all=True)
|
||||||
result = self._update_notification(notification_method_id, req.project_id,
|
result = self._update_notification(notification_method_id, req.project_id,
|
||||||
notification, req.uri)
|
notification, req.uri)
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
|
@ -39,5 +39,5 @@ class NotificationsType(notificationstype_api_v2.NotificationsTypeV2API):
|
||||||
# are not that many rows
|
# are not that many rows
|
||||||
result = self._list_notifications(req.uri, req.limit)
|
result = self._list_notifications(req.uri, req.limit)
|
||||||
|
|
||||||
res.body = helpers.dumpit_utf8(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import json
|
from monasca_api.v2.reference import helpers
|
||||||
|
|
||||||
|
|
||||||
class Version2(object):
|
class Version2(object):
|
||||||
|
@ -29,4 +29,4 @@ class Version2(object):
|
||||||
'status': 'CURRENT',
|
'status': 'CURRENT',
|
||||||
'updated': "2013-03-06T00:00:00.000Z"
|
'updated': "2013-03-06T00:00:00.000Z"
|
||||||
}
|
}
|
||||||
res.body = json.dumps(result)
|
res.body = helpers.to_json(result)
|
||||||
|
|
|
@ -12,12 +12,11 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import json
|
|
||||||
|
|
||||||
import falcon
|
import falcon
|
||||||
|
|
||||||
from monasca_api.api import versions_api
|
from monasca_api.api import versions_api
|
||||||
from monasca_api.v2.common.exceptions import HTTPUnprocessableEntityError
|
from monasca_api.v2.common.exceptions import HTTPUnprocessableEntityError
|
||||||
|
from monasca_api.v2.reference import helpers
|
||||||
|
|
||||||
VERSIONS = {
|
VERSIONS = {
|
||||||
'v2.0': {
|
'v2.0': {
|
||||||
|
@ -49,13 +48,13 @@ class Versions(versions_api.VersionsAPI):
|
||||||
VERSIONS[version]['links'][0]['href'] = (
|
VERSIONS[version]['links'][0]['href'] = (
|
||||||
req.uri.decode('utf8') + version)
|
req.uri.decode('utf8') + version)
|
||||||
result['elements'].append(VERSIONS[version])
|
result['elements'].append(VERSIONS[version])
|
||||||
res.body = json.dumps(result)
|
res.body = helpers.to_json(result)
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
else:
|
else:
|
||||||
if version_id in VERSIONS:
|
if version_id in VERSIONS:
|
||||||
VERSIONS[version_id]['links'][0]['href'] = (
|
VERSIONS[version_id]['links'][0]['href'] = (
|
||||||
req.uri.decode('utf8'))
|
req.uri.decode('utf8'))
|
||||||
res.body = json.dumps(VERSIONS[version_id])
|
res.body = helpers.to_json(VERSIONS[version_id])
|
||||||
res.status = falcon.HTTP_200
|
res.status = falcon.HTTP_200
|
||||||
else:
|
else:
|
||||||
raise HTTPUnprocessableEntityError('Invalid version',
|
raise HTTPUnprocessableEntityError('Invalid version',
|
||||||
|
|
|
@ -19,6 +19,5 @@ six>=1.9.0 # MIT
|
||||||
pyparsing>=2.1.0 # MIT
|
pyparsing>=2.1.0 # MIT
|
||||||
voluptuous>=0.8.9 # BSD License
|
voluptuous>=0.8.9 # BSD License
|
||||||
eventlet!=0.18.3,>=0.18.2 # MIT
|
eventlet!=0.18.3,>=0.18.2 # MIT
|
||||||
simplejson>=2.2.0 # MIT
|
|
||||||
monasca-common>=1.4.0 # Apache-2.0
|
monasca-common>=1.4.0 # Apache-2.0
|
||||||
SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT
|
SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT
|
||||||
|
|
Loading…
Reference in New Issue