)]}'
{"rally/api.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6e0546fea8e8be749481e657fe261ebfde4c7dba","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        return objects.Verification.get(verification_uuid)"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"class DeprecatedAPIClass(object):"},{"line_number":546,"context_line":"    \"\"\"Deprecates direct usage of api classes.\"\"\""},{"line_number":547,"context_line":"    def __init__(self, cls, release):"},{"line_number":548,"context_line":"        self._cls \u003d cls"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_c777bd38","line":545,"updated":"2015-12-06 22:01:21.000000000","message":"lets make this class private too.","commit_id":"5aa3931fa28cc4f5ce81ca92bc3e936272435417"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6f028028dd7989d69a40d166e75f69c10fda7717","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        for path in plugin_paths or []:"},{"line_number":597,"context_line":"            discover.load_plugins(path)"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        self.deployment \u003d _Deployment"},{"line_number":600,"context_line":"        self.task \u003d _Task"},{"line_number":601,"context_line":"        self.verification \u003d _Verification"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_27ad6131","line":598,"updated":"2015-12-06 22:31:24.000000000","message":"add a comment:\n# There is no reason to auto-discover API\u0027s. We have only 3 classes, so let\u0027s do it in good old way - hardcode them:)","commit_id":"5aa3931fa28cc4f5ce81ca92bc3e936272435417"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"61720d2c01025661cbd7aff6b07045fb0f5d1aca","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        abspath \u003d os.path.abspath(os.path.expanduser(path))"},{"line_number":47,"context_line":"        confname \u003d os.path.join(abspath, \"rally.conf\")"},{"line_number":48,"context_line":"        if os.path.isfile(confname):"},{"line_number":49,"context_line":"            return [confname]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    return None"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_585ba687","line":49,"updated":"2016-01-04 13:35:06.000000000","message":"This returns only one file, but function name tells us that we can locate more than one config file (if any). Can we make this function better than its relative from cliutils and return a list of all available config files? Or maybe rename to `_find_config_file\u0027 and return str path instead of list?","commit_id":"2ebb4f6e5327883e90a18872dbeb2e1cea2ece35"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bf929596f08fb21ec7613d72d04b4d4bb1d71741","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        return objects.Verification.get(verification_uuid)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"class _DeprecatedAPIClass(object):"},{"line_number":551,"context_line":"    \"\"\"Deprecates direct usage of api classes.\"\"\""},{"line_number":552,"context_line":"    def __init__(self, cls):"},{"line_number":553,"context_line":"        self._cls \u003d cls"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_6e24a0ae","line":550,"updated":"2016-01-04 13:57:57.000000000","message":"This can be a decorator, so in case of decorator we would not need to put extra underscore to all decorated names of classes:\n\n  @deprecated_api_class\n  class Task(object):\n      ...","commit_id":"2ebb4f6e5327883e90a18872dbeb2e1cea2ece35"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"f512a5ad9c96337c2a9bf366832e6eb8a26fb9ea","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        return objects.Verification.get(verification_uuid)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"class _DeprecatedAPIClass(object):"},{"line_number":551,"context_line":"    \"\"\"Deprecates direct usage of api classes.\"\"\""},{"line_number":552,"context_line":"    def __init__(self, cls):"},{"line_number":553,"context_line":"        self._cls \u003d cls"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_9fea600e","line":550,"in_reply_to":"fa69d971_0e740466","updated":"2016-01-04 15:06:25.000000000","message":"Got this, thanks","commit_id":"2ebb4f6e5327883e90a18872dbeb2e1cea2ece35"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"67015b3c3661dc263a7b132cf3cea0531f2a43fa","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        return objects.Verification.get(verification_uuid)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"class _DeprecatedAPIClass(object):"},{"line_number":551,"context_line":"    \"\"\"Deprecates direct usage of api classes.\"\"\""},{"line_number":552,"context_line":"    def __init__(self, cls):"},{"line_number":553,"context_line":"        self._cls \u003d cls"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_0e740466","line":550,"in_reply_to":"fa69d971_6e24a0ae","updated":"2016-01-04 14:10:06.000000000","message":"Classes are not deprecated. Direct usage is deprecated. Classes will still be used as aggregators for specific apis(task, deployment and etc). Variables Deployment, Task, Verification will be removed in several releases(they are left for backward compatibility).","commit_id":"2ebb4f6e5327883e90a18872dbeb2e1cea2ece35"}],"rally/cli/cliutils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"154d3af7245056239675086bffebeaabbf0050c0","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                \"imported.\")"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    # FIXME(andreykurilin): add an API for plugin discover."},{"line_number":453,"context_line":"    CONF.register_cli_opt(cfg.ListOpt(\"plugin-paths\","},{"line_number":454,"context_line":"                                      default\u003dos.environ.get("},{"line_number":455,"context_line":"                                          \"RALLY_PLUGIN_PATHS\"),"},{"line_number":456,"context_line":"                                      help\u003dhelp_msg))"}],"source_content_type":"text/x-python","patch_set":18,"id":"dae33548_7fe1149a","line":453,"updated":"2016-02-16 14:26:19.000000000","message":"Can we have this in API.__init__() ? (add extra kwarg \"plugin_paths\")\nThis will finally allow simple api invocation.\n\nhttp://paste.openstack.org/show/487107/","commit_id":"b3a5af4703ce1b653f43138ba6393e78411d0b89"}],"rally/cli/commands/deployment.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1ed782aeeebd62de4579c9aefa8b58f33ff1e755","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            print(_(\"Error: %s\") % sys.exc_info()[1])"},{"line_number":108,"context_line":"            return(1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.list(deployment_list\u003d[deployment])"},{"line_number":111,"context_line":"        if do_use:"},{"line_number":112,"context_line":"            self.use(deployment[\"uuid\"])"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"1a6eadb0_b50e65e3","line":110,"updated":"2016-12-19 19:44:02.000000000","message":"you should transmit \"api\" here.","commit_id":"475b5893cd8d4048e463791ec6896925bd920caf"}]}
