)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"8ecb994b31e050488a1650e4ef92254f7db35302","unresolved":false,"context_lines":[{"line_number":7,"context_line":"OSProfiler Intergration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. connect_string store in deployment and get in credential"},{"line_number":10,"context_line":"2. if has got connect_string and hmac_key,rally get osprofiler data and process them in osprofilerchart"},{"line_number":11,"context_line":"3. new js code will receive the data from osprofiler chart and generate graphs"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Id477a10489102425fae79ecf6719b1e0739e92c0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f2577a7_6fcddc2f","line":10,"updated":"2017-09-16 17:43:41.000000000","message":"The commit msg is too long, pls split it to multi-lines.","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"OSProfiler Intergration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. connect_string store in deployment and get in credential"},{"line_number":10,"context_line":"2. if has got connect_string and hmac_key,rally get osprofiler data and process them in osprofilerchart"},{"line_number":11,"context_line":"3. new js code will receive the data from osprofiler chart and generate graphs"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Id477a10489102425fae79ecf6719b1e0739e92c0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f2577a7_8cf008ff","line":10,"in_reply_to":"5f2577a7_6fcddc2f","updated":"2017-09-18 06:34:28.000000000","message":"done. :)","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"}],"rally/plugins/openstack/embedcharts/osprofilerchart.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return trace"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _datetime_json_serialize(self, obj):"},{"line_number":48,"context_line":"        if hasattr(obj, \"isoformat\"):"},{"line_number":49,"context_line":"            return obj.isoformat()"},{"line_number":50,"context_line":"        else:"},{"line_number":51,"context_line":"            return obj"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_08c219ea","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":37},"updated":"2017-11-27 16:56:19.000000000","message":"hm... I never saw this method. It looks like it can clean some custom lines in our code. In what cases, it can be missed?","commit_id":"467075162269f6334ee8d4000f52a6db1d537a08"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"f090feea9efc90a32401b68636a74fb341e3c283","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            engine \u003d base.get_driver(conn_str)"},{"line_number":38,"context_line":"        except ValueError as e:"},{"line_number":39,"context_line":"            if logging.is_debug():"},{"line_number":40,"context_line":"                LOG.exception(e)"},{"line_number":41,"context_line":"            else:"},{"line_number":42,"context_line":"                LOG.warning(e)"},{"line_number":43,"context_line":"            return False"},{"line_number":44,"context_line":"        trace \u003d engine.get_report(trace_id)"},{"line_number":45,"context_line":"        return trace"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_6a8f2875","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":30},"updated":"2017-10-24 07:01:09.000000000","message":"We should directly raise exception.","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"124181bace6e670562f127b129ccf4390ef272a7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            engine \u003d base.get_driver(conn_str)"},{"line_number":38,"context_line":"        except ValueError as e:"},{"line_number":39,"context_line":"            if logging.is_debug():"},{"line_number":40,"context_line":"                LOG.exception(e)"},{"line_number":41,"context_line":"            else:"},{"line_number":42,"context_line":"                LOG.warning(e)"},{"line_number":43,"context_line":"            return False"},{"line_number":44,"context_line":"        trace \u003d engine.get_report(trace_id)"},{"line_number":45,"context_line":"        return trace"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_6395ca86","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":30},"in_reply_to":"3f4b6375_6a8f2875","updated":"2017-10-26 09:25:13.000000000","message":"Done","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"f8377d4db89047b8e9b1ea56895891304df9a2c6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                      separators\u003d(\",\", \": \"),"},{"line_number":73,"context_line":"                                      default\u003dself._datetime_json_serialize)"},{"line_number":74,"context_line":"                self._data \u003d html_obj.replace(\"$DATA\", osp_data)"},{"line_number":75,"context_line":"                self._data \u003d self._data.replace(\"$LOCAL\", \"false\")"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"                # NOTE(chenxu): tag \u003c/script\u003e will be parsed incorrectly in"},{"line_number":78,"context_line":"                # javascript string."}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_52308f9f","line":75,"range":{"start_line":75,"start_character":58,"end_line":75,"end_character":65},"updated":"2017-10-24 17:00:34.000000000","message":"Looks this just a str and if(str) always return true.","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"124181bace6e670562f127b129ccf4390ef272a7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                      separators\u003d(\",\", \": \"),"},{"line_number":73,"context_line":"                                      default\u003dself._datetime_json_serialize)"},{"line_number":74,"context_line":"                self._data \u003d html_obj.replace(\"$DATA\", osp_data)"},{"line_number":75,"context_line":"                self._data \u003d self._data.replace(\"$LOCAL\", \"false\")"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"                # NOTE(chenxu): tag \u003c/script\u003e will be parsed incorrectly in"},{"line_number":78,"context_line":"                # javascript string."}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_c3a91e90","line":75,"range":{"start_line":75,"start_character":58,"end_line":75,"end_character":65},"in_reply_to":"3f4b6375_52308f9f","updated":"2017-10-26 09:25:13.000000000","message":"no it won\u0027t . The whole js code is in self._data, so when it is passed to template , \"true\" and \"false\" will be parsed correctly.","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"f090feea9efc90a32401b68636a74fb341e3c283","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"                # NOTE(chenxu): tag \u003c/script\u003e will be parsed incorrectly in"},{"line_number":78,"context_line":"                # javascript string."},{"line_number":79,"context_line":"                self._data \u003d self._data.replace(\"/script\u003e\", \"\\/script\u003e\")"},{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            self.widget \u003d \"TextArea\""},{"line_number":82,"context_line":"            self._data \u003d self._data[\"trace_id\"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_cf6f4efa","line":79,"updated":"2017-10-24 07:01:09.000000000","message":"could you provide more comment?","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"124181bace6e670562f127b129ccf4390ef272a7","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"                # NOTE(chenxu): tag \u003c/script\u003e will be parsed incorrectly in"},{"line_number":78,"context_line":"                # javascript string."},{"line_number":79,"context_line":"                self._data \u003d self._data.replace(\"/script\u003e\", \"\\/script\u003e\")"},{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            self.widget \u003d \"TextArea\""},{"line_number":82,"context_line":"            self._data \u003d self._data[\"trace_id\"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_e38f7a27","line":79,"in_reply_to":"3f4b6375_cf6f4efa","updated":"2017-10-26 09:25:13.000000000","message":"thanks for suggestion and I update the comment :)","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"from osprofiler.drivers import base"},{"line_number":17,"context_line":"from rally.common import logging"},{"line_number":18,"context_line":"from rally.common.plugin import plugin"},{"line_number":19,"context_line":"from rally import exceptions"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff82abbf_e94b0228","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":35},"updated":"2017-11-27 16:56:19.000000000","message":"rally.plugins.* contains hundreds of different plugins. Importing all their requirements at the top level of the module makes execution of rally slow. I mean in case of making json report it is not important to have osprofiler imported and keystoneclient and all other dependencies. It would be nice to import such requirements only when they are actually used. So please move it outside get_osprofiler_data method.","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"from osprofiler.drivers import base"},{"line_number":17,"context_line":"from rally.common import logging"},{"line_number":18,"context_line":"from rally.common.plugin import plugin"},{"line_number":19,"context_line":"from rally import exceptions"}],"source_content_type":"text/x-python","patch_set":20,"id":"df87a7cf_40da8c17","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":35},"in_reply_to":"ff82abbf_e94b0228","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    widget \u003d \"OSProfiler\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def get_osprofiler_data(cls, conn_str, trace_id):"},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            engine \u003d base.get_driver(conn_str)"},{"line_number":39,"context_line":"        except Exception as e:"},{"line_number":40,"context_line":"            raise exceptions.InvalidConnectionString(e)"},{"line_number":41,"context_line":"        trace \u003d engine.get_report(trace_id)"},{"line_number":42,"context_line":"        return trace"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _datetime_json_serialize(self, obj):"},{"line_number":45,"context_line":"        if hasattr(obj, \"isoformat\"):"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff82abbf_0972e67b","line":42,"range":{"start_line":35,"start_character":3,"end_line":42,"end_character":20},"updated":"2017-11-27 16:56:19.000000000","message":"Let\u0027s move everything related to calling osprofiler to this method (loading data and template) and in case of error, print debug message about it and process trace_id just like text field.","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    widget \u003d \"OSProfiler\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def get_osprofiler_data(cls, conn_str, trace_id):"},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            engine \u003d base.get_driver(conn_str)"},{"line_number":39,"context_line":"        except Exception as e:"},{"line_number":40,"context_line":"            raise exceptions.InvalidConnectionString(e)"},{"line_number":41,"context_line":"        trace \u003d engine.get_report(trace_id)"},{"line_number":42,"context_line":"        return trace"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _datetime_json_serialize(self, obj):"},{"line_number":45,"context_line":"        if hasattr(obj, \"isoformat\"):"}],"source_content_type":"text/x-python","patch_set":20,"id":"df87a7cf_60d790ef","line":42,"range":{"start_line":35,"start_character":3,"end_line":42,"end_character":20},"in_reply_to":"ff82abbf_0972e67b","updated":"2017-12-04 03:18:20.000000000","message":"ye it looks better  :)","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        trace \u003d engine.get_report(trace_id)"},{"line_number":42,"context_line":"        return trace"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _datetime_json_serialize(self, obj):"},{"line_number":45,"context_line":"        if hasattr(obj, \"isoformat\"):"},{"line_number":46,"context_line":"            return obj.isoformat()"},{"line_number":47,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff82abbf_093ae6ca","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":44},"updated":"2017-11-27 16:56:19.000000000","message":"bug: it should be a class method or you can move this method outside the class at the top of this module.","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        trace \u003d engine.get_report(trace_id)"},{"line_number":42,"context_line":"        return trace"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _datetime_json_serialize(self, obj):"},{"line_number":45,"context_line":"        if hasattr(obj, \"isoformat\"):"},{"line_number":46,"context_line":"            return obj.isoformat()"},{"line_number":47,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"df87a7cf_0006c487","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":44},"in_reply_to":"ff82abbf_093ae6ca","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            data[\"widget\"] \u003d \"EmbedChart\""},{"line_number":54,"context_line":"            html_obj \u003d \"\""},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                with open(\"rally/ui/templates/task/osprofiler_template.html\","},{"line_number":57,"context_line":"                          \"r\") as f:"},{"line_number":58,"context_line":"                    html_obj \u003d f.read()"},{"line_number":59,"context_line":"            except Exception as e:"},{"line_number":60,"context_line":"                LOG.exception(str(e))"},{"line_number":61,"context_line":"                data[\"widget\"] \u003d \"TextArea\""}],"source_content_type":"text/x-python","patch_set":20,"id":"ff82abbf_29a24afd","line":58,"range":{"start_line":56,"start_character":16,"end_line":58,"end_character":39},"updated":"2017-11-27 16:56:19.000000000","message":"in which case it can raise an exception?\nLet\u0027s avoid copy-pasting and do the next:\n\n    from osprofiler import cmd\n\n    path \u003d \"%s/template.html\" % os.path.dirname(cmd.__file__)\n    with open(path) as f:\n        html_obj \u003d f.read","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            data[\"widget\"] \u003d \"EmbedChart\""},{"line_number":54,"context_line":"            html_obj \u003d \"\""},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                with open(\"rally/ui/templates/task/osprofiler_template.html\","},{"line_number":57,"context_line":"                          \"r\") as f:"},{"line_number":58,"context_line":"                    html_obj \u003d f.read()"},{"line_number":59,"context_line":"            except Exception as e:"},{"line_number":60,"context_line":"                LOG.exception(str(e))"},{"line_number":61,"context_line":"                data[\"widget\"] \u003d \"TextArea\""}],"source_content_type":"text/x-python","patch_set":20,"id":"df87a7cf_200bc88e","line":58,"range":{"start_line":56,"start_character":16,"end_line":58,"end_character":39},"in_reply_to":"ff82abbf_29a24afd","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"af46e30adaffc6948c757cf8cabd0f57340dd95a","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @classmethod"},{"line_number":81,"context_line":"    def render_complete_data(cls, data):"},{"line_number":82,"context_line":"        return cls.get_osprofiler_data(data)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_67f0d868","line":82,"range":{"start_line":82,"start_character":9,"end_line":82,"end_character":44},"updated":"2017-12-05 14:25:13.000000000","message":"it would be nice to see something like:\n\n   if data[\"data\"].get(\"conn_str\"):\n       result \u003d cls.get_osprofiler_data(data)\n\n       if result:\n           return result\n\n    return {\"title\": data[\"title\"],\n            \"widget\": \"TextArea\",\n            \"data\": data[\"data\"][\"trace_id\"]}\n\nand get_osprofiler_data(cls, data) will left for osprofiler itself:\n\n    from osprofiler.drivers import base\n    from osprofiler import cmd\n\n    try:\n        engine \u003d base.get_driver(data[\"data\"][\"conn_str\"])\n    except Exception as e:\n        LOG.debug(\"...\")\n        return None","commit_id":"cfb7fd7a52ec69066a1e5d4c4fabadd4aa182cfe"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"8e137935c5841beaf0b95ae0f3898179cdd5b369","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @classmethod"},{"line_number":81,"context_line":"    def render_complete_data(cls, data):"},{"line_number":82,"context_line":"        return cls.get_osprofiler_data(data)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_e9a81bdc","line":82,"range":{"start_line":82,"start_character":9,"end_line":82,"end_character":44},"in_reply_to":"df87a7cf_67f0d868","updated":"2017-12-06 15:11:09.000000000","message":"done ,thanks for review : )","commit_id":"cfb7fd7a52ec69066a1e5d4c4fabadd4aa182cfe"}],"rally/plugins/openstack/scenario.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            if profiler_conn_str:"},{"line_number":137,"context_line":"                complete_data \u003d {\"title\": \"OSProfiler Trace-ID\","},{"line_number":138,"context_line":"                                 \"chart_plugin\": \"OSProfiler\","},{"line_number":139,"context_line":"                                 \"data\": [trace_id],"},{"line_number":140,"context_line":"                                 \"conn_str\": str(profiler_conn_str)}"},{"line_number":141,"context_line":"            else:"},{"line_number":142,"context_line":"                complete_data \u003d {\"title\": \"OSProfiler Trace-ID\","}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_45927df8","line":139,"range":{"start_line":139,"start_character":42,"end_line":139,"end_character":50},"updated":"2017-09-23 11:03:29.000000000","message":"Let\u0027s put connection string into data. It will allow to reduce custom fields.","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                 \"conn_str\": str(profiler_conn_str)}"},{"line_number":141,"context_line":"            else:"},{"line_number":142,"context_line":"                complete_data \u003d {\"title\": \"OSProfiler Trace-ID\","},{"line_number":143,"context_line":"                                 \"chart_plugin\": \"TextArea\","},{"line_number":144,"context_line":"                                 \"data\": [trace_id]}"},{"line_number":145,"context_line":"            self.add_output(complete\u003dcomplete_data)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_258f81cd","line":143,"range":{"start_line":143,"start_character":33,"end_line":143,"end_character":59},"updated":"2017-09-23 11:03:29.000000000","message":"I see no reason to use different charts in different cases. OSProfiler chart can inherit from TextArea and call super() method if there is no connection string or process reports if it exists. (previously, it was not possible due to the way of how complete charts are processed, but see my other suggestions)","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"}],"rally/task/processing/charts.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":645,"context_line":"        \"chart_plugin\": six.string_types,"},{"line_number":646,"context_line":"        \"data\": (list, dict),"},{"line_number":647,"context_line":"        \"label\": six.string_types,"},{"line_number":648,"context_line":"        \"conn_str\": six.string_types,"},{"line_number":649,"context_line":"        \"axis_label\": six.string_types},"},{"line_number":650,"context_line":"    \"required\": [\"title\", \"chart_plugin\", \"data\"]}"},{"line_number":651,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_e5c289e9","line":648,"range":{"start_line":648,"start_character":8,"end_line":648,"end_character":37},"updated":"2017-09-23 11:03:29.000000000","message":"see a comment for rally/plugins/openstack/scenario.py","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":765,"context_line":"        \"chart_plugin\": six.string_types,"},{"line_number":766,"context_line":"        \"data\": (list, dict),"},{"line_number":767,"context_line":"        \"label\": six.string_types,"},{"line_number":768,"context_line":"        \"conn_str\": six.string_types,"},{"line_number":769,"context_line":"        \"axis_label\": six.string_types},"},{"line_number":770,"context_line":"    \"required\": [\"title\", \"chart_plugin\", \"data\"]}"},{"line_number":771,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"ff82abbf_8934b694","line":768,"range":{"start_line":768,"start_character":8,"end_line":768,"end_character":37},"updated":"2017-11-27 16:56:19.000000000","message":"let\u0027s move it inside the data","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":765,"context_line":"        \"chart_plugin\": six.string_types,"},{"line_number":766,"context_line":"        \"data\": (list, dict),"},{"line_number":767,"context_line":"        \"label\": six.string_types,"},{"line_number":768,"context_line":"        \"conn_str\": six.string_types,"},{"line_number":769,"context_line":"        \"axis_label\": six.string_types},"},{"line_number":770,"context_line":"    \"required\": [\"title\", \"chart_plugin\", \"data\"]}"},{"line_number":771,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"df87a7cf_c0ff7c65","line":768,"range":{"start_line":768,"start_character":8,"end_line":768,"end_character":37},"in_reply_to":"ff82abbf_8934b694","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"}],"rally/task/processing/plot.py":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"8ecb994b31e050488a1650e4ef92254f7db35302","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from rally.common import objects"},{"line_number":26,"context_line":"from rally.common.plugin import plugin"},{"line_number":27,"context_line":"from rally.common import version"},{"line_number":28,"context_line":"from rally.plugins.openstack.embedcharts.osprofilerchart import OSProfilerChart"},{"line_number":29,"context_line":"from rally.task.processing import charts"},{"line_number":30,"context_line":"from rally.ui import utils as ui_utils"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_8fbfe85f","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":79},"updated":"2017-09-16 17:43:41.000000000","message":"from rally.plugins.openstack.embedcharts import osprofiler and #L96 should be osprofiler \u003d osprofiler.OSprofilerChat(workload) would be better.","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from rally.common import objects"},{"line_number":26,"context_line":"from rally.common.plugin import plugin"},{"line_number":27,"context_line":"from rally.common import version"},{"line_number":28,"context_line":"from rally.plugins.openstack.embedcharts.osprofilerchart import OSProfilerChart"},{"line_number":29,"context_line":"from rally.task.processing import charts"},{"line_number":30,"context_line":"from rally.ui import utils as ui_utils"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_2cdb547c","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":79},"in_reply_to":"5f2577a7_8fbfe85f","updated":"2017-09-18 06:34:28.000000000","message":"done. :)","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6ad5fb8346631a18c7d0fa43874b24f95f047d8d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                complete_chart[\"data\"] \u003d\\"},{"line_number":133,"context_line":"                    osprofiler.get_osprofiler_data(complete_chart[\"conn_str\"],"},{"line_number":134,"context_line":"                                                   complete_chart[\"data\"][0])"},{"line_number":135,"context_line":"                additional_libs \u003d True"},{"line_number":136,"context_line":"            complete_charts.append(complete_chart)"},{"line_number":137,"context_line":"        complete_output.append(complete_charts)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_694cb341","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":31},"updated":"2017-09-17 15:40:08.000000000","message":"Can we remove this param and adding all js what we need?","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                complete_chart[\"data\"] \u003d\\"},{"line_number":133,"context_line":"                    osprofiler.get_osprofiler_data(complete_chart[\"conn_str\"],"},{"line_number":134,"context_line":"                                                   complete_chart[\"data\"][0])"},{"line_number":135,"context_line":"                additional_libs \u003d True"},{"line_number":136,"context_line":"            complete_charts.append(complete_chart)"},{"line_number":137,"context_line":"        complete_output.append(complete_charts)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_acd8647a","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":31},"in_reply_to":"5f2577a7_694cb341","updated":"2017-09-18 06:34:28.000000000","message":"ye, it looks bad.. done.","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    atomic_pie \u003d charts.AtomicAvgChart(workload)"},{"line_number":94,"context_line":"    atomic_area \u003d charts.AtomicStackedAreaChart(workload)"},{"line_number":95,"context_line":"    atomic_hist \u003d charts.AtomicHistogramChart(workload)"},{"line_number":96,"context_line":"    osprofiler \u003d osprofilerchart.OSProfilerChart(workload)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    errors \u003d []"},{"line_number":99,"context_line":"    output_errors \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_054c859c","line":96,"range":{"start_line":96,"start_character":5,"end_line":96,"end_character":58},"updated":"2017-09-23 11:03:29.000000000","message":"What is a purpose to initialize it globally? it should not be called only in case of presence in a complete output.","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    osprofiler.get_osprofiler_data(complete_chart[\"conn_str\"],"},{"line_number":133,"context_line":"                                                   complete_chart[\"data\"][0])"},{"line_number":134,"context_line":"            complete_charts.append(complete_chart)"},{"line_number":135,"context_line":"        complete_output.append(complete_charts)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        for chart in (main_area, main_hist, main_stat, load_profile,"},{"line_number":138,"context_line":"                      atomic_pie, atomic_area, atomic_hist):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_657339e9","line":135,"range":{"start_line":135,"start_character":8,"end_line":135,"end_character":47},"updated":"2017-09-23 11:03:29.000000000","message":"I understand why you did L127-133, it is a result of a bad logic of complete charts...\n\nAs for additive data, the proper method render is called which helps to hide chart-inner details. We should do the same for complete charts. Please make one more patch(the first in the chain) which unifies charts and makes the things more flexible. So what I want to see:\n\n1) remove L122, 124.\n2) add `add_complete_data` method for chart base class, which will replace self._data with transmitted data.\n3) call method render at L126(old numbering)/134(new numbering)\n\nSuch thing will allow to get rid of L128-133 and make plot.py more generic.","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        name \u003d workload[\"name\"]"},{"line_number":183,"context_line":"        position[name] +\u003d 1"},{"line_number":184,"context_line":"        workload_cfg \u003d objects.Workload.to_task(workload)"},{"line_number":185,"context_line":"        workload_data \u003d _process_workload(workload,"},{"line_number":186,"context_line":"                                          workload_cfg, position[name])"},{"line_number":187,"context_line":"        p_workloads.append(workload_data)"},{"line_number":188,"context_line":"    return sorted(p_workloads,"},{"line_number":189,"context_line":"                  key\u003dlambda r: (r[\"cls\"], r[\"met\"], int(r[\"pos\"])))"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_a54a517d","line":187,"range":{"start_line":185,"start_character":8,"end_line":187,"end_character":41},"updated":"2017-09-23 11:03:29.000000000","message":"doesn\u0027t relate to the change, but anyway looks good.","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"}],"rally/ui/templates/libs/angular.1.3.3.min.js":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"8ecb994b31e050488a1650e4ef92254f7db35302","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" AngularJS v1.3.3"},{"line_number":3,"context_line":" (c) 2010-2014 Google, Inc. http://angularjs.org"},{"line_number":4,"context_line":" License: MIT"}],"source_content_type":"text/javascript","patch_set":9,"id":"5f2577a7_2f3d94dc","side":"PARENT","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":2},"updated":"2017-09-16 17:43:41.000000000","message":"Can we keep two version\u0027s angular?","commit_id":"6cd2a15afcabdfd3e0337bdbf8443f6c3c5225c9"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" AngularJS v1.3.3"},{"line_number":3,"context_line":" (c) 2010-2014 Google, Inc. http://angularjs.org"},{"line_number":4,"context_line":" License: MIT"}],"source_content_type":"text/javascript","patch_set":9,"id":"5f2577a7_ec678cb6","side":"PARENT","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":2},"in_reply_to":"5f2577a7_2f3d94dc","updated":"2017-09-18 06:34:28.000000000","message":"I think 1.6 and 1.3 is compatible. I generate the report lacally and chrome does not report an error. so I think there is no need to keep 1.3. :)","commit_id":"6cd2a15afcabdfd3e0337bdbf8443f6c3c5225c9"}],"rally/ui/templates/task/directive_widget.js":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"f090feea9efc90a32401b68636a74fb341e3c283","unresolved":false,"context_lines":[{"line_number":1,"context_line":"function changeFrameHeight(){"},{"line_number":2,"context_line":"\tvar ifm\u003d document.getElementById(\"embedchart\"); "},{"line_number":3,"context_line":"\tifm.height\u003ddocument.documentElement.clientHeight;"},{"line_number":4,"context_line":"\tifm.width\u003ddocument.documentElement.clientWidth;"},{"line_number":5,"context_line":"\t}"},{"line_number":6,"context_line":"window.onresize\u003dfunction(){  "},{"line_number":7,"context_line":"\tchangeFrameHeight();  "},{"line_number":8,"context_line":"\t} "},{"line_number":9,"context_line":"var widgetDirective \u003d function($compile) {"},{"line_number":10,"context_line":"  var Chart \u003d {"},{"line_number":11,"context_line":"    _render: function(node, data, chart, do_after){"}],"source_content_type":"text/javascript","patch_set":13,"id":"3f4b6375_caa73c0b","line":8,"range":{"start_line":2,"start_character":0,"end_line":8,"end_character":3},"updated":"2017-10-24 07:01:09.000000000","message":"/\\t\\/s and remove \\s at line end.","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"124181bace6e670562f127b129ccf4390ef272a7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"function changeFrameHeight(){"},{"line_number":2,"context_line":"\tvar ifm\u003d document.getElementById(\"embedchart\"); "},{"line_number":3,"context_line":"\tifm.height\u003ddocument.documentElement.clientHeight;"},{"line_number":4,"context_line":"\tifm.width\u003ddocument.documentElement.clientWidth;"},{"line_number":5,"context_line":"\t}"},{"line_number":6,"context_line":"window.onresize\u003dfunction(){  "},{"line_number":7,"context_line":"\tchangeFrameHeight();  "},{"line_number":8,"context_line":"\t} "},{"line_number":9,"context_line":"var widgetDirective \u003d function($compile) {"},{"line_number":10,"context_line":"  var Chart \u003d {"},{"line_number":11,"context_line":"    _render: function(node, data, chart, do_after){"}],"source_content_type":"text/javascript","patch_set":13,"id":"3f4b6375_23711245","line":8,"range":{"start_line":2,"start_character":0,"end_line":8,"end_character":3},"in_reply_to":"3f4b6375_caa73c0b","updated":"2017-10-26 09:25:13.000000000","message":"done :)","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"f090feea9efc90a32401b68636a74fb341e3c283","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"          /* NOTE(chenxu): tag \u003c\\/script\u003e in javascript string will be parsed incorrectly."},{"line_number":157,"context_line":"             so we convert \u003c\\/script\u003e to \u003c\\\\/script\u003e in python and convert it back here. */"},{"line_number":158,"context_line":"\t\t\t\t\tdata \u003d data.replace(/\\\\\\/script\u003e/ig, \"\\/script\u003e\");"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"\t\t  \t\tvar template \u003d \"\u003ciframe scrolling\u003d\u0027no\u0027 id\u003d\u0027embedchart\u0027 frameborder\u003d\u00270\u0027 onload\u003d\u0027changeFrameHeight()\u0027 style\u003d\u0027width:100%;\u0027\u003e\u003c/iframe\u003e\""},{"line_number":161,"context_line":"\t\t  \t\tvar el \u003d element.empty().append($compile(template)(scope)).children()[0];"},{"line_number":162,"context_line":"\t\t  \t\tvar iframe \u003d el.contentWindow || ( el.contentDocument.document || el.contentDocument);"},{"line_number":163,"context_line":"\t\t  \t\tiframe.document.open();"},{"line_number":164,"context_line":"\t\t  \t\tiframe.document.write(data);"},{"line_number":165,"context_line":"\t\t  \t\tiframe.document.close();"},{"line_number":166,"context_line":"        }"},{"line_number":167,"context_line":"        else {"},{"line_number":168,"context_line":"          var el_chart \u003d element.addClass(\"chart\").css({display:\"block\"});"}],"source_content_type":"text/javascript","patch_set":13,"id":"3f4b6375_8acee47f","line":165,"range":{"start_line":158,"start_character":0,"end_line":165,"end_character":30},"updated":"2017-10-24 07:01:09.000000000","message":"/\\t/\\s","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"124181bace6e670562f127b129ccf4390ef272a7","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"          /* NOTE(chenxu): tag \u003c\\/script\u003e in javascript string will be parsed incorrectly."},{"line_number":157,"context_line":"             so we convert \u003c\\/script\u003e to \u003c\\\\/script\u003e in python and convert it back here. */"},{"line_number":158,"context_line":"\t\t\t\t\tdata \u003d data.replace(/\\\\\\/script\u003e/ig, \"\\/script\u003e\");"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"\t\t  \t\tvar template \u003d \"\u003ciframe scrolling\u003d\u0027no\u0027 id\u003d\u0027embedchart\u0027 frameborder\u003d\u00270\u0027 onload\u003d\u0027changeFrameHeight()\u0027 style\u003d\u0027width:100%;\u0027\u003e\u003c/iframe\u003e\""},{"line_number":161,"context_line":"\t\t  \t\tvar el \u003d element.empty().append($compile(template)(scope)).children()[0];"},{"line_number":162,"context_line":"\t\t  \t\tvar iframe \u003d el.contentWindow || ( el.contentDocument.document || el.contentDocument);"},{"line_number":163,"context_line":"\t\t  \t\tiframe.document.open();"},{"line_number":164,"context_line":"\t\t  \t\tiframe.document.write(data);"},{"line_number":165,"context_line":"\t\t  \t\tiframe.document.close();"},{"line_number":166,"context_line":"        }"},{"line_number":167,"context_line":"        else {"},{"line_number":168,"context_line":"          var el_chart \u003d element.addClass(\"chart\").css({display:\"block\"});"}],"source_content_type":"text/javascript","patch_set":13,"id":"3f4b6375_e3941a39","line":165,"range":{"start_line":158,"start_character":0,"end_line":165,"end_character":30},"in_reply_to":"3f4b6375_8acee47f","updated":"2017-10-26 09:25:13.000000000","message":"Done","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":2,"context_line":"  var ifm\u003d document.getElementById(\"embedchart\");"},{"line_number":3,"context_line":"  ifm.height\u003ddocument.documentElement.clientHeight;"},{"line_number":4,"context_line":"  ifm.width\u003ddocument.documentElement.clientWidth;"},{"line_number":5,"context_line":"  }"},{"line_number":6,"context_line":"  window.onresize\u003dfunction(){"},{"line_number":7,"context_line":"  changeFrameHeight();"},{"line_number":8,"context_line":"  }"}],"source_content_type":"text/javascript","patch_set":20,"id":"ff82abbf_09e50609","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":2},"updated":"2017-11-27 16:56:19.000000000","message":"remove these 2 spaces","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":2,"context_line":"  var ifm\u003d document.getElementById(\"embedchart\");"},{"line_number":3,"context_line":"  ifm.height\u003ddocument.documentElement.clientHeight;"},{"line_number":4,"context_line":"  ifm.width\u003ddocument.documentElement.clientWidth;"},{"line_number":5,"context_line":"  }"},{"line_number":6,"context_line":"  window.onresize\u003dfunction(){"},{"line_number":7,"context_line":"  changeFrameHeight();"},{"line_number":8,"context_line":"  }"}],"source_content_type":"text/javascript","patch_set":20,"id":"ff82abbf_eb02a809","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":2},"in_reply_to":"ff82abbf_09e50609","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  ifm.height\u003ddocument.documentElement.clientHeight;"},{"line_number":4,"context_line":"  ifm.width\u003ddocument.documentElement.clientWidth;"},{"line_number":5,"context_line":"  }"},{"line_number":6,"context_line":"  window.onresize\u003dfunction(){"},{"line_number":7,"context_line":"  changeFrameHeight();"},{"line_number":8,"context_line":"  }"},{"line_number":9,"context_line":"var widgetDirective \u003d function($compile) {"}],"source_content_type":"text/javascript","patch_set":20,"id":"ff82abbf_49b8eee3","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"updated":"2017-11-27 16:56:19.000000000","message":"and here the same.","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  ifm.height\u003ddocument.documentElement.clientHeight;"},{"line_number":4,"context_line":"  ifm.width\u003ddocument.documentElement.clientWidth;"},{"line_number":5,"context_line":"  }"},{"line_number":6,"context_line":"  window.onresize\u003dfunction(){"},{"line_number":7,"context_line":"  changeFrameHeight();"},{"line_number":8,"context_line":"  }"},{"line_number":9,"context_line":"var widgetDirective \u003d function($compile) {"}],"source_content_type":"text/javascript","patch_set":20,"id":"ff82abbf_8b075c19","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"in_reply_to":"ff82abbf_49b8eee3","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eb42aafb8fe70860ddef2747415fdb40d5a56197","unresolved":false,"context_lines":[{"line_number":5,"context_line":"  }"},{"line_number":6,"context_line":"  window.onresize\u003dfunction(){"},{"line_number":7,"context_line":"  changeFrameHeight();"},{"line_number":8,"context_line":"  }"},{"line_number":9,"context_line":"var widgetDirective \u003d function($compile) {"},{"line_number":10,"context_line":"  var Chart \u003d {"},{"line_number":11,"context_line":"    _render: function(node, data, chart, do_after){"}],"source_content_type":"text/javascript","patch_set":20,"id":"ff82abbf_09ce6681","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":2},"updated":"2017-11-27 16:56:19.000000000","message":"redundant spaces ;)","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"5453b591cd6b9776c0a977b7beabf6517b8d7e34","unresolved":false,"context_lines":[{"line_number":5,"context_line":"  }"},{"line_number":6,"context_line":"  window.onresize\u003dfunction(){"},{"line_number":7,"context_line":"  changeFrameHeight();"},{"line_number":8,"context_line":"  }"},{"line_number":9,"context_line":"var widgetDirective \u003d function($compile) {"},{"line_number":10,"context_line":"  var Chart \u003d {"},{"line_number":11,"context_line":"    _render: function(node, data, chart, do_after){"}],"source_content_type":"text/javascript","patch_set":20,"id":"ff82abbf_ab0ca03b","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":2},"in_reply_to":"ff82abbf_09ce6681","updated":"2017-12-04 03:18:20.000000000","message":"Done","commit_id":"f19c9e972d4a42aac216ff27ba8b9657a3da0c7f"}],"rally/ui/templates/task/osprofiler_template.html":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"f090feea9efc90a32401b68636a74fb341e3c283","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        (function(angular) {"},{"line_number":97,"context_line":"            \u0027use strict\u0027;"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            var OSProfilerData \u003d $DATA;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            angular"},{"line_number":102,"context_line":"                .module(\u0027app\u0027, [\u0027ui.bootstrap\u0027, \u0027hljs\u0027])"}],"source_content_type":"text/html","patch_set":13,"id":"3f4b6375_ca597c35","line":99,"updated":"2017-10-24 07:01:09.000000000","message":"looks this line is wrong. $DATA should be replaced to multi-lines string","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"124181bace6e670562f127b129ccf4390ef272a7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        (function(angular) {"},{"line_number":97,"context_line":"            \u0027use strict\u0027;"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            var OSProfilerData \u003d $DATA;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            angular"},{"line_number":102,"context_line":"                .module(\u0027app\u0027, [\u0027ui.bootstrap\u0027, \u0027hljs\u0027])"}],"source_content_type":"text/html","patch_set":13,"id":"3f4b6375_633caa2e","line":99,"in_reply_to":"3f4b6375_ca597c35","updated":"2017-10-26 09:25:13.000000000","message":"I don\u0027t quite understand what you mean. $DATA will be raplaced by osprofiler data after read the template to rally . Could you describe your question in detail ? thank your for review :)","commit_id":"c6a97f82f09e4886d2c08242dea99ecd8a8f09a6"}],"rally/ui/templates/task/report.html":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6ad5fb8346631a18c7d0fa43874b24f95f047d8d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    {% if additional_libs %}"},{"line_number":30,"context_line":"    \u003clink rel\u003d\"stylesheet\" href\u003d\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\"\u003e"},{"line_number":31,"context_line":"    \u003clink rel\u003d\"stylesheet\" href\u003d\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/styles/github.min.css\"\u003e"},{"line_number":32,"context_line":"    \u003clink rel\u003d\"stylesheet\" href\u003d\"https://cxhuawei.github.io/osprofiler-private.css\"\u003e"},{"line_number":33,"context_line":"    {% endif %}"},{"line_number":34,"context_line":"  {% endif %}"},{"line_number":35,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.3.1.min.js\"\u003e\u003c/script\u003e"}],"source_content_type":"text/html","patch_set":9,"id":"5f2577a7_29522bdf","line":32,"updated":"2017-09-17 15:40:08.000000000","message":"if you have some css need to be merged, pls merge it in;)","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    {% if additional_libs %}"},{"line_number":30,"context_line":"    \u003clink rel\u003d\"stylesheet\" href\u003d\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\"\u003e"},{"line_number":31,"context_line":"    \u003clink rel\u003d\"stylesheet\" href\u003d\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/styles/github.min.css\"\u003e"},{"line_number":32,"context_line":"    \u003clink rel\u003d\"stylesheet\" href\u003d\"https://cxhuawei.github.io/osprofiler-private.css\"\u003e"},{"line_number":33,"context_line":"    {% endif %}"},{"line_number":34,"context_line":"  {% endif %}"},{"line_number":35,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.3.1.min.js\"\u003e\u003c/script\u003e"}],"source_content_type":"text/html","patch_set":9,"id":"5f2577a7_ac0bc4d3","line":32,"in_reply_to":"5f2577a7_29522bdf","updated":"2017-09-18 06:34:28.000000000","message":"done :)","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6ad5fb8346631a18c7d0fa43874b24f95f047d8d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  {% endif %}"},{"line_number":35,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.3.1.min.js\"\u003e\u003c/script\u003e"},{"line_number":36,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js\"\u003e\u003c/script\u003e"},{"line_number":37,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://pc035860.github.io/angular-highlightjs/angular-highlightjs.min.js\"\u003e\u003c/script\u003e"},{"line_number":38,"context_line":"{% endblock %}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"{% block js_before %}"}],"source_content_type":"text/html","patch_set":9,"id":"5f2577a7_09688f84","line":37,"range":{"start_line":37,"start_character":46,"end_line":37,"end_character":64},"updated":"2017-09-17 15:40:08.000000000","message":"Pls use the public css(js) as soon as possible, the private css would be unstable.","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  {% endif %}"},{"line_number":35,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.3.1.min.js\"\u003e\u003c/script\u003e"},{"line_number":36,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js\"\u003e\u003c/script\u003e"},{"line_number":37,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://pc035860.github.io/angular-highlightjs/angular-highlightjs.min.js\"\u003e\u003c/script\u003e"},{"line_number":38,"context_line":"{% endblock %}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"{% block js_before %}"}],"source_content_type":"text/html","patch_set":9,"id":"5f2577a7_ccd4d022","line":37,"range":{"start_line":37,"start_character":46,"end_line":37,"end_character":64},"in_reply_to":"5f2577a7_09688f84","updated":"2017-09-18 06:34:28.000000000","message":"angular-highlightjs.min.js looks like a personal file","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":299,"context_line":"    };"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    if (typeof angular \u003d\u003d\u003d \"object\") {"},{"line_number":302,"context_line":"      var OSProfilerData \u003d {}       "},{"line_number":303,"context_line":"      angular.module(\"App\", [\u0027ui.bootstrap\u0027, \u0027hljs\u0027])"},{"line_number":304,"context_line":"        .controller(\"Controller\", [\"$scope\", \"$location\", controllerFunction])"},{"line_number":305,"context_line":"        .directive(\"widget\", widgetDirective)"}],"source_content_type":"text/html","patch_set":10,"id":"7f515b1d_e535e9f8","line":302,"range":{"start_line":302,"start_character":6,"end_line":302,"end_character":36},"updated":"2017-09-23 11:03:29.000000000","message":"It is the most problem. It will lead to a constant outdated view of a report. We will need to check that original osprofiler report is not updated; that the version of our and their libs do not conflict and so on. Also, it is a big hardcode for the OSProfiler and OpenStack in general. In near future, we are planning to add plugins for Kubernetes, Docker and other platforms. Each of these platforms possibly has own profilers and other things which we will try to integrate. It will be a pain to make compatible code with all these zoo :)\n\n\nAn alternative solution for embedding osprofiler to our reports without hardcoding is something like \"iframe\". It allows to take the complete html document of osprofiler(actually, take many html documents) and put it on the block of our reports. As a positive side of such block is isolation, so the libs and js of osprofiler reports will not affect our reports at all.\n\nAn example of putting the html document into iframe(not loading from the external url) you can find here https://stackoverflow.com/questions/620881/putting-html-inside-an-iframe-using-javascript/18957141#18957141 .\n\nSince such feature can be useful not only for OSProfiler reports, let\u0027s create a new generic widget which will make the magic of embedding the string with html document into the iframe. OSProfiler chart will use this widget and just retrieve the results, make an html report and put it in the docstring.","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"}],"rally/ui/templates/verification/report.html":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a8019791dcc3f5cfcc7c23e4b8e7a8b722f4f450","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    {{ include_raw_file(\"/libs/angular.1.6.0.min.js\") }}"},{"line_number":11,"context_line":"  \u003c/script\u003e"},{"line_number":12,"context_line":"  {% else %}"},{"line_number":13,"context_line":"  \u003cscript type\u003d\"text/javascript\" src\u003d\"https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js\"\u003e\u003c/script\u003e"},{"line_number":14,"context_line":"  {% endif %}"},{"line_number":15,"context_line":"{% endblock %}"},{"line_number":16,"context_line":""}],"source_content_type":"text/html","patch_set":10,"id":"7f515b1d_c53aede5","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":117},"updated":"2017-09-23 11:03:29.000000000","message":"btw, I\u0027m not against for updating angular version, but let\u0027s do it in the separate patch.","commit_id":"3f48d62af10c14688c048e13c9ad51069fe0e7df"}],"tests/unit/plugins/openstack/embedcharts/test_osprofilerchart.py":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6ad5fb8346631a18c7d0fa43874b24f95f047d8d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013: Mirantis Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_8980ff47","line":1,"updated":"2017-09-17 15:40:08.000000000","message":"This line could be removed;)","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"},{"author":{"_account_id":26025,"name":"chenxu","email":"xuchen1990xx@gmail.com","username":"chenxu"},"change_message_id":"05bb12aa43c8dd89122c5a91b49831605d956fb2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013: Mirantis Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_acd98457","line":1,"in_reply_to":"5f2577a7_8980ff47","updated":"2017-09-18 06:34:28.000000000","message":"Done :)","commit_id":"f5e2899eb102240107308a696ba1ee439082a9a2"}]}
