)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"7b2b6731ba6b78003f8c966bf9f7d35975156d81","unresolved":false,"context_lines":[{"line_number":16,"context_line":"tempest core files."},{"line_number":17,"context_line":"Much less merge conflicts and separation of base classes and"},{"line_number":18,"context_line":"child classes."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially-implements: bp make-tempest-pluggable"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Iae5b100b2fc7021f6876fcaf610991c47811a49a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUX%2F%2F6Ts%3D","line":19,"updated":"2014-02-10 00:53:17.000000000","message":"I think you should describe the reason why about splitting only cli.py. IIUC, it\u0027s just an example for this pluggability.\nAnother option is just adding this pluugability and a document(README) without splitting cli.py if you don\u0027t want to split the all of current configs.","commit_id":"776c025cf9c6f1e6591bc0c833b02a7b6b07c7a3"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6d8e4826f1297850ddf235ade68667e76f7d8358","unresolved":false,"context_lines":[{"line_number":16,"context_line":"tempest core files."},{"line_number":17,"context_line":"Much less merge conflicts and separation of base classes and"},{"line_number":18,"context_line":"child classes."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially-implements: bp make-tempest-pluggable"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Iae5b100b2fc7021f6876fcaf610991c47811a49a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUX%2F%2F4Qs%3D","line":19,"in_reply_to":"AAAAUX%2F%2F4XY%3D","updated":"2014-02-10 08:02:18.000000000","message":"Initially, it was choosen because it was in separated module, not in original config module. And there was a need to show that pluggability works, and how exactly.\n\nNow, according to summarization in previous comment, cli group will be left as is and unittests will cover functionality of pluggability.","commit_id":"776c025cf9c6f1e6591bc0c833b02a7b6b07c7a3"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"20ac8c9bc2417ddb2a9d4bb6f3353bc67ad318a3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"tempest core files."},{"line_number":17,"context_line":"Much less merge conflicts and separation of base classes and"},{"line_number":18,"context_line":"child classes."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially-implements: bp make-tempest-pluggable"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Iae5b100b2fc7021f6876fcaf610991c47811a49a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUX%2F%2F4XY%3D","line":19,"in_reply_to":"AAAAUX%2F%2F4bE%3D","updated":"2014-02-10 07:39:11.000000000","message":"I\u0027m OK with that. But I think you should describe the reason why you select cli.py only in this commit log or the source code. Otherwise, we may understand this code in the future.","commit_id":"776c025cf9c6f1e6591bc0c833b02a7b6b07c7a3"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"c9b47c07203203a509b9dcfd0eb6e891a358d3d7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"tempest core files."},{"line_number":17,"context_line":"Much less merge conflicts and separation of base classes and"},{"line_number":18,"context_line":"child classes."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially-implements: bp make-tempest-pluggable"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Iae5b100b2fc7021f6876fcaf610991c47811a49a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUX%2F%2F4bE%3D","line":19,"in_reply_to":"AAAAUX%2F%2F6Ts%3D","updated":"2014-02-10 07:26:22.000000000","message":"Pluggability should be tested. If not splitting something that exists, then unittests should be added. \n\nSummarize: add pluggability itself, \"readme.rst\" and unittests to cover pluggability functionality\n\nSame thing to patch with \u0027clients\u0027 (https://review.openstack.org/#/c/69983/).\n\nAre you ok with it?","commit_id":"776c025cf9c6f1e6591bc0c833b02a7b6b07c7a3"}],"tempest/config/__init__.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b97ff8bcd6ee0251b00611b32d985bebba2ed4d8","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import sys"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from tempest.common.utils import module_utils"},{"line_number":25,"context_line":"from tempest.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F94Cg%3D","line":22,"updated":"2014-02-02 20:16:31.000000000","message":"Remove this import (see below).","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b97ff8bcd6ee0251b00611b32d985bebba2ed4d8","unresolved":false,"context_lines":[{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    DEFAULT_CONFIG_DIR \u003d os.path.join("},{"line_number":701,"context_line":"        os.path.abspath(os.path.dirname("},{"line_number":702,"context_line":"            os.path.dirname(sys.modules[\"tempest\"].__file__))), \"etc\")"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    DEFAULT_CONFIG_FILE \u003d \"tempest.conf\""},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F94CM%3D","line":702,"updated":"2014-02-02 20:16:31.000000000","message":"Hmmm... no, the above is not correct. Pathnames of files are not the same as __file__ attribute of a module. All the above code was doing is setting the default config directory to the source tree\u0027s sample etc/ directory. It does not need to be changed.","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"284f974aeb9bb460a832adfab4fbd78dc780957f","unresolved":false,"context_lines":[{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    DEFAULT_CONFIG_DIR \u003d os.path.join("},{"line_number":701,"context_line":"        os.path.abspath(os.path.dirname("},{"line_number":702,"context_line":"            os.path.dirname(sys.modules[\"tempest\"].__file__))), \"etc\")"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    DEFAULT_CONFIG_FILE \u003d \"tempest.conf\""},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F91KA%3D","line":702,"in_reply_to":"AAAAUH%2F93LI%3D","updated":"2014-02-03 15:18:00.000000000","message":"Ah, sorry, I missed the rename from tempest.config.py to tempest.config.__init__.py. In any case, I would just add another os.path.dirname() call instead of importing sys and using sys.modules...","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a09036f7c736b3e90b7bc7468660bdd24f2a25ac","unresolved":false,"context_lines":[{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    DEFAULT_CONFIG_DIR \u003d os.path.join("},{"line_number":701,"context_line":"        os.path.abspath(os.path.dirname("},{"line_number":702,"context_line":"            os.path.dirname(sys.modules[\"tempest\"].__file__))), \"etc\")"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    DEFAULT_CONFIG_FILE \u003d \"tempest.conf\""},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F93LI%3D","line":702,"in_reply_to":"AAAAUH%2F94CM%3D","updated":"2014-02-03 07:34:05.000000000","message":"With this patch, \"config\" module changes its catalog, it was in tempest, now it is in tempest.config (as __init__). So, if DEFAULT_CONFIG_DIR isn\u0027t changed, error will be raised.","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b97ff8bcd6ee0251b00611b32d985bebba2ed4d8","unresolved":false,"context_lines":[{"line_number":792,"context_line":"            self.compute_admin.password \u003d self.identity.admin_password"},{"line_number":793,"context_line":"            self.compute_admin.tenant_name \u003d self.identity.admin_tenant_name"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        module_utils.import_submodules(sys.modules[__name__])"},{"line_number":796,"context_line":"        for group_name, group_data in cfg.CONF.iteritems():"},{"line_number":797,"context_line":"            if not hasattr(self, group_name):"},{"line_number":798,"context_line":"                # Add externally imported groups"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F94Ck%3D","line":795,"updated":"2014-02-02 20:16:31.000000000","message":"You do not need this call above. The code from lines 796-800 do not depend on it. So, you can technically remove the dependency between this patch and https://review.openstack.org/#/c/62429/, which would allow this patch to move forward without the other one.","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2a5ff3f283519425982456a7b3fbc7601186631d","unresolved":false,"context_lines":[{"line_number":792,"context_line":"            self.compute_admin.password \u003d self.identity.admin_password"},{"line_number":793,"context_line":"            self.compute_admin.tenant_name \u003d self.identity.admin_tenant_name"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        module_utils.import_submodules(sys.modules[__name__])"},{"line_number":796,"context_line":"        for group_name, group_data in cfg.CONF.iteritems():"},{"line_number":797,"context_line":"            if not hasattr(self, group_name):"},{"line_number":798,"context_line":"                # Add externally imported groups"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F91D0%3D","line":795,"in_reply_to":"AAAAUH%2F91Jw%3D","updated":"2014-02-03 15:26:35.000000000","message":"File in this patch \"tempest/config/cli.py\" is an example.\nIf string of autoimport is removed, all cli tests will fail with error of nonexisting group \"cli\".","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"284f974aeb9bb460a832adfab4fbd78dc780957f","unresolved":false,"context_lines":[{"line_number":792,"context_line":"            self.compute_admin.password \u003d self.identity.admin_password"},{"line_number":793,"context_line":"            self.compute_admin.tenant_name \u003d self.identity.admin_tenant_name"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        module_utils.import_submodules(sys.modules[__name__])"},{"line_number":796,"context_line":"        for group_name, group_data in cfg.CONF.iteritems():"},{"line_number":797,"context_line":"            if not hasattr(self, group_name):"},{"line_number":798,"context_line":"                # Add externally imported groups"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F91Jw%3D","line":795,"in_reply_to":"AAAAUH%2F93Kk%3D","updated":"2014-02-03 15:18:00.000000000","message":"Could you please show an example of what you mean here? I am just not understanding what you are trying to accomplish here. Would you mind showing the source code that you are trying to make work?","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a09036f7c736b3e90b7bc7468660bdd24f2a25ac","unresolved":false,"context_lines":[{"line_number":792,"context_line":"            self.compute_admin.password \u003d self.identity.admin_password"},{"line_number":793,"context_line":"            self.compute_admin.tenant_name \u003d self.identity.admin_tenant_name"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        module_utils.import_submodules(sys.modules[__name__])"},{"line_number":796,"context_line":"        for group_name, group_data in cfg.CONF.iteritems():"},{"line_number":797,"context_line":"            if not hasattr(self, group_name):"},{"line_number":798,"context_line":"                # Add externally imported groups"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F93Kk%3D","line":795,"in_reply_to":"AAAAUH%2F94Ck%3D","updated":"2014-02-03 07:34:05.000000000","message":"module_utils.import_submodules is needed to call some external configs, if it isn\u0027t used, no new groups in olso config apear.\nSo, if we do not use it here, it should be called somewhere else, except config module. And before importing config proxy.","commit_id":"56773d99368d2e05029d1d5d2212a82366f34763"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a5405103b3858e737be1fe9230f123621598da62","unresolved":false,"context_lines":[{"line_number":791,"context_line":"            self.compute_admin.tenant_name \u003d self.identity.admin_tenant_name"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        module_utils.import_submodules(sys.modules[__name__])"},{"line_number":794,"context_line":"        for group_name, group_data in cfg.CONF.iteritems():"},{"line_number":795,"context_line":"            if not hasattr(self, group_name):"},{"line_number":796,"context_line":"                # Add externally imported groups"},{"line_number":797,"context_line":"                setattr(self, group_name, group_data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F9t7M%3D","line":794,"updated":"2014-02-04 18:07:51.000000000","message":"This is not only adding modules in the config folder, it is also adding anything returned by the iterator which is not already set as attribute here.\n\nThis happens to include the options from log.py e.g. logging_context_format_string, logging_debug_format_suffix etc which are not actual groups.","commit_id":"776c025cf9c6f1e6591bc0c833b02a7b6b07c7a3"}],"tempest/config/cli.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"7b2b6731ba6b78003f8c966bf9f7d35975156d81","unresolved":false,"context_lines":[{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2F6W0%3D","line":9,"updated":"2014-02-10 00:53:17.000000000","message":"This should have headding \"#\". very nit though..","commit_id":"776c025cf9c6f1e6591bc0c833b02a7b6b07c7a3"}]}
