)]}'
{"rally/plugins/common/verification/testr.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a37c7a76c8770985cea4796dfe5cd0f1f087abe","unresolved":false,"context_lines":[{"line_number":32,"context_line":"TEST_NAME_RE \u003d re.compile(r\"^[a-zA-Z_.0-9]+(\\[[a-zA-Z-,\u003d0-9]*\\])?$\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@context.configure(\"testr_context\", order\u003d999)"},{"line_number":36,"context_line":"class TestrContext(context.VerifierContext):"},{"line_number":37,"context_line":"    \"\"\"Context to transform \u0027run_args\u0027 into CLI arguments for testr.\"\"\""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_ac005402","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":33},"updated":"2017-01-30 16:20:21.000000000","message":"It is redundant to use suffix \"context\" at the name of the context.","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"90ac910c4fe4edf507dcddc328309797d50ec738","unresolved":false,"context_lines":[{"line_number":32,"context_line":"TEST_NAME_RE \u003d re.compile(r\"^[a-zA-Z_.0-9]+(\\[[a-zA-Z-,\u003d0-9]*\\])?$\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@context.configure(\"testr_context\", order\u003d999)"},{"line_number":36,"context_line":"class TestrContext(context.VerifierContext):"},{"line_number":37,"context_line":"    \"\"\"Context to transform \u0027run_args\u0027 into CLI arguments for testr.\"\"\""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_f2b95216","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":33},"in_reply_to":"3a461143_ac005402","updated":"2017-01-30 21:44:57.000000000","message":"Done","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"}],"rally/plugins/openstack/verification/tempest/config.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a37c7a76c8770985cea4796dfe5cd0f1f087abe","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        self.conf \u003d configparser.ConfigParser()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        self.data_dir \u003d os.path.join(os.path.expanduser(\"~\"),"},{"line_number":99,"context_line":"                                     \".rally/verification/data/tempest\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def _get_service_url(self, service_name):"},{"line_number":102,"context_line":"        s_type \u003d self._get_service_type_by_service_name(service_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_6c32ecf3","line":99,"range":{"start_line":98,"start_character":8,"end_line":99,"end_character":72},"updated":"2017-01-30 16:20:21.000000000","message":"I can assume that it should be specific per verifier.","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"90ac910c4fe4edf507dcddc328309797d50ec738","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        self.conf \u003d configparser.ConfigParser()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        self.data_dir \u003d os.path.join(os.path.expanduser(\"~\"),"},{"line_number":99,"context_line":"                                     \".rally/verification/data/tempest\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def _get_service_url(self, service_name):"},{"line_number":102,"context_line":"        s_type \u003d self._get_service_type_by_service_name(service_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_bb0b2529","line":99,"range":{"start_line":98,"start_character":8,"end_line":99,"end_character":72},"in_reply_to":"3a461143_6c32ecf3","updated":"2017-01-30 21:44:57.000000000","message":"Done","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a37c7a76c8770985cea4796dfe5cd0f1f087abe","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    def create(self, conf_path, extra_options\u003dNone):"},{"line_number":231,"context_line":"        self.conf.read(os.path.join(os.path.dirname(__file__), \"config.ini\"))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        utils.create_dir(self.data_dir)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        for name, method in inspect.getmembers(self, inspect.ismethod):"},{"line_number":236,"context_line":"            if name.startswith(\"_configure_\"):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_8cb9d817","line":233,"range":{"start_line":233,"start_character":8,"end_line":233,"end_character":39},"updated":"2017-01-30 16:20:21.000000000","message":"please, use `if not os.path.exists`. It is much better and clear than handle IOError","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"90ac910c4fe4edf507dcddc328309797d50ec738","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    def create(self, conf_path, extra_options\u003dNone):"},{"line_number":231,"context_line":"        self.conf.read(os.path.join(os.path.dirname(__file__), \"config.ini\"))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        utils.create_dir(self.data_dir)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        for name, method in inspect.getmembers(self, inspect.ismethod):"},{"line_number":236,"context_line":"            if name.startswith(\"_configure_\"):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_12dfbe0d","line":233,"range":{"start_line":233,"start_character":8,"end_line":233,"end_character":39},"in_reply_to":"3a461143_8cb9d817","updated":"2017-01-30 21:44:57.000000000","message":"Done","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a37c7a76c8770985cea4796dfe5cd0f1f087abe","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        if extra_options:"},{"line_number":240,"context_line":"            utils.add_extra_options(extra_options, self.conf)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        utils.write_configfile(conf_path, self.conf)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        return utils.read_configfile(conf_path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_0ceb2879","line":244,"range":{"start_line":242,"start_character":8,"end_line":244,"end_character":47},"updated":"2017-01-30 16:20:21.000000000","message":"while we are here:\n\nI really dislike external read action from the disk. Let\u0027s use StringIO here.\n\n    raw_config \u003d StringIO()\n    # save note\n    raw_config.write(\"# Empty values of options will be replaced while creating required resources.\")\n    self.conf.write(raw_config)\n    \n    with open(conf_file, \"w\") as f:\n        f.write(raw_config.getvalue())\n\n    return raw_config.getvalue()","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"90ac910c4fe4edf507dcddc328309797d50ec738","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        if extra_options:"},{"line_number":240,"context_line":"            utils.add_extra_options(extra_options, self.conf)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        utils.write_configfile(conf_path, self.conf)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        return utils.read_configfile(conf_path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_c632d8f1","line":244,"range":{"start_line":242,"start_character":8,"end_line":244,"end_character":47},"in_reply_to":"3a461143_0ceb2879","updated":"2017-01-30 21:44:57.000000000","message":"Done","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2c8c70b47000ecb6ed5234de71699ce703bac6b0","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        with open(conf_path, \"w\") as configfile:"},{"line_number":214,"context_line":"            self.conf.write(configfile)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        raw_conf \u003d six.StringIO()"},{"line_number":217,"context_line":"        self.conf.write(raw_conf)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        return raw_conf.getvalue()"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a430d35_aaffa365","line":216,"range":{"start_line":216,"start_character":7,"end_line":216,"end_character":33},"updated":"2017-02-06 18:47:39.000000000","message":"It would be nice to write as the first line of config a comment like:\n\n  # Rally will try to fill empty values using discovered \n  # and created resources while launching Tempest","commit_id":"cef20d064a6680cfc3afc38b7ba19ee9d1d1a55c"}],"rally/plugins/openstack/verification/tempest/context.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a37c7a76c8770985cea4796dfe5cd0f1f087abe","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.conf \u003d configparser.ConfigParser()"},{"line_number":54,"context_line":"        self.conf_path \u003d self.verifier.manager.configfile"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.data_dir \u003d os.path.join(os.path.expanduser(\"~\"),"},{"line_number":57,"context_line":"                                     \".rally/verification/data/tempest\")"},{"line_number":58,"context_line":"        self.image_name \u003d IMAGE_NAME"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self._created_roles \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_ac5f74e3","line":57,"range":{"start_line":56,"start_character":8,"end_line":57,"end_character":72},"updated":"2017-01-30 16:20:21.000000000","message":"same here","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"90ac910c4fe4edf507dcddc328309797d50ec738","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.conf \u003d configparser.ConfigParser()"},{"line_number":54,"context_line":"        self.conf_path \u003d self.verifier.manager.configfile"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.data_dir \u003d os.path.join(os.path.expanduser(\"~\"),"},{"line_number":57,"context_line":"                                     \".rally/verification/data/tempest\")"},{"line_number":58,"context_line":"        self.image_name \u003d IMAGE_NAME"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self._created_roles \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_b21fca06","line":57,"range":{"start_line":56,"start_character":8,"end_line":57,"end_character":72},"in_reply_to":"3a461143_ac5f74e3","updated":"2017-01-30 21:44:57.000000000","message":"Done","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"}],"rally/verification/utils.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a37c7a76c8770985cea4796dfe5cd0f1f087abe","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        raise"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def write_configfile(con_path, conf_object):"},{"line_number":78,"context_line":"    with open(con_path, \"w\") as configfile:"},{"line_number":79,"context_line":"        conf_object.write(configfile)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def read_configfile(conf_path):"},{"line_number":83,"context_line":"    with open(conf_path) as f:"},{"line_number":84,"context_line":"        return f.read()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def add_extra_options(extra_options, conf_object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_0ce088f9","line":84,"range":{"start_line":77,"start_character":0,"end_line":84,"end_character":23},"updated":"2017-01-30 16:20:21.000000000","message":"not sure that we need separate methods for that stuff.","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"90ac910c4fe4edf507dcddc328309797d50ec738","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        raise"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def write_configfile(con_path, conf_object):"},{"line_number":78,"context_line":"    with open(con_path, \"w\") as configfile:"},{"line_number":79,"context_line":"        conf_object.write(configfile)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def read_configfile(conf_path):"},{"line_number":83,"context_line":"    with open(conf_path) as f:"},{"line_number":84,"context_line":"        return f.read()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def add_extra_options(extra_options, conf_object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_f2ecf2f4","line":84,"range":{"start_line":77,"start_character":0,"end_line":84,"end_character":23},"in_reply_to":"3a461143_0ce088f9","updated":"2017-01-30 21:44:57.000000000","message":"This method can be reused by other verifier plugins.","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"59f22d3fc3b21579d432e3faaaca7562566841e1","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        raise"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def write_configfile(con_path, conf_object):"},{"line_number":78,"context_line":"    with open(con_path, \"w\") as configfile:"},{"line_number":79,"context_line":"        conf_object.write(configfile)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def read_configfile(conf_path):"},{"line_number":83,"context_line":"    with open(conf_path) as f:"},{"line_number":84,"context_line":"        return f.read()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def add_extra_options(extra_options, conf_object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_ad53e4e0","line":84,"range":{"start_line":77,"start_character":0,"end_line":84,"end_character":23},"in_reply_to":"3a461143_f2ecf2f4","updated":"2017-01-30 22:02:10.000000000","message":"but it is simple \"with open\"... Such methods make code less user-friendly. Instead of common \"open\" context manager, the user will need to go deeper to the code to understand what happens in real. I totally against such methods. they don\u0027t simplify anything.","commit_id":"d359e97ed60f6f155fba08a9f9c4b32044a6dd9d"}]}
