)]}'
{"rally/plugins/openstack/types.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"5ec640bbe65fe7f6fa06126bd438eb911b74a3fb","unresolved":false,"context_lines":[{"line_number":22,"context_line":"@plugin.configure(name\u003d\"nova_flavor\")"},{"line_number":23,"context_line":"class Flavor(types.ResourceType):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @logging.log_deprecated_args("},{"line_number":26,"context_line":"        \"Pass a context object to ResourceType plugins instead of clients\","},{"line_number":27,"context_line":"        \"0.4.1\", [\"clients\"], once\u003dTrue)"},{"line_number":28,"context_line":"    def preprocess(self, resource_config, context\u003dNone, clients\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_d8114ab1","line":25,"updated":"2016-06-03 14:01:18.000000000","message":"This logging is useless because:\n\n1) User can not control this\n\n2) It will always be shown since clients is specified explicitly at L28 (None value does not disable this)\n\nI suggest to remove this logging","commit_id":"1a0a5a7834d19ed6aa3bdcf16c0f4cadb129b3e7"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4b3f09d435f5c1d0a6d38affac063b75ca88cb18","unresolved":false,"context_lines":[{"line_number":22,"context_line":"@plugin.configure(name\u003d\"nova_flavor\")"},{"line_number":23,"context_line":"class Flavor(types.ResourceType):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @logging.log_deprecated_args("},{"line_number":26,"context_line":"        \"Pass a context object to ResourceType plugins instead of clients\","},{"line_number":27,"context_line":"        \"0.4.1\", [\"clients\"], once\u003dTrue)"},{"line_number":28,"context_line":"    def preprocess(self, resource_config, context\u003dNone, clients\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_6c67c0b7","line":25,"in_reply_to":"9abb7d3a_d8114ab1","updated":"2016-06-03 14:20:35.000000000","message":"Done","commit_id":"1a0a5a7834d19ed6aa3bdcf16c0f4cadb129b3e7"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"@plugin.configure(name\u003d\"nova_flavor\")"},{"line_number":22,"context_line":"class Flavor(types.ResourceType):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def preprocess(self, resource_config, context\u003dNone, clients\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"Transform the resource config to id."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        :param resource_config: scenario config of resource"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_70f770f5","line":24,"updated":"2016-08-22 15:18:57.000000000","message":"I guess we shouldn\u0027t allow context\u003dNone if we don\u0027t have clients","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        resource_id \u003d resource_config.get(\"id\")"},{"line_number":35,"context_line":"        if not resource_id:"},{"line_number":36,"context_line":"            clients \u003d (clients or"},{"line_number":37,"context_line":"                       osclients.Clients(context[\"users\"][0][\"credential\"]))"},{"line_number":38,"context_line":"            novaclient \u003d clients.nova()"},{"line_number":39,"context_line":"            resource_id \u003d types._id_from_name("},{"line_number":40,"context_line":"                resource_config\u003dresource_config,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_753f62d6","line":37,"updated":"2016-08-22 15:18:57.000000000","message":"Great change as for me)","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"}],"rally/task/types.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    This is necessary because ``convert()`` is called as a decorator"},{"line_number":39,"context_line":"    at import time, but we cannot be confident that the ResourceType"},{"line_number":40,"context_line":"    plugins are already loaded then. (In fact, since ``convert()`` is"},{"line_number":41,"context_line":"    used to decorate plugins, we can be confident that not all plugins"},{"line_number":42,"context_line":"    are loaded when it is called.)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_8c61423c","line":40,"updated":"2016-08-22 15:18:57.000000000","message":"I suggest to put plugin name and its args to _meta and try to get plugin instance only when its needed(I guess they will be already loaded when it occurs) What does you think?","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    we can be certain that all plugins have been loaded and finding"},{"line_number":47,"context_line":"    them by name will work."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    def preprocess(self, *args, **kwargs):"},{"line_number":50,"context_line":"        plug \u003d ResourceType.get(plugin_name)"},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            return plug().preprocess(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_95e81eb6","line":49,"updated":"2016-08-22 15:18:57.000000000","message":"I don\u0027t see where we use `self` What is the intent behind instancemethod usage?","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                # order to avoid instantiating a Clients object if we"},{"line_number":60,"context_line":"                # don\u0027t need to."},{"line_number":61,"context_line":"                context \u003d kwargs.get(\"context\")"},{"line_number":62,"context_line":"                clients \u003d osclients.Clients(context[\"users\"][0][\"credential\"])"},{"line_number":63,"context_line":"            return plug.transform(clients, resource_config)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    loader_cls \u003d type(\"PluginLoader_%s\" % plugin_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_421c3312","line":62,"updated":"2016-08-22 15:18:57.000000000","message":"Previously we have used admin credentials. Why does we change it and able to start to use user credentials?","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @classmethod"},{"line_number":124,"context_line":"    @logging.log_deprecated(\"Use ResourceType.preprocess() instead\", \"0.5.2\","},{"line_number":125,"context_line":"                            once\u003dTrue)"},{"line_number":126,"context_line":"    def transform(cls, clients, resource_config):"},{"line_number":127,"context_line":"        return cls().preprocess(resource_config, clients\u003dclients)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_d5dc56e6","line":125,"updated":"2016-08-22 15:18:57.000000000","message":"Does it output a lot of duplicated lines in our logs as it was early?)","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b47571326e4b88165c71266c8e81c50e8d38c21e","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def transform(cls, clients, resource_config):"},{"line_number":127,"context_line":"        return cls().preprocess(resource_config, clients\u003dclients)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def preprocess(self, resource_config, context\u003dNone, clients\u003dNone):"},{"line_number":130,"context_line":"        \"\"\"Transform the resource."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param resource_config: scenario config of resource"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_f1fa4fbc","line":129,"updated":"2016-08-22 15:18:57.000000000","message":"I suggest to maintain two functions.First classmethod, second instancemethod with the same name tranform","commit_id":"a03dbafd9c7685f773ca02766a2336ec774db4ca"}]}
