Mark /v2.0/log/single as deprecated
/v2.0/log/single has been marked as depracated, therefore this commit provides: - marked endpoint as depracated with '@falcon.depracated' which will effect in adding log message to log file with appropriate information - successful responses for /v2.0/log/single will contain 'deprecated' header. Additionally there is a 'link' header which notifies user where to look current endpoint according to [RFC 5988] Change-Id: Ib652015a1a0fbc4a1a14c0d9bbb9752da4669e6c
This commit is contained in:
parent
73a1db9a33
commit
08e91a5807
|
@ -19,6 +19,10 @@ from monasca_log_api.api import headers
|
|||
from monasca_log_api.api import logs_api
|
||||
from monasca_log_api.reference.v2.common import log_publisher
|
||||
from monasca_log_api.reference.v2.common import service
|
||||
from monasca_log_api import uri_map
|
||||
|
||||
_DEPRECATED_INFO = ('%s has been deprecated. Please use %s.'
|
||||
% (uri_map.V2_LOGS_URI, uri_map.V3_LOGS_URI))
|
||||
|
||||
|
||||
# TODO(idea) perhaps add it as pipeline call right before API, seems generic
|
||||
|
@ -45,6 +49,7 @@ class Logs(logs_api.LogsApi):
|
|||
super(Logs, self).__init__()
|
||||
|
||||
@falcon.before(_before_logs_post)
|
||||
@falcon.deprecated(_DEPRECATED_INFO)
|
||||
def on_post(self, req, res):
|
||||
service.Validations.validate_payload_size(req)
|
||||
service.Validations.validate_content_type(req)
|
||||
|
@ -61,6 +66,13 @@ class Logs(logs_api.LogsApi):
|
|||
self._kafka_publisher.send_message(envelope)
|
||||
|
||||
res.status = falcon.HTTP_204
|
||||
res.add_link(
|
||||
target=str(_get_v3_link(req)),
|
||||
rel='current', # [RFC5005]
|
||||
title='V3 Logs',
|
||||
type_hint='application/json'
|
||||
)
|
||||
res.append_header('DEPRECATED', 'true')
|
||||
|
||||
def get_envelope(self, log, tenant_id):
|
||||
return self._log_creator.new_log_envelope(
|
||||
|
@ -75,3 +87,9 @@ class Logs(logs_api.LogsApi):
|
|||
payload=request.stream,
|
||||
content_type=request.content_type
|
||||
)
|
||||
|
||||
|
||||
def _get_v3_link(req):
|
||||
self_uri = req.uri.decode('UTF-8')
|
||||
base_uri = self_uri.replace(req.relative_uri, '')
|
||||
return '%s%s' % (base_uri, uri_map.V3_LOGS_URI)
|
||||
|
|
|
@ -22,6 +22,8 @@ from oslo_log import log
|
|||
import paste.deploy
|
||||
import simport
|
||||
|
||||
from monasca_log_api import uri_map
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
@ -71,15 +73,15 @@ def launch(conf, config_file='/etc/monasca/log-api-config.conf'):
|
|||
|
||||
def load_healthcheck_resource(app):
|
||||
healthchecks = simport.load(CONF.dispatcher.healthchecks)()
|
||||
app.add_route('/healthcheck', healthchecks)
|
||||
app.add_route(uri_map.HEALTHCHECK_URI, healthchecks)
|
||||
|
||||
|
||||
def load_logs_resource(app):
|
||||
logs = simport.load(CONF.dispatcher.logs)()
|
||||
app.add_route('/v2.0/log/single', logs)
|
||||
app.add_route(uri_map.V2_LOGS_URI, logs)
|
||||
|
||||
logs_v3 = simport.load(CONF.dispatcher.logs_v3)()
|
||||
app.add_route('/v3.0/logs', logs_v3)
|
||||
app.add_route(uri_map.V3_LOGS_URI, logs_v3)
|
||||
|
||||
|
||||
def load_versions_resource(app):
|
||||
|
|
|
@ -41,6 +41,25 @@ class TestLogs(testing.TestBase):
|
|||
self.logs_resource
|
||||
)
|
||||
|
||||
def test_should_contain_deprecated_details_in_successful_response(self):
|
||||
self.logs_resource._log_creator = mock.Mock()
|
||||
self.logs_resource._kafka_publisher = mock.Mock()
|
||||
|
||||
self.simulate_request(
|
||||
'/log/single',
|
||||
method='POST',
|
||||
headers={
|
||||
headers.X_ROLES.name: 'some_role',
|
||||
headers.X_DIMENSIONS.name: 'a:1',
|
||||
'Content-Type': 'application/json',
|
||||
'Content-Length': '0'
|
||||
}
|
||||
)
|
||||
|
||||
self.assertEqual(falcon.HTTP_204, self.srmock.status)
|
||||
self.assertIn('deprecated', self.srmock.headers_dict)
|
||||
self.assertIn('link', self.srmock.headers_dict)
|
||||
|
||||
def test_should_fail_not_delegate_ok_cross_tenant_id(self):
|
||||
self.simulate_request(
|
||||
'/log/single',
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
V2_LOGS_URI = '/v2.0/log/single'
|
||||
V3_LOGS_URI = '/v3.0/logs'
|
||||
HEALTHCHECK_URI = '/healthcheck'
|
Loading…
Reference in New Issue