Description of problem: ----------------------- Attempt to update required/optional resource's attribute fails: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>500 Internal Server Error</title> </head><body> <h1>Internal Server Error</h1> <p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p> <p>Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.</p> <p>More information about this error may be available in the server error log.</p> </body></html> Excerpt from http/gnocchi_wsgi_error.log: ----------------------------------------- [Mon Dec 12 12:13:00.446760 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] mod_wsgi (pid=167218): Exception occurred processing WSGI script '/var/www/cgi-bin/gnocchi/app'. [Mon Dec 12 12:13:00.446885 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] Traceback (most recent call last): [Mon Dec 12 12:13:00.446901 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/dec.py", line 130, in __call__ [Mon Dec 12 12:13:00.447056 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] resp = self.call_func(req, *args, **self.kwargs) [Mon Dec 12 12:13:00.447080 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/dec.py", line 195, in call_func [Mon Dec 12 12:13:00.447095 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return self.func(req, *args, **kwargs) [Mon Dec 12 12:13:00.447102 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/oslo_middleware/base.py", line 126, in __call__ [Mon Dec 12 12:13:00.447170 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] response = req.get_response(self.application) [Mon Dec 12 12:13:00.447180 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/request.py", line 1299, in send [Mon Dec 12 12:13:00.447549 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] application, catch_exc_info=False) [Mon Dec 12 12:13:00.447576 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/request.py", line 1263, in call_application [Mon Dec 12 12:13:00.447598 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] app_iter = application(self.environ, start_response) [Mon Dec 12 12:13:00.447605 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/paste/urlmap.py", line 203, in __call__ [Mon Dec 12 12:13:00.447676 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return app(environ, start_response) [Mon Dec 12 12:13:00.447685 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/dec.py", line 130, in __call__ [Mon Dec 12 12:13:00.447697 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] resp = self.call_func(req, *args, **self.kwargs) [Mon Dec 12 12:13:00.447702 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/dec.py", line 195, in call_func [Mon Dec 12 12:13:00.447711 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return self.func(req, *args, **kwargs) [Mon Dec 12 12:13:00.447728 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/oslo_middleware/base.py", line 126, in __call__ [Mon Dec 12 12:13:00.447737 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] response = req.get_response(self.application) [Mon Dec 12 12:13:00.447742 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/request.py", line 1299, in send [Mon Dec 12 12:13:00.447750 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] application, catch_exc_info=False) [Mon Dec 12 12:13:00.447755 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/request.py", line 1263, in call_application [Mon Dec 12 12:13:00.447775 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] app_iter = application(self.environ, start_response) [Mon Dec 12 12:13:00.447780 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/dec.py", line 130, in __call__ [Mon Dec 12 12:13:00.447787 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] resp = self.call_func(req, *args, **self.kwargs) [Mon Dec 12 12:13:00.447799 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/dec.py", line 195, in call_func [Mon Dec 12 12:13:00.447819 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return self.func(req, *args, **kwargs) [Mon Dec 12 12:13:00.447825 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/keystonemiddleware/auth_token/__init__.py", line 323, in __call__ [Mon Dec 12 12:13:00.448029 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] response = req.get_response(self._app) [Mon Dec 12 12:13:00.448045 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/request.py", line 1299, in send [Mon Dec 12 12:13:00.448060 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] application, catch_exc_info=False) [Mon Dec 12 12:13:00.448067 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/request.py", line 1263, in call_application [Mon Dec 12 12:13:00.448075 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] app_iter = application(self.environ, start_response) [Mon Dec 12 12:13:00.448080 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/webob/exc.py", line 1162, in __call__ [Mon Dec 12 12:13:00.448328 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return self.application(environ, start_response) [Mon Dec 12 12:13:00.448342 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/gnocchi/rest/app.py", line 68, in __call__ [Mon Dec 12 12:13:00.448411 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return self.app(environ, start_response) [Mon Dec 12 12:13:00.448419 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pecan/middleware/recursive.py", line 56, in __call__ [Mon Dec 12 12:13:00.448498 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return self.application(environ, start_response) [Mon Dec 12 12:13:00.448508 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pecan/core.py", line 835, in __call__ [Mon Dec 12 12:13:00.448758 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return super(Pecan, self).__call__(environ, start_response) [Mon Dec 12 12:13:00.448769 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pecan/core.py", line 678, in __call__ [Mon Dec 12 12:13:00.448784 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] self.invoke_controller(controller, args, kwargs, state) [Mon Dec 12 12:13:00.448790 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pecan/core.py", line 569, in invoke_controller [Mon Dec 12 12:13:00.448812 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] result = controller(*args, **kwargs) [Mon Dec 12 12:13:00.448820 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/gnocchi/rest/__init__.py", line 963, in patch [Mon Dec 12 12:13:00.449185 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] **body) [Mon Dec 12 12:13:00.449224 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 151, in wrapper [Mon Dec 12 12:13:00.449327 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] ectxt.value = e.inner_exc [Mon Dec 12 12:13:00.449338 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ [Mon Dec 12 12:13:00.449458 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] self.force_reraise() [Mon Dec 12 12:13:00.449474 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise [Mon Dec 12 12:13:00.449488 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] six.reraise(self.type_, self.value, self.tb) [Mon Dec 12 12:13:00.449511 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 139, in wrapper [Mon Dec 12 12:13:00.449532 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return f(*args, **kwargs) [Mon Dec 12 12:13:00.449538 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/gnocchi/indexer/sqlalchemy.py", line 803, in update_resource [Mon Dec 12 12:13:00.449803 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] session.flush() [Mon Dec 12 12:13:00.449814 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/session.py", line 2027, in flush [Mon Dec 12 12:13:00.450478 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] self._flush(objects) [Mon Dec 12 12:13:00.450493 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/session.py", line 2145, in _flush [Mon Dec 12 12:13:00.450509 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] transaction.rollback(_capture_exception=True) [Mon Dec 12 12:13:00.450516 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__ [Mon Dec 12 12:13:00.450784 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] compat.reraise(exc_type, exc_value, exc_tb) [Mon Dec 12 12:13:00.450795 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/session.py", line 2109, in _flush [Mon Dec 12 12:13:00.450818 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] flush_context.execute() [Mon Dec 12 12:13:00.450825 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute [Mon Dec 12 12:13:00.451012 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] rec.execute(self) [Mon Dec 12 12:13:00.451024 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute [Mon Dec 12 12:13:00.451039 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] uow [Mon Dec 12 12:13:00.451045 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 174, in save_obj [Mon Dec 12 12:13:00.451389 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] mapper, table, insert) [Mon Dec 12 12:13:00.451404 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 767, in _emit_insert_statements [Mon Dec 12 12:13:00.451420 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] execute(statement, multiparams) [Mon Dec 12 12:13:00.451427 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 914, in execute [Mon Dec 12 12:13:00.451438 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return meth(self, multiparams, params) [Mon Dec 12 12:13:00.451455 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection [Mon Dec 12 12:13:00.452218 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] return connection._execute_clauseelement(self, multiparams, params) [Mon Dec 12 12:13:00.452239 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement [Mon Dec 12 12:13:00.452255 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] compiled_sql, distilled_params [Mon Dec 12 12:13:00.452262 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context [Mon Dec 12 12:13:00.452271 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] context) [Mon Dec 12 12:13:00.452277 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception [Mon Dec 12 12:13:00.452288 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] util.raise_from_cause(newraise, exc_info) [Mon Dec 12 12:13:00.452295 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/util/compat.py", line 200, in raise_from_cause [Mon Dec 12 12:13:00.452391 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] reraise(type(exception), exception, tb=exc_tb) [Mon Dec 12 12:13:00.452401 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context [Mon Dec 12 12:13:00.452413 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] context) [Mon Dec 12 12:13:00.452418 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", line 450, in do_execute [Mon Dec 12 12:13:00.452428 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] cursor.execute(statement, parameters) [Mon Dec 12 12:13:00.452434 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line 146, in execute [Mon Dec 12 12:13:00.452443 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] result = self._query(query) [Mon Dec 12 12:13:00.452449 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line 296, in _query [Mon Dec 12 12:13:00.452456 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] conn.query(q) [Mon Dec 12 12:13:00.452462 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 781, in query [Mon Dec 12 12:13:00.452470 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] self._affected_rows = self._read_query_result(unbuffered=unbuffered) [Mon Dec 12 12:13:00.452476 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 942, in _read_query_result [Mon Dec 12 12:13:00.452484 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] result.read() [Mon Dec 12 12:13:00.452489 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 1138, in read [Mon Dec 12 12:13:00.452496 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] first_packet = self.connection._read_packet() [Mon Dec 12 12:13:00.452502 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 906, in _read_packet [Mon Dec 12 12:13:00.452509 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] packet.check_error() [Mon Dec 12 12:13:00.452514 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 367, in check_error [Mon Dec 12 12:13:00.452521 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] err.raise_mysql_exception(self._data) [Mon Dec 12 12:13:00.452536 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/err.py", line 120, in raise_mysql_exception [Mon Dec 12 12:13:00.452546 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] _check_mysql_exception(errinfo) [Mon Dec 12 12:13:00.452551 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] File "/usr/lib/python2.7/site-packages/pymysql/err.py", line 115, in _check_mysql_exception [Mon Dec 12 12:13:00.452559 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] raise InternalError(errno, errorvalue) [Mon Dec 12 12:13:00.452595 2016] [:error] [pid 167218] [remote fd00:fd00:fd00:2000::18:112] DBError: (pymysql.err.InternalError) (1054, u"Unknown column 'gbr-age' in 'field list'") [SQL: u'INSERT INTO rt_c9d61d0e30464e11ba3937e81dc91ba7_history (`gbr-enabled`, `gbr-uuid`, `gbr-age`, `gbr-description`, revision) VALUES (%s, %s, %s, %s, %s)'] [parameters: (1, '\\xa7\\x91j6r)G\\xd5\\xbd\\xd7\\xf17\\x85\\x0cmR', None, None, 14)] [Mon Dec 12 12:15:48.259023 2016] [:error] [pid 167218] /usr/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.py:120: SAWarning: This declarative base already contains a class with the same class name and module name as gnocchi.indexer.sqlalchemy.rt_c02045e77f1d4fe7984d448a423a4304_resource, and will be replaced in the string-lookup table. [Mon Dec 12 12:15:48.259061 2016] [:error] [pid 167218] item.__name__ [Mon Dec 12 12:15:48.264909 2016] [:error] [pid 167218] /usr/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.py:120: SAWarning: This declarative base already contains a class with the same class name and module name as gnocchi.indexer.sqlalchemy.rt_c02045e77f1d4fe7984d448a423a4304_history, and will be replaced in the string-lookup table. [Mon Dec 12 12:15:48.264927 2016] [:error] [pid 167218] item.__name__ Version-Release number of selected component (if applicable): ------------------------------------------------------------- openstack-gnocchi-common-3.0.2-1.el7ost.noarch openstack-gnocchi-statsd-3.0.2-1.el7ost.noarch python-gnocchi-3.0.2-1.el7ost.noarch openstack-gnocchi-api-3.0.2-1.el7ost.noarch python-gnocchiclient-2.6.0-1.el7ost.noarch openstack-gnocchi-carbonara-3.0.2-1.el7ost.noarch openstack-gnocchi-indexer-sqlalchemy-3.0.2-1.el7ost.noarch openstack-gnocchi-metricd-3.0.2-1.el7ost.noarch puppet-gnocchi-9.4.1-1.el7ost.noarch Steps to Reproduce: ------------------- 1. Create new resource type 2. Create resource of new type 3. Try to updated optional/required attributes
proposed to stable/3.0 patches branch upstream
The resource type is created, the resource is created and updated.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2017:1587