)]}'
{"doc/source/plugins.rst":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"2d372b2d9a5e046971636f7e92bae51f3050da1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"da86d52c_e7515ad9","updated":"2015-02-03 12:55:29.000000000","message":"Could you please also edit this?\n\nhttps://github.com/stackforge/rally/blob/master/doc/source/concepts.rst","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"4ecb2484c1eca92f7a0597128492e0b0366385cd","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    LOG \u003d logging.getLogger(__name__)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @base.context(name\u003d\"create_flavor\", order\u003d1000)"},{"line_number":124,"context_line":"    class CreateFlavorContext(base.Context):"},{"line_number":125,"context_line":"        \"\"\"This sample create flavor with specified options before task starts and"},{"line_number":126,"context_line":"        delete it after task completion."}],"source_content_type":"text/x-rst","patch_set":5,"id":"da86d52c_81f96e82","line":123,"updated":"2015-02-03 12:35:00.000000000","message":"This should be changed to:\n\n @base.context(order\u003d1000)\n @plugin.plugin(name\u003d\"create_flavor\")","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"b7bb492260b2c0320b25b64772922459cc803f67","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"            # Updating _min and _max values"},{"line_number":265,"context_line":"            self._max \u003d max(self._max, iteration[\"duration\"])"},{"line_number":266,"context_line":"            self._min \u003d max(self._min, iteration[\"duration\"])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"            # Updating successfulness based on new max and min values"},{"line_number":269,"context_line":"            self.success \u003d self._max - self._min \u003c\u003d self.criterion_value"}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a80dd14_10a60554","line":266,"updated":"2015-03-10 16:26:38.000000000","message":"max/min seems typo","commit_id":"ff9a8e25fb09fed0343bfea4e55abb632b2c6c59"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fa6b6458b351d676ea773fd07a417c4c880548c5","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"            # Updating _min and _max values"},{"line_number":265,"context_line":"            self._max \u003d max(self._max, iteration[\"duration\"])"},{"line_number":266,"context_line":"            self._min \u003d max(self._min, iteration[\"duration\"])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"            # Updating successfulness based on new max and min values"},{"line_number":269,"context_line":"            self.success \u003d self._max - self._min \u003c\u003d self.criterion_value"}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a80dd14_bf47bd76","line":266,"in_reply_to":"9a80dd14_10a60554","updated":"2015-03-16 23:43:04.000000000","message":"Done","commit_id":"ff9a8e25fb09fed0343bfea4e55abb632b2c6c59"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"765da11b9fbbdb36ce92b70f726e0d0aba4c3474","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    from rally.common.i18n import _"},{"line_number":240,"context_line":"    from rally.common.plugin import plugin"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    @plugin.configure(name\u003d\"max_duration_range\")"},{"line_number":243,"context_line":"    class MaxDurationRange(sla.SLA):"},{"line_number":244,"context_line":"        \"\"\"Maximum allowed duration range in seconds.\"\"\""},{"line_number":245,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3afb71cf_023ef8b7","line":242,"updated":"2015-06-08 20:47:12.000000000","message":"it\u0027s actually @sla.configure","commit_id":"64c3a1f9f91f4352f1cf602464fa4860019eeeb1"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"765da11b9fbbdb36ce92b70f726e0d0aba4c3474","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    from rally import consts"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    @plugin.configure(name\u003d\"random_times\")"},{"line_number":332,"context_line":"    class RandomTimesScenarioRunner(runner.ScenarioRunner):"},{"line_number":333,"context_line":"        \"\"\"Sample of scenario runner plugin."},{"line_number":334,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3afb71cf_c247c049","line":331,"updated":"2015-06-08 20:47:12.000000000","message":"it\u0027s actually runner.configure","commit_id":"64c3a1f9f91f4352f1cf602464fa4860019eeeb1"}],"rally/benchmark/context/base.py":[{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"6edee5dbb6c5dc3f80fe1be531a9a71b60039fbd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                   task config"},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    def wrapper(cls):"},{"line_number":43,"context_line":"        cls \u003d plugin.configure(name\u003dname)(cls)"},{"line_number":44,"context_line":"        cls._ctx_order \u003d order"},{"line_number":45,"context_line":"        cls._ctx_hidden \u003d hidden"},{"line_number":46,"context_line":"        return cls"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_5b868314","line":43,"updated":"2015-03-02 11:08:58.000000000","message":"Assignment is a bit redundant here, cls is already modified by plugin.configure","commit_id":"96f21150c0050766f46439e893abd7ce27fc7a8f"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bab0ed494de2cb732cfb91ac10b145abc0a4b2b1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    @classmethod"},{"line_number":86,"context_line":"    def validate(cls, config, non_hidden\u003dFalse):"},{"line_number":87,"context_line":"        if non_hidden and cls._meta_get(\"hidden\"):"},{"line_number":88,"context_line":"            raise exceptions.NoSuchContext(name\u003dcls.get_name())"},{"line_number":89,"context_line":"        jsonschema.validate(config, cls.CONFIG_SCHEMA)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_4bdafe4b","line":88,"updated":"2015-03-19 11:45:01.000000000","message":"This exception has been removed","commit_id":"8b541133fe0ede65157b4382c51c7f47713baac9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2e9a1d7a3e83cdde58cfe5ca552f2fdbfd474e71","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    @classmethod"},{"line_number":86,"context_line":"    def validate(cls, config, non_hidden\u003dFalse):"},{"line_number":87,"context_line":"        if non_hidden and cls._meta_get(\"hidden\"):"},{"line_number":88,"context_line":"            raise exceptions.NoSuchContext(name\u003dcls.get_name())"},{"line_number":89,"context_line":"        jsonschema.validate(config, cls.CONFIG_SCHEMA)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_66ad399b","line":88,"in_reply_to":"9a80dd14_4bdafe4b","updated":"2015-03-19 11:48:01.000000000","message":"seems like lack of test coverage..","commit_id":"8b541133fe0ede65157b4382c51c7f47713baac9"}],"rally/benchmark/context/sahara/sahara_edp.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"4ecb2484c1eca92f7a0597128492e0b0366385cd","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"@base.context(order\u003d442)"},{"line_number":33,"context_line":"@plugin.plugin(name\u003d\"sahara_edp\")"},{"line_number":34,"context_line":"class SaharaEDP(base.Context):"},{"line_number":35,"context_line":"    \"\"\"Context class for setting up the environment for an EDP job.\"\"\""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_41ea1676","line":33,"updated":"2015-02-03 12:35:00.000000000","message":"Just a thought: since context/base.py imports plugin, can we use base.plugin() and avoid unnecessary import here and in all similar usages within the patch set?","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"}],"rally/benchmark/runners/base.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1ce29b3c58a1ab47f93d47d66dcd0d5795503a2a","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        jsonschema.validate(result_list, self.RESULT_SCHEMA)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"@plugin.plugin(name\u003d\"base\")"},{"line_number":149,"context_line":"class ScenarioRunner(plugin.Plugin):"},{"line_number":150,"context_line":"    \"\"\"Base class for all scenario runners."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_39f28206","line":148,"updated":"2015-01-30 17:42:57.000000000","message":"This name also matches context.base.Context (and will probably match scenarios.base.Scenario)\n\nAre there equal names make problem?","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4942fd237da616cab469c83cd07fa3281baf282f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        jsonschema.validate(result_list, self.RESULT_SCHEMA)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"@plugin.plugin(name\u003d\"base\")"},{"line_number":149,"context_line":"class ScenarioRunner(plugin.Plugin):"},{"line_number":150,"context_line":"    \"\"\"Base class for all scenario runners."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_1407431a","line":148,"in_reply_to":"fa81d914_39f28206","updated":"2015-01-30 17:52:41.000000000","message":"This won\u0027t produce any issues. \n\nThe thing is that we will still use ScenarioRunner to find all Runners. Context to find all Context, Scnearios to find all scenarios and so on... \n\n\nbase Plugin class is used only for having in one place common functionality for all plugins. (deprecation stuff, get_name(), get_info(), and so on)","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"4cf3f0f148a6a6a6e6b2d7d0a9e173d21487c523","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for runner in rutils.itersubclasses(ScenarioRunner):"},{"line_number":178,"context_line":"            if runner_type \u003d\u003d runner.__execution_type__:"},{"line_number":179,"context_line":"                return runner"},{"line_number":180,"context_line":"        raise exceptions.NoSuchRunner(type\u003drunner_type)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @staticmethod"},{"line_number":183,"context_line":"    def get_runner(task, config):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_9f5cbe27","side":"PARENT","line":180,"updated":"2015-03-04 11:58:00.000000000","message":"Please also remove the NoSuchRunner class from exceptions","commit_id":"dba16e5b89894d1e641c7758fdb8de2b09c68a50"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"075af024c66ad80331c40a476cad2d90126560fa","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for runner in rutils.itersubclasses(ScenarioRunner):"},{"line_number":178,"context_line":"            if runner_type \u003d\u003d runner.__execution_type__:"},{"line_number":179,"context_line":"                return runner"},{"line_number":180,"context_line":"        raise exceptions.NoSuchRunner(type\u003drunner_type)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @staticmethod"},{"line_number":183,"context_line":"    def get_runner(task, config):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_65e4c13b","side":"PARENT","line":180,"in_reply_to":"9a80dd14_9f5cbe27","updated":"2015-03-04 23:06:54.000000000","message":"Done","commit_id":"dba16e5b89894d1e641c7758fdb8de2b09c68a50"}],"rally/benchmark/scenarios/base.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"10cb209f038fd0ca501797ff50f056bef8dc7a7c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                return scenario"},{"line_number":77,"context_line":"        raise exceptions.NoSuchScenario(name\u003dname)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(boris-42): Remove after switching to plugin base."},{"line_number":80,"context_line":"    @classmethod"},{"line_number":81,"context_line":"    def get_name(cls):"},{"line_number":82,"context_line":"        return cls.__name__"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_d4708642","line":79,"updated":"2015-03-18 11:54:47.000000000","message":"isn\u0027t this what this patch is all about?","commit_id":"8b541133fe0ede65157b4382c51c7f47713baac9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"799af234e5533c28ed17ce20cfc56659c181876c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                return scenario"},{"line_number":77,"context_line":"        raise exceptions.NoSuchScenario(name\u003dname)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(boris-42): Remove after switching to plugin base."},{"line_number":80,"context_line":"    @classmethod"},{"line_number":81,"context_line":"    def get_name(cls):"},{"line_number":82,"context_line":"        return cls.__name__"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_bae69942","line":79,"in_reply_to":"9a80dd14_d4708642","updated":"2015-03-18 12:35:57.000000000","message":"Nope it is not. It switch just part of plugins types to new base. \n\nScenario is not switched yet because it requires more work and it will produce huge unreviewable patch.","commit_id":"8b541133fe0ede65157b4382c51c7f47713baac9"}],"rally/benchmark/sla/base.py":[{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"e0e06377e59d55f59b2e01264f3afdb2e85eec16","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @staticmethod"},{"line_number":47,"context_line":"    def validate(config):"},{"line_number":48,"context_line":"        properties \u003d dict([(c.get_name(), c.CONFIG_SCHEMA)"},{"line_number":49,"context_line":"                           for c in utils.itersubclasses(SLA)])"},{"line_number":50,"context_line":"        schema \u003d {"},{"line_number":51,"context_line":"            \"type\": \"object\","},{"line_number":52,"context_line":"            \"properties\": properties,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_f5062d85","line":49,"updated":"2015-02-04 15:15:10.000000000","message":"I think if we start unification, so it\u0027s better to use SLA.get_all() instead of utils.itersubclasses(SLA)","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"e0e06377e59d55f59b2e01264f3afdb2e85eec16","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        results \u003d []"},{"line_number":77,"context_line":"        opt_name_map \u003d dict([(c.get_name(), c)"},{"line_number":78,"context_line":"                             for c in utils.itersubclasses(SLA)])"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        for name, criterion in six.iteritems(config.get(\"sla\", {})):"},{"line_number":81,"context_line":"            check_result \u003d opt_name_map[name].check(criterion, result)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_f52d4dff","line":78,"updated":"2015-02-04 15:15:10.000000000","message":"ditto","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"2d372b2d9a5e046971636f7e92bae51f3050da1c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                             for c in utils.itersubclasses(SLA)])"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        for name, criterion in six.iteritems(config.get(\"sla\", {})):"},{"line_number":81,"context_line":"            check_result \u003d opt_name_map[name].check(criterion, result)"},{"line_number":82,"context_line":"            results.append({\"criterion\": name,"},{"line_number":83,"context_line":"                            \"success\": check_result.success,"},{"line_number":84,"context_line":"                            \"detail\": check_result.msg})"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_87dede6b","line":81,"updated":"2015-02-03 12:55:29.000000000","message":"Seems like you can use just\n\n    check_result \u003d SLA.get(name).check(...)\n\nand remove opt_name_map in L77-78","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"1d5036266af808cc83636884dc12ac58b00c0b0e","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"@plugin.deprecated("},{"line_number":89,"context_line":"    reason\u003d\"SLA check failure_rate was add that is overall better\","},{"line_number":90,"context_line":"    rally_version\u003d\"0.0.1\")"},{"line_number":91,"context_line":"@plugin.plugin(name\u003d\"max_failure_percent\")"},{"line_number":92,"context_line":"class FailureRateDeprecated(SLA):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_f117974f","line":89,"range":{"start_line":89,"start_character":11,"end_line":89,"end_character":66},"updated":"2015-02-02 12:57:08.000000000","message":"Looks like this is not quite English )","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"}],"rally/cmd/commands/info.py":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"4cf3f0f148a6a6a6e6b2d7d0a9e173d21487c523","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            info +\u003d \"\\n\\n\""},{"line_number":342,"context_line":"            info +\u003d utils.format_docstring(sla.__doc__) + \"\\n\""},{"line_number":343,"context_line":"            return info"},{"line_number":344,"context_line":"        except exceptions.NoSuchPlugin:"},{"line_number":345,"context_line":"            return None"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _get_deploy_engine_info(self, query):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_c453cf6a","line":344,"updated":"2015-03-04 11:58:00.000000000","message":"You have removed all the usages of exceptions.NoSuchSLA, so please remove the exception class as well","commit_id":"897841b69085cfbb735b1c99c80d225dfc5342a0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"075af024c66ad80331c40a476cad2d90126560fa","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            info +\u003d \"\\n\\n\""},{"line_number":342,"context_line":"            info +\u003d utils.format_docstring(sla.__doc__) + \"\\n\""},{"line_number":343,"context_line":"            return info"},{"line_number":344,"context_line":"        except exceptions.NoSuchPlugin:"},{"line_number":345,"context_line":"            return None"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _get_deploy_engine_info(self, query):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_25c1e980","line":344,"in_reply_to":"9a80dd14_c453cf6a","updated":"2015-03-04 23:06:54.000000000","message":"Done","commit_id":"897841b69085cfbb735b1c99c80d225dfc5342a0"}],"rally/exceptions.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bab0ed494de2cb732cfb91ac10b145abc0a4b2b1","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    msg_fmt \u003d _(\"There is no benchmark runner with type `%(type)s`.\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"class NoSuchContext(NotFoundException):"},{"line_number":143,"context_line":"    msg_fmt \u003d _(\"There is no benchmark context with name `%(name)s`.\")"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_4bb11e00","side":"PARENT","line":142,"updated":"2015-03-19 11:45:01.000000000","message":"This is still in use: https://github.com/stackforge/rally/blob/master/rally/benchmark/context/base.py#L88","commit_id":"a918307f6710d5ac6a4400ceca51fa28cbdfb3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2e9a1d7a3e83cdde58cfe5ca552f2fdbfd474e71","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    msg_fmt \u003d _(\"There is no benchmark runner with type `%(type)s`.\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"class NoSuchContext(NotFoundException):"},{"line_number":143,"context_line":"    msg_fmt \u003d _(\"There is no benchmark context with name `%(name)s`.\")"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_a692d154","side":"PARENT","line":142,"in_reply_to":"9a80dd14_4bb11e00","updated":"2015-03-19 11:48:01.000000000","message":"I will remove usage.","commit_id":"a918307f6710d5ac6a4400ceca51fa28cbdfb3ac"}],"samples/plugins/sla/sla_plugin.py":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"2d372b2d9a5e046971636f7e92bae51f3050da1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"da86d52c_67b00af5","updated":"2015-02-03 12:55:29.000000000","message":"You should also edit these plugins:\n\nhttps://github.com/stackforge/rally/blob/master/samples/plugins/runner/runner_plugin.py\nhttps://github.com/stackforge/rally/blob/master/samples/plugins/context/context_plugin.py","commit_id":"c6102e60a610f4f7f716edf233677a1f12b09a1d"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"6edee5dbb6c5dc3f80fe1be531a9a71b60039fbd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from rally.common import plugin"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"@plugin.configure(\"max_duration_range\")"},{"line_number":22,"context_line":"class MaxDurationRange(base.SLA):"},{"line_number":23,"context_line":"    \"\"\"Maximum allowed duration range in seconds.\"\"\""},{"line_number":24,"context_line":"    CONFIG_SCHEMA \u003d {\"type\": \"number\", \"minimum\": 0.0,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_bb205ff8","line":21,"updated":"2015-03-02 11:08:58.000000000","message":"Please also add @plugin.configure to plugin sample for runner.","commit_id":"96f21150c0050766f46439e893abd7ce27fc7a8f"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"4cf3f0f148a6a6a6e6b2d7d0a9e173d21487c523","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    CONFIG_SCHEMA \u003d {"},{"line_number":26,"context_line":"        \"type\": \"number\","},{"line_number":27,"context_line":"        \"minimum\": 0.0,"},{"line_number":28,"context_line":"    }"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, criterion_value):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_849f1703","line":27,"updated":"2015-03-04 11:58:00.000000000","message":"Thanks for fixing this sample. Why have you removed \"exclusiveMinimum\": True ? This line makes sense","commit_id":"897841b69085cfbb735b1c99c80d225dfc5342a0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"075af024c66ad80331c40a476cad2d90126560fa","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    CONFIG_SCHEMA \u003d {"},{"line_number":26,"context_line":"        \"type\": \"number\","},{"line_number":27,"context_line":"        \"minimum\": 0.0,"},{"line_number":28,"context_line":"    }"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, criterion_value):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_651761ee","line":27,"in_reply_to":"9a80dd14_849f1703","updated":"2015-03-04 23:06:54.000000000","message":"yep yep you are right, going to put it back.","commit_id":"897841b69085cfbb735b1c99c80d225dfc5342a0"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"4cf3f0f148a6a6a6e6b2d7d0a9e173d21487c523","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return self.success"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def details(self):"},{"line_number":50,"context_line":"        return (_(\"%s - Maximum allowed duration range: %.2f%% \u003c\u003d %.2f%%\") %"},{"line_number":51,"context_line":"                (self.status(), self._max - self._min, self.criterion_value))"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_644f8393","line":50,"updated":"2015-03-04 11:58:00.000000000","message":"In other SLA classes the values go first, then the status:\nhttps://github.com/stackforge/rally/blob/master/rally/benchmark/sla/base.py#L164\n\nActually having status first is fine, but then we should change those messages in other SLA classes too.","commit_id":"897841b69085cfbb735b1c99c80d225dfc5342a0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"075af024c66ad80331c40a476cad2d90126560fa","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return self.success"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def details(self):"},{"line_number":50,"context_line":"        return (_(\"%s - Maximum allowed duration range: %.2f%% \u003c\u003d %.2f%%\") %"},{"line_number":51,"context_line":"                (self.status(), self._max - self._min, self.criterion_value))"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_c5264d68","line":50,"in_reply_to":"9a80dd14_644f8393","updated":"2015-03-04 23:06:54.000000000","message":"I will make wish list bug for this. It\u0027s not related to this change at all.","commit_id":"897841b69085cfbb735b1c99c80d225dfc5342a0"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"b7bb492260b2c0320b25b64772922459cc803f67","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Updating _min and _max values"},{"line_number":43,"context_line":"        self._max \u003d max(self._max, iteration[\"duration\"])"},{"line_number":44,"context_line":"        self._min \u003d max(self._min, iteration[\"duration\"])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # Updating successfulness based on new max and min values"},{"line_number":47,"context_line":"        self.success \u003d self._max - self._min \u003c\u003d self.criterion_value"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_b0c8d957","line":44,"updated":"2015-03-10 16:26:38.000000000","message":"self._min \u003d min?","commit_id":"ff9a8e25fb09fed0343bfea4e55abb632b2c6c59"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fa6b6458b351d676ea773fd07a417c4c880548c5","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Updating _min and _max values"},{"line_number":43,"context_line":"        self._max \u003d max(self._max, iteration[\"duration\"])"},{"line_number":44,"context_line":"        self._min \u003d max(self._min, iteration[\"duration\"])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # Updating successfulness based on new max and min values"},{"line_number":47,"context_line":"        self.success \u003d self._max - self._min \u003c\u003d self.criterion_value"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_5f2fa1a7","line":44,"in_reply_to":"9a80dd14_b0c8d957","updated":"2015-03-16 23:43:04.000000000","message":"Done","commit_id":"ff9a8e25fb09fed0343bfea4e55abb632b2c6c59"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"b7bb492260b2c0320b25b64772922459cc803f67","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # Updating successfulness based on new max and min values"},{"line_number":47,"context_line":"        self.success \u003d self._max - self._min \u003c\u003d self.criterion_value"},{"line_number":48,"context_line":"        return self.success"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def details(self):"},{"line_number":51,"context_line":"        return (_(\"%s - Maximum allowed duration range: %.2f%% \u003c\u003d %.2f%%\") %"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_b087f9b5","line":48,"updated":"2015-03-10 16:26:38.000000000","message":"Is this necessary? We may assign True/False to self.success, or just return this value. Why we need both?","commit_id":"ff9a8e25fb09fed0343bfea4e55abb632b2c6c59"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fa6b6458b351d676ea773fd07a417c4c880548c5","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # Updating successfulness based on new max and min values"},{"line_number":47,"context_line":"        self.success \u003d self._max - self._min \u003c\u003d self.criterion_value"},{"line_number":48,"context_line":"        return self.success"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def details(self):"},{"line_number":51,"context_line":"        return (_(\"%s - Maximum allowed duration range: %.2f%% \u003c\u003d %.2f%%\") %"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_7f1b8580","line":48,"in_reply_to":"9a80dd14_b087f9b5","updated":"2015-03-16 23:43:04.000000000","message":"That is the current syntax and it\u0027s quite nice. Take a look at benchmark engine code.","commit_id":"ff9a8e25fb09fed0343bfea4e55abb632b2c6c59"}]}
