)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"76e646da5a5353b3545437bba1dcdb4941f47d04","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added reload_config_files function to reload all options  from config files"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This is part of blueprint of service-restart"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia4d96be170d1ddfaa70b8e467b9a19ed45dc4060"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPX%2F%2F1AM%3D","line":11,"updated":"2013-06-08 08:39:13.000000000","message":"syntax error. Should be \u0027part of blueprint service-restart\u0027","commit_id":"72757b304a4487bae71236ff5b8aaf6adf2fe352"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added reload_config_files function to reload all options  from config files"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This is part of blueprint service-restart"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia4d96be170d1ddfaa70b8e467b9a19ed45dc4060"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPX%2F%2Fxu0%3D","line":11,"updated":"2013-06-10 21:38:45.000000000","message":"Change this to blueprint cfg-reload-config-files","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"1de2af714e4bea446bd03d931ad006bed539fc6e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Fengqian.Gao \u003cfengqian.gao@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-06-21 09:18:38 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added reload_config_files function."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added reload_config_files function to reload all options  from configure files"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPn%2F%2Fyyw%3D","line":7,"updated":"2013-06-21 05:09:53.000000000","message":"There should be no period on the end\n\nSee https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_commit_message_structure","commit_id":"e157fc2dd108e8b82b38cbfacefd7062abced4e7"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"1de2af714e4bea446bd03d931ad006bed539fc6e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added reload_config_files function."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added reload_config_files function to reload all options  from configure files"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"blueprint cfg-reload-config-files"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPn%2F%2Fyy4%3D","line":9,"updated":"2013-06-21 05:09:53.000000000","message":"Two spaces between \"options\" and \"from\".","commit_id":"e157fc2dd108e8b82b38cbfacefd7062abced4e7"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"1de2af714e4bea446bd03d931ad006bed539fc6e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added reload_config_files function to reload all options  from configure files"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"blueprint cfg-reload-config-files"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia4d96be170d1ddfaa70b8e467b9a19ed45dc4060"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPn%2F%2Fyys%3D","line":11,"updated":"2013-06-21 05:09:53.000000000","message":"Best if written as:\n Implements blueprint cfg-reload-config-files\n\nor\n\n Implements bp cfg-reload-config-files","commit_id":"e157fc2dd108e8b82b38cbfacefd7062abced4e7"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"047a02db29527d6a2b20cf45630996ce57f570f9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add reload_config_files function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add reload_config_files function for ConfigOpts instance to reload all configuration files."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint cfg-reload-config-files"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAPn%2F%2FySs%3D","line":9,"updated":"2013-06-21 10:06:24.000000000","message":"I should have said this before now, but this line is too long. Wrap commit messages at 72 characters. See https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"8389ce3715c7cd5f435518308aaa74b0941590ad"}],"oslo/config/cfg.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a46c1c791a3a41f54687f4e7fe20df8b98bb36f7","unresolved":false,"context_lines":[{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":"        return self._parse_config_files()"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"    def _parse_config_files(self):"},{"line_number":2054,"context_line":""},{"line_number":2055,"context_line":"        namespace \u003d _Namespace(self)"},{"line_number":2056,"context_line":"        for arg in self._args:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F1Ak%3D","line":2053,"updated":"2013-06-08 08:38:04.000000000","message":"Please add some comment for this function.","commit_id":"72757b304a4487bae71236ff5b8aaf6adf2fe352"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a46c1c791a3a41f54687f4e7fe20df8b98bb36f7","unresolved":false,"context_lines":[{"line_number":2065,"context_line":"    def reload_config_files(self):"},{"line_number":2066,"context_line":"        self._namespace \u003d self._parse_config_files()"},{"line_number":2067,"context_line":"        if self._namespace.files_not_found:"},{"line_number":2068,"context_line":"            raise ConfigFilesNotFoundError(self._namespace.files_not_found)"},{"line_number":2069,"context_line":"        self._check_required_opts()"},{"line_number":2070,"context_line":""},{"line_number":2071,"context_line":"    class GroupAttr(collections.Mapping):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F1Ag%3D","line":2068,"updated":"2013-06-08 08:38:04.000000000","message":"this check of ConfigFilesNotFound is duplicating with line 1587 as in the __call__, how about move this check into _parse_config_files() to remove the duplication?","commit_id":"72757b304a4487bae71236ff5b8aaf6adf2fe352"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":2051,"context_line":"    def _parse_config_files(self):"},{"line_number":2052,"context_line":"        \"\"\"Parse configure files options."},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"        :raises: ConfigFilesNotFoundError"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":"        \"\"\""},{"line_number":2057,"context_line":"        self._namespace \u003d _Namespace(self)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2Fym8%3D","line":2054,"updated":"2013-06-10 21:38:45.000000000","message":"I think any of these can be raised from here:\n\n  :raises: SystemExit, ConfigFilesNotFoundError, ConfigFileParseError, RequiredOptError, DuplicateOptError\n\nPlease confirm","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":7642,"name":"Fengqian Gao","email":"fengqian.gao@intel.com","username":"Fengqian"},"change_message_id":"977f0dad3f1be21da7f5577b3e5f2a9ed9e7f421","unresolved":false,"context_lines":[{"line_number":2051,"context_line":"    def _parse_config_files(self):"},{"line_number":2052,"context_line":"        \"\"\"Parse configure files options."},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"        :raises: ConfigFilesNotFoundError"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":"        \"\"\""},{"line_number":2057,"context_line":"        self._namespace \u003d _Namespace(self)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FrCI%3D","line":2054,"in_reply_to":"AAAAPX%2F%2Fym8%3D","updated":"2013-06-13 02:26:43.000000000","message":"confirm","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":2052,"context_line":"        \"\"\"Parse configure files options."},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"        :raises: ConfigFilesNotFoundError"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":"        \"\"\""},{"line_number":2057,"context_line":"        self._namespace \u003d _Namespace(self)"},{"line_number":2058,"context_line":"        for arg in self._args:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2Fym4%3D","line":2055,"updated":"2013-06-10 21:38:45.000000000","message":"nitpick - this blank line isn\u0027t needed","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":7642,"name":"Fengqian Gao","email":"fengqian.gao@intel.com","username":"Fengqian"},"change_message_id":"977f0dad3f1be21da7f5577b3e5f2a9ed9e7f421","unresolved":false,"context_lines":[{"line_number":2052,"context_line":"        \"\"\"Parse configure files options."},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"        :raises: ConfigFilesNotFoundError"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":"        \"\"\""},{"line_number":2057,"context_line":"        self._namespace \u003d _Namespace(self)"},{"line_number":2058,"context_line":"        for arg in self._args:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FrCA%3D","line":2055,"in_reply_to":"AAAAPX%2F%2Fym4%3D","updated":"2013-06-13 02:26:43.000000000","message":"will remove blank line here","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":2066,"context_line":"            raise ConfigFilesNotFoundError(self._namespace.files_not_found)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"    @__clear_cache"},{"line_number":2069,"context_line":"    def reload_config_files(self):"},{"line_number":2070,"context_line":"        self._parse_config_files()"},{"line_number":2071,"context_line":"        self._check_required_opts()"},{"line_number":2072,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2Fxtg%3D","line":2069,"updated":"2013-06-10 21:38:45.000000000","message":"Any reason not to call this reload()","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":7642,"name":"Fengqian Gao","email":"fengqian.gao@intel.com","username":"Fengqian"},"change_message_id":"977f0dad3f1be21da7f5577b3e5f2a9ed9e7f421","unresolved":false,"context_lines":[{"line_number":2066,"context_line":"            raise ConfigFilesNotFoundError(self._namespace.files_not_found)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"    @__clear_cache"},{"line_number":2069,"context_line":"    def reload_config_files(self):"},{"line_number":2070,"context_line":"        self._parse_config_files()"},{"line_number":2071,"context_line":"        self._check_required_opts()"},{"line_number":2072,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FrDI%3D","line":2069,"in_reply_to":"AAAAPX%2F%2Fxtg%3D","updated":"2013-06-13 02:26:43.000000000","message":"cfg.CONF(cfg.CONF.args) can also work. But i think maybe we are saying two different user cases. For mine, i assume that all args passed into __call__ function are not modified including default configure file name. Only the content of configure file is modified here.","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"7b764c7604315b4f6e92be44595834f9d114b1ed","unresolved":false,"context_lines":[{"line_number":2071,"context_line":"    def reload_config_files(self):"},{"line_number":2072,"context_line":"        namespace_original \u003d self._namespace"},{"line_number":2073,"context_line":"        try:"},{"line_number":2074,"context_line":"            self._namespace \u003d self._parse_config_files()"},{"line_number":2075,"context_line":"            if self._namespace.files_not_found:"},{"line_number":2076,"context_line":"                raise ConfigFilesNotFoundError(self._namespace.files_not_found)"},{"line_number":2077,"context_line":"            self._check_required_opts()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F770%3D","line":2074,"updated":"2013-06-17 21:27:17.000000000","message":"No, this needs to be atomic\n\nThink about another thread accessing config option values while reload_config_files() is being run in another thread","commit_id":"9b5b5f2939c7a7f40addb8117221406abdf7a40a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"7b764c7604315b4f6e92be44595834f9d114b1ed","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"            self._namespace \u003d namespace_original"},{"line_number":2082,"context_line":"        except Error:"},{"line_number":2083,"context_line":"            self.__cache.clear()"},{"line_number":2084,"context_line":"            self._namespace \u003d namespace_original"},{"line_number":2085,"context_line":""},{"line_number":2086,"context_line":"    class GroupAttr(collections.Mapping):"},{"line_number":2087,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F77U%3D","line":2084,"updated":"2013-06-17 21:27:17.000000000","message":"i.e. I\u0027d set things up so you have:\n\n  namespace \u003d _Namespace(self)\n  try:\n      ...\n  except ...\n      ...\n  else:\n      self._namespace \u003d namespace","commit_id":"9b5b5f2939c7a7f40addb8117221406abdf7a40a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"bbf01f9ba4b2222fc15d81cc8aa4c85e5f6959dd","unresolved":false,"context_lines":[{"line_number":1920,"context_line":"        except KeyError:"},{"line_number":1921,"context_line":"            value \u003d self._substitute(self._do_get(name, group, namespace))"},{"line_number":1922,"context_line":"            self.__cache[key] \u003d value"},{"line_number":1923,"context_line":"            return value"},{"line_number":1924,"context_line":""},{"line_number":1925,"context_line":"    def _do_get(self, name, group\u003dNone, namespace\u003dNone):"},{"line_number":1926,"context_line":"        \"\"\"Look up an option value."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F61U%3D","line":1923,"updated":"2013-06-18 09:06:48.000000000","message":"Hmm, we shouldn\u0027t be interacting with the cache at all when namespace!\u003dNone","commit_id":"b213b6a97150ab6c0218cc03d6121f2fa6743428"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"bbf01f9ba4b2222fc15d81cc8aa4c85e5f6959dd","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"        return self._oparser.parse_args(self._args, namespace)"},{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":"    @__clear_cache"},{"line_number":2076,"context_line":"    def reload_config_files(self):"},{"line_number":2077,"context_line":"        namespace \u003d _Namespace(self)"},{"line_number":2078,"context_line":"        try:"},{"line_number":2079,"context_line":"            namespace \u003d self._parse_config_files()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F61Q%3D","line":2076,"updated":"2013-06-18 09:06:48.000000000","message":"Need a docstring","commit_id":"b213b6a97150ab6c0218cc03d6121f2fa6743428"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"bbf01f9ba4b2222fc15d81cc8aa4c85e5f6959dd","unresolved":false,"context_lines":[{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":"    @__clear_cache"},{"line_number":2076,"context_line":"    def reload_config_files(self):"},{"line_number":2077,"context_line":"        namespace \u003d _Namespace(self)"},{"line_number":2078,"context_line":"        try:"},{"line_number":2079,"context_line":"            namespace \u003d self._parse_config_files()"},{"line_number":2080,"context_line":"            if namespace.files_not_found:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F614%3D","line":2077,"updated":"2013-06-18 09:06:48.000000000","message":"This is unused","commit_id":"b213b6a97150ab6c0218cc03d6121f2fa6743428"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"bbf01f9ba4b2222fc15d81cc8aa4c85e5f6959dd","unresolved":false,"context_lines":[{"line_number":2084,"context_line":"        except SystemExit:"},{"line_number":2085,"context_line":"            pass"},{"line_number":2086,"context_line":"        except Error:"},{"line_number":2087,"context_line":"            pass"},{"line_number":2088,"context_line":"        else:"},{"line_number":2089,"context_line":"            self._namespace \u003d namespace"},{"line_number":2090,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F618%3D","line":2087,"updated":"2013-06-18 09:06:48.000000000","message":"I think we want to let them pass up to the caller ... how else would the caller know whether this function succeeded?","commit_id":"b213b6a97150ab6c0218cc03d6121f2fa6743428"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"bbf01f9ba4b2222fc15d81cc8aa4c85e5f6959dd","unresolved":false,"context_lines":[{"line_number":2088,"context_line":"        else:"},{"line_number":2089,"context_line":"            self._namespace \u003d namespace"},{"line_number":2090,"context_line":"        finally:"},{"line_number":2091,"context_line":"            self.__cache.clear()"},{"line_number":2092,"context_line":""},{"line_number":2093,"context_line":"    class GroupAttr(collections.Mapping):"},{"line_number":2094,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F62o%3D","line":2091,"updated":"2013-06-18 09:06:48.000000000","message":"Hmm, I think this points to a problem with @__clear_cache - it should really clear the cache *after* the function is called\n\nCould you submit a standalone patch to do that and make this patch depend on the new patch?","commit_id":"b213b6a97150ab6c0218cc03d6121f2fa6743428"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"6d581e1a525b257c492a90c9420972e1f3327a77","unresolved":false,"context_lines":[{"line_number":2097,"context_line":"        except Error as err:"},{"line_number":2098,"context_line":"            print(\"Caught Error while reloading configure files: %s\""},{"line_number":2099,"context_line":"                  % err.__str__())"},{"line_number":2100,"context_line":"            return False"},{"line_number":2101,"context_line":"        else:"},{"line_number":2102,"context_line":"            self._namespace \u003d namespace"},{"line_number":2103,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2F0y4%3D","line":2100,"updated":"2013-06-20 10:57:00.000000000","message":"This is new - why print and not LOG.warn() ? do\n\n  import logging\n\n  _LOG \u003d logging.getLogger(__name__)\n\n  _LOG.warn(\"Caught ....\")","commit_id":"117c3ddf86223ec5b809cf4868b50ec47ca98cd3"}],"tests/test_cfg.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a46c1c791a3a41f54687f4e7fe20df8b98bb36f7","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo\u0027))"},{"line_number":637,"context_line":"        self.assertEquals(self.conf.foo, \u0027baaar\u0027)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    def test_conf_file_reload(self):"},{"line_number":640,"context_line":"        self.conf.register_cli_opt(cfg.StrOpt(\u0027foo\u0027))"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        paths \u003d self.create_tempfiles([(\u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F1Ac%3D","line":639,"updated":"2013-06-08 08:38:04.000000000","message":"this test case tests the reload using the config files specified by --config-file param.\n\nHow about add a new test case test_conf_file_reload_default to test the configuration using default config files? e.g.\n   self.conf(args\u003d[], default_config_files\u003dpaths)","commit_id":"72757b304a4487bae71236ff5b8aaf6adf2fe352"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo\u0027))"},{"line_number":637,"context_line":"        self.assertEquals(self.conf.foo, \u0027baaar\u0027)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    def test_conf_files_reload(self):"},{"line_number":640,"context_line":"        self.conf.register_cli_opt(cfg.StrOpt(\u0027foo\u0027))"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        paths \u003d self.create_tempfiles([(\u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2Fxtk%3D","line":639,"updated":"2013-06-10 21:38:45.000000000","message":"Let\u0027s put these methods in a new test case - e.g. ReloadConfigFilesTestCase","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":7642,"name":"Fengqian Gao","email":"fengqian.gao@intel.com","username":"Fengqian"},"change_message_id":"977f0dad3f1be21da7f5577b3e5f2a9ed9e7f421","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo\u0027))"},{"line_number":637,"context_line":"        self.assertEquals(self.conf.foo, \u0027baaar\u0027)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    def test_conf_files_reload(self):"},{"line_number":640,"context_line":"        self.conf.register_cli_opt(cfg.StrOpt(\u0027foo\u0027))"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        paths \u003d self.create_tempfiles([(\u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FrAo%3D","line":639,"in_reply_to":"AAAAPX%2F%2Fxtk%3D","updated":"2013-06-13 02:26:43.000000000","message":"will update in new patch set","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":650,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo\u0027))"},{"line_number":651,"context_line":"        self.assertEquals(self.conf.foo, \u0027baar\u0027)"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        import shutil"},{"line_number":654,"context_line":"        shutil.copy(paths[1], paths[0])"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        self.conf.reload_config_files()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FxuM%3D","line":653,"updated":"2013-06-10 21:38:45.000000000","message":"Just import at the toplevel","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":7642,"name":"Fengqian Gao","email":"fengqian.gao@intel.com","username":"Fengqian"},"change_message_id":"977f0dad3f1be21da7f5577b3e5f2a9ed9e7f421","unresolved":false,"context_lines":[{"line_number":650,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo\u0027))"},{"line_number":651,"context_line":"        self.assertEquals(self.conf.foo, \u0027baar\u0027)"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        import shutil"},{"line_number":654,"context_line":"        shutil.copy(paths[1], paths[0])"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        self.conf.reload_config_files()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FrAg%3D","line":653,"in_reply_to":"AAAAPX%2F%2FxuM%3D","updated":"2013-06-13 02:26:43.000000000","message":"confirm","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8b1a9fb13b888a0720e979b6268b22341ca5c773","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                                               \u0027[DEFAULT]\\n\u0027"},{"line_number":676,"context_line":"                                               \u0027foo2 \u003d change_default2\\n\u0027)])"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        self.conf([], paths)"},{"line_number":679,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo1\u0027))"},{"line_number":680,"context_line":"        self.assertEquals(self.conf.foo1, \u0027default1\u0027)"},{"line_number":681,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo2\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2Fxtw%3D","line":678,"updated":"2013-06-10 21:38:45.000000000","message":"Please make this more explicit by doing:\n\n  default_config_files\u003dpaths \n\nI was very confused there for a while because I was looking at the ConfigOpts constructor:\n\n    def __call__(self,\n                 args\u003dNone,\n                 project\u003dNone,\n\nand thought you were effectively doing:\n\n  project\u003dpaths","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"},{"author":{"_account_id":7642,"name":"Fengqian Gao","email":"fengqian.gao@intel.com","username":"Fengqian"},"change_message_id":"977f0dad3f1be21da7f5577b3e5f2a9ed9e7f421","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                                               \u0027[DEFAULT]\\n\u0027"},{"line_number":676,"context_line":"                                               \u0027foo2 \u003d change_default2\\n\u0027)])"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        self.conf([], paths)"},{"line_number":679,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo1\u0027))"},{"line_number":680,"context_line":"        self.assertEquals(self.conf.foo1, \u0027default1\u0027)"},{"line_number":681,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027foo2\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2FrAY%3D","line":678,"in_reply_to":"AAAAPX%2F%2Fxtw%3D","updated":"2013-06-13 02:26:43.000000000","message":"will update in new patch set","commit_id":"f7b772bd85356c69dafd9db62e04e38ee814206d"}]}
