)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b75ede4a265bd6380b8d22470934d91bc3cac035","unresolved":false,"context_lines":[{"line_number":11,"context_line":"via an environment variable, rather than the current hard-coded"},{"line_number":12,"context_line":"value."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Fixes-bug: #1596734"},{"line_number":15,"context_line":"Change-Id: I2bc77c64b764f6c22574a30b0e5af4ca6feff29f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_cd6ea900","line":14,"updated":"2016-07-05 13:06:55.000000000","message":"Closes-Bug:","commit_id":"8c811afcab451cd2bced3776dac90228ef7fb565"}],"ironicclient/common/filecache.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6f08001065fc3b0eb5098d08274a8a25b6a31032","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            os.makedirs(CACHE_DIR)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        # Use the cache expiry if specified in an env var"},{"line_number":42,"context_line":"        expiry_time \u003d os.environ.get(\u0027PYTHON_IRONICCLIENT_CACHE_EXPIRY\u0027)"},{"line_number":43,"context_line":"        if not expiry_time:"},{"line_number":44,"context_line":"            expiry_time \u003d DEFAULT_EXPIRY"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_acdbc320","line":42,"updated":"2016-06-27 12:03:52.000000000","message":"1. we already have IRONICCLIENT_DEBUG, so I think for consistency it should be IRONICCLIENT_CACHE_EXPIRY (or even EXPIRATION_TIMEOUT for clarity)\n\n2. I think we should explicitly convert this to int, wdyt?\n\n3. finally a nit:\n\n expiry_time \u003d os.environ.get(\u0027IRONICCLIENT_CACHE_EXPIRY\u0027, DEFAULT_EXPIRY)","commit_id":"eac8ffe892b0ff13af3a739c502ac946fd14b912"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"9531d3f1c85f866ffc49fe7528f5f7d035ff8890","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            os.makedirs(CACHE_DIR)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        # Use the cache expiry if specified in an env var"},{"line_number":42,"context_line":"        expiry_time \u003d os.environ.get(\u0027PYTHON_IRONICCLIENT_CACHE_EXPIRY\u0027)"},{"line_number":43,"context_line":"        if not expiry_time:"},{"line_number":44,"context_line":"            expiry_time \u003d DEFAULT_EXPIRY"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_dfda0be9","line":42,"in_reply_to":"3aaa91ec_acdbc320","updated":"2016-06-27 23:28:25.000000000","message":"Done","commit_id":"eac8ffe892b0ff13af3a739c502ac946fd14b912"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8fb3ab4d9f5711696519e642da5ab7666a9d4b87","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import appdirs"},{"line_number":20,"context_line":"import dogpile.cache"},{"line_number":21,"context_line":"import logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ironicclient.common.i18n import _LW"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_7f7157e0","line":21,"updated":"2016-06-27 23:33:41.000000000","message":"This should go above \"import os\" as it is a built in library","commit_id":"6bf8cb7450e2552665e7cfdf993f13a12c656306"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"5710f32fc183c6e7aba19fc95c13158f7dc74a1a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import appdirs"},{"line_number":20,"context_line":"import dogpile.cache"},{"line_number":21,"context_line":"import logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ironicclient.common.i18n import _LW"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_8ae16301","line":21,"in_reply_to":"3aaa91ec_7f7157e0","updated":"2016-06-28 00:11:46.000000000","message":"Done","commit_id":"6bf8cb7450e2552665e7cfdf993f13a12c656306"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8fb3ab4d9f5711696519e642da5ab7666a9d4b87","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            expiry_time \u003d int(expiry_time)"},{"line_number":50,"context_line":"        except ValueError:"},{"line_number":51,"context_line":"            LOG.warning(_LW(\u0027%s should be an integer, using default instead\u0027),"},{"line_number":52,"context_line":"                        env_var)"},{"line_number":53,"context_line":"            expiry_time \u003d DEFAULT_EXPIRY"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_7f167756","line":51,"updated":"2016-06-27 23:33:41.000000000","message":"I don\u0027t think this message is that helpful.\n\n foo should be an integer, using default instead\n\nCould it say something about environment variable name?","commit_id":"6bf8cb7450e2552665e7cfdf993f13a12c656306"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"5710f32fc183c6e7aba19fc95c13158f7dc74a1a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            expiry_time \u003d int(expiry_time)"},{"line_number":50,"context_line":"        except ValueError:"},{"line_number":51,"context_line":"            LOG.warning(_LW(\u0027%s should be an integer, using default instead\u0027),"},{"line_number":52,"context_line":"                        env_var)"},{"line_number":53,"context_line":"            expiry_time \u003d DEFAULT_EXPIRY"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_caca4b6e","line":51,"in_reply_to":"3aaa91ec_7f167756","updated":"2016-06-28 00:11:46.000000000","message":"Done","commit_id":"6bf8cb7450e2552665e7cfdf993f13a12c656306"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e14c958f76ad40dca96835906dc5fffb4e3e176b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            os.makedirs(CACHE_DIR)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Use the cache expiry if specified in an env var"},{"line_number":46,"context_line":"        env_var \u003d \u0027IRONICCLIENT_CACHE_EXPIRY\u0027"},{"line_number":47,"context_line":"        expiry_time \u003d os.environ.get(env_var, DEFAULT_EXPIRY)"},{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            expiry_time \u003d int(expiry_time)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_d362d115","line":46,"updated":"2016-06-28 18:45:46.000000000","message":"I kind of think this should be a global value, like DEFAULT_EXPIRY.  What do you think?","commit_id":"dc68308f727c452edfeee830aec70f82e8e0079f"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"18368ea550e005696bb74276c62abf13aa814592","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            os.makedirs(CACHE_DIR)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Use the cache expiry if specified in an env var"},{"line_number":46,"context_line":"        env_var \u003d \u0027IRONICCLIENT_CACHE_EXPIRY\u0027"},{"line_number":47,"context_line":"        expiry_time \u003d os.environ.get(env_var, DEFAULT_EXPIRY)"},{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            expiry_time \u003d int(expiry_time)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_a5a52d05","line":46,"in_reply_to":"3aaa91ec_d362d115","updated":"2016-06-29 03:26:52.000000000","message":"Done","commit_id":"dc68308f727c452edfeee830aec70f82e8e0079f"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e14c958f76ad40dca96835906dc5fffb4e3e176b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            expiry_time \u003d int(expiry_time)"},{"line_number":50,"context_line":"        except ValueError:"},{"line_number":51,"context_line":"            LOG.warning(_LW(\u0027Environment variable %s should be an integer, \u0027"},{"line_number":52,"context_line":"                            \u0027using default instead\u0027),"},{"line_number":53,"context_line":"                        env_var)"},{"line_number":54,"context_line":"            expiry_time \u003d DEFAULT_EXPIRY"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b34c659e","line":52,"updated":"2016-06-28 18:45:46.000000000","message":"Maybe also display the value of the environment variable in the error message.","commit_id":"dc68308f727c452edfeee830aec70f82e8e0079f"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"18368ea550e005696bb74276c62abf13aa814592","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            expiry_time \u003d int(expiry_time)"},{"line_number":50,"context_line":"        except ValueError:"},{"line_number":51,"context_line":"            LOG.warning(_LW(\u0027Environment variable %s should be an integer, \u0027"},{"line_number":52,"context_line":"                            \u0027using default instead\u0027),"},{"line_number":53,"context_line":"                        env_var)"},{"line_number":54,"context_line":"            expiry_time \u003d DEFAULT_EXPIRY"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_05c4015d","line":52,"in_reply_to":"3aaa91ec_b34c659e","updated":"2016-06-29 03:26:52.000000000","message":"Done","commit_id":"dc68308f727c452edfeee830aec70f82e8e0079f"}],"ironicclient/tests/unit/common/test_filecache.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6f08001065fc3b0eb5098d08274a8a25b6a31032","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                   mock_exists, mock_get):"},{"line_number":59,"context_line":"        cache_val \u003d 5643"},{"line_number":60,"context_line":"        cache_expiry \u003d 78"},{"line_number":61,"context_line":"        mock_get.return_value \u003d cache_expiry"},{"line_number":62,"context_line":"        filecache.CACHE \u003d None"},{"line_number":63,"context_line":"        mock_exists.return_value \u003d False"},{"line_number":64,"context_line":"        cache_region \u003d mock.Mock(spec\u003ddogpile.cache.region.CacheRegion)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_4cc05f2b","line":61,"updated":"2016-06-27 12:03:52.000000000","message":"should be a string, as iirc environment only contains strings","commit_id":"eac8ffe892b0ff13af3a739c502ac946fd14b912"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"9531d3f1c85f866ffc49fe7528f5f7d035ff8890","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                   mock_exists, mock_get):"},{"line_number":59,"context_line":"        cache_val \u003d 5643"},{"line_number":60,"context_line":"        cache_expiry \u003d 78"},{"line_number":61,"context_line":"        mock_get.return_value \u003d cache_expiry"},{"line_number":62,"context_line":"        filecache.CACHE \u003d None"},{"line_number":63,"context_line":"        mock_exists.return_value \u003d False"},{"line_number":64,"context_line":"        cache_region \u003d mock.Mock(spec\u003ddogpile.cache.region.CacheRegion)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_1fe5b3a7","line":61,"in_reply_to":"3aaa91ec_4cc05f2b","updated":"2016-06-27 23:28:25.000000000","message":"Done","commit_id":"eac8ffe892b0ff13af3a739c502ac946fd14b912"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8fb3ab4d9f5711696519e642da5ab7666a9d4b87","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @mock.patch.object(os.environ, \u0027get\u0027, autospec\u003dTrue)"},{"line_number":74,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, autospec\u003dTrue)"},{"line_number":75,"context_line":"    @mock.patch.object(os, \u0027makedirs\u0027, autospec\u003dTrue)"},{"line_number":76,"context_line":"    @mock.patch.object(dogpile.cache, \u0027make_region\u0027, autospec\u003dTrue)"},{"line_number":77,"context_line":"    def test__get_cache_expiry_set_invalid(self, mock_makeregion,"},{"line_number":78,"context_line":"                                           mock_makedirs, mock_exists,"},{"line_number":79,"context_line":"                                           mock_get):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_6a2517ad","line":76,"updated":"2016-06-27 23:33:41.000000000","message":"What about mocking log.warn() and make sure it is called.","commit_id":"6bf8cb7450e2552665e7cfdf993f13a12c656306"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"5710f32fc183c6e7aba19fc95c13158f7dc74a1a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @mock.patch.object(os.environ, \u0027get\u0027, autospec\u003dTrue)"},{"line_number":74,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, autospec\u003dTrue)"},{"line_number":75,"context_line":"    @mock.patch.object(os, \u0027makedirs\u0027, autospec\u003dTrue)"},{"line_number":76,"context_line":"    @mock.patch.object(dogpile.cache, \u0027make_region\u0027, autospec\u003dTrue)"},{"line_number":77,"context_line":"    def test__get_cache_expiry_set_invalid(self, mock_makeregion,"},{"line_number":78,"context_line":"                                           mock_makedirs, mock_exists,"},{"line_number":79,"context_line":"                                           mock_get):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_6ad23736","line":76,"in_reply_to":"3aaa91ec_6a2517ad","updated":"2016-06-28 00:11:46.000000000","message":"Done","commit_id":"6bf8cb7450e2552665e7cfdf993f13a12c656306"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e14c958f76ad40dca96835906dc5fffb4e3e176b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            mock.ANY,"},{"line_number":93,"context_line":"            arguments\u003dmock.ANY,"},{"line_number":94,"context_line":"            expiration_time\u003dfilecache.DEFAULT_EXPIRY)"},{"line_number":95,"context_line":"        mock_log.assert_called_once_with(mock.ANY, mock.ANY)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, autospec\u003dTrue)"},{"line_number":98,"context_line":"    @mock.patch.object(os, \u0027makedirs\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_13e8d97b","line":95,"updated":"2016-06-28 18:45:46.000000000","message":"Can an assert be added to make sure that the correct environment variable name is being retrieved?\n\n mock_get.assert_called_once_with(\u0027IRONICCLIENT_CACHE_EXPIRY\u0027, ...)","commit_id":"dc68308f727c452edfeee830aec70f82e8e0079f"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"18368ea550e005696bb74276c62abf13aa814592","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            mock.ANY,"},{"line_number":93,"context_line":"            arguments\u003dmock.ANY,"},{"line_number":94,"context_line":"            expiration_time\u003dfilecache.DEFAULT_EXPIRY)"},{"line_number":95,"context_line":"        mock_log.assert_called_once_with(mock.ANY, mock.ANY)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, autospec\u003dTrue)"},{"line_number":98,"context_line":"    @mock.patch.object(os, \u0027makedirs\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_c56319dc","line":95,"in_reply_to":"3aaa91ec_13e8d97b","updated":"2016-06-29 03:26:52.000000000","message":"Done","commit_id":"dc68308f727c452edfeee830aec70f82e8e0079f"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"428867a7910bb45eb73fb8de5500372a4b5b7475","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    \u0027default\u0027: filecache.DEFAULT_EXPIRY,"},{"line_number":97,"context_line":"                    \u0027env_var\u0027: filecache.CACHE_EXPIRY_ENV_VAR}"},{"line_number":98,"context_line":"        mock_log.assert_called_once_with(mock.ANY, log_dict)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, autospec\u003dTrue)"},{"line_number":101,"context_line":"    @mock.patch.object(os, \u0027makedirs\u0027, autospec\u003dTrue)"},{"line_number":102,"context_line":"    def test__get_cache_dir_already_exists(self, mock_makedirs, mock_exists):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_43f281d3","line":99,"updated":"2016-06-29 04:07:21.000000000","message":"From patch set 6\n\nCan an assert be added to make sure that the correct environment variable name is being retrieved?\n\n mock_get.assert_called_once_with(\u0027IRONICCLIENT_CACHE_EXPIRY\u0027, ...)","commit_id":"76c48888f40bc1b6abaa972f342c04de3465c3ca"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"3f2c0871fdd799b370bf439a94e8ba98056b3780","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    \u0027default\u0027: filecache.DEFAULT_EXPIRY,"},{"line_number":97,"context_line":"                    \u0027env_var\u0027: filecache.CACHE_EXPIRY_ENV_VAR}"},{"line_number":98,"context_line":"        mock_log.assert_called_once_with(mock.ANY, log_dict)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, autospec\u003dTrue)"},{"line_number":101,"context_line":"    @mock.patch.object(os, \u0027makedirs\u0027, autospec\u003dTrue)"},{"line_number":102,"context_line":"    def test__get_cache_dir_already_exists(self, mock_makedirs, mock_exists):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_4359e159","line":99,"in_reply_to":"3aaa91ec_43f281d3","updated":"2016-06-29 04:29:57.000000000","message":"Please see line 97n - already done.\n\nNow that we\u0027ve moved to a dict for the log interpolation because of the extra params you\u0027ve requested, the environment variable is specified there (indeed lifted directly from the code-under-test rather than being hard-coded here where it would be fragile)","commit_id":"76c48888f40bc1b6abaa972f342c04de3465c3ca"}]}
