)]}'
{"monasca_api/common/repositories/influxdb/metrics_repository.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"1b04ca630bc2d23abfe98fdeeabeab1b4e5f7c4e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \u0027\u0027\u0027"},{"line_number":69,"context_line":"        LOG.info(\u0027Initialize InfluxDB serie builders \u003c  v0.11.0\u0027)"},{"line_number":70,"context_line":"        self._build_serie_dimension_names \u003d \\"},{"line_number":71,"context_line":"            self._build_serie_dimension_names_to_v0_11_0"},{"line_number":72,"context_line":"        self._build_serie_dimension_values \u003d \\"},{"line_number":73,"context_line":"            self._build_serie_dimension_values_to_v0_11_0"},{"line_number":74,"context_line":"        self._build_serie_metric_list \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_204d8172","line":71,"updated":"2017-01-11 12:32:41.000000000","message":"Any reason to have those changed ?","commit_id":"d13ea9402aae8c47a453dd64c5ac4c90857d1e7c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5f10fcc1e3eb1060b142723f60726618cb6c40a9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \u0027\u0027\u0027"},{"line_number":69,"context_line":"        LOG.info(\u0027Initialize InfluxDB serie builders \u003c  v0.11.0\u0027)"},{"line_number":70,"context_line":"        self._build_serie_dimension_names \u003d \\"},{"line_number":71,"context_line":"            self._build_serie_dimension_names_to_v0_11_0"},{"line_number":72,"context_line":"        self._build_serie_dimension_values \u003d \\"},{"line_number":73,"context_line":"            self._build_serie_dimension_values_to_v0_11_0"},{"line_number":74,"context_line":"        self._build_serie_metric_list \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_80a29bfa","line":71,"in_reply_to":"ba5201f7_204d8172","updated":"2017-01-11 17:20:33.000000000","message":"Not really these lines were just too long. I will change them back. Thanks!","commit_id":"d13ea9402aae8c47a453dd64c5ac4c90857d1e7c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"1b04ca630bc2d23abfe98fdeeabeab1b4e5f7c4e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        https://github.com/influxdata/influxdb/blob/master/CHANGELOG.md#v0110-2016-03-22"},{"line_number":81,"context_line":"        \u0027\u0027\u0027"},{"line_number":82,"context_line":"        LOG.info(\u0027Initialize InfluxDB serie builders \u003e\u003d  v0.11.0\u0027)"},{"line_number":83,"context_line":"        self._build_serie_dimension_names \u003d \\"},{"line_number":84,"context_line":"            self._build_serie_dimension_names_from_v0_11_0"},{"line_number":85,"context_line":"        self._build_serie_dimension_values \u003d \\"},{"line_number":86,"context_line":"            self._build_serie_dimension_values_from_v0_11_0"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_4050c50a","line":83,"updated":"2017-01-11 12:32:41.000000000","message":"Any reason to have those changed ?","commit_id":"d13ea9402aae8c47a453dd64c5ac4c90857d1e7c"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"ab1c726fb9783d6e5245679000c5e145781d62a3","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            from_with_clause +\u003d \u0027 from \"{}\"\u0027.format(metric_name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if dimension_name:"},{"line_number":139,"context_line":"            from_with_clause +\u003d \u0027 with key \u003d {}\u0027.format(dimension_name)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        where_clause \u003d self._build_where_clause(None, None, tenant_id, region)"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_0e72e0ad","line":139,"range":{"start_line":139,"start_character":45,"end_line":139,"end_character":47},"updated":"2017-01-18 20:58:49.000000000","message":"Are there any problems with special characters in dimension_name?","commit_id":"dd01013a80f8fdd315a7416b2f26115f106fd801"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"b3fefef77f9dddf3663a23eddbabeb5eb5368e44","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            from_with_clause +\u003d \u0027 from \"{}\"\u0027.format(metric_name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if dimension_name:"},{"line_number":139,"context_line":"            from_with_clause +\u003d \u0027 with key \u003d {}\u0027.format(dimension_name)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        where_clause \u003d self._build_where_clause(None, None, tenant_id, region)"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_af3aede4","line":139,"range":{"start_line":139,"start_character":45,"end_line":139,"end_character":47},"in_reply_to":"7a3c09a3_0e72e0ad","updated":"2017-01-23 18:46:15.000000000","message":"One thing I can think of is dimension name start with \u0027_\u0027. I should add a check here to make sure dimension_name doesn\u0027t start with \u0027_\u0027. Thanks! Is there any other special character you have in mind?","commit_id":"dd01013a80f8fdd315a7416b2f26115f106fd801"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"204ee35ab3a7c45c3a7f464ca3b41a9eef588a3e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                continue"},{"line_number":382,"context_line":"            columns \u003d series[\u0027columns\u0027]"},{"line_number":383,"context_line":"            if \u0027tagKey\u0027 not in columns:"},{"line_number":384,"context_line":"                continue"},{"line_number":385,"context_line":"            if u\u0027values\u0027 not in series:"},{"line_number":386,"context_line":"                continue"},{"line_number":387,"context_line":"            for value in series[u\u0027values\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_6059da34","line":384,"updated":"2017-01-18 11:03:00.000000000","message":"\u0027tagKey\u0027 doesn\u0027t look like it is used anywhere. Are you sure this is correct?","commit_id":"dd01013a80f8fdd315a7416b2f26115f106fd801"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"8a37b92e4eb8916ecefa6f9c79e56b6f2171b6aa","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                continue"},{"line_number":382,"context_line":"            columns \u003d series[\u0027columns\u0027]"},{"line_number":383,"context_line":"            if \u0027tagKey\u0027 not in columns:"},{"line_number":384,"context_line":"                continue"},{"line_number":385,"context_line":"            if u\u0027values\u0027 not in series:"},{"line_number":386,"context_line":"                continue"},{"line_number":387,"context_line":"            for value in series[u\u0027values\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_dde265d4","line":384,"in_reply_to":"7a3c09a3_6059da34","updated":"2017-01-18 16:16:16.000000000","message":"Yes. \u0027tagKey\u0027 is just the value of [\u0027columns\u0027] in SHOW TAG KEYS result. I have an example of how this series_names.raw[\u0027series\u0027] looks like:\n\nseries_names.raw[\u0027series\u0027] \u003d \n[{u\u0027values\u0027: [[u\u0027_region\u0027], [u\u0027_tenant_id\u0027], [u\u0027name_1\u0027], [u\u0027name_2\u0027]], \nu\u0027name\u0027: u\u0027tempest-1280133362\u0027, \nu\u0027columns\u0027: [u\u0027tagKey\u0027]}, \n{u\u0027values\u0027: [[u\u0027_region\u0027], [u\u0027_tenant_id\u0027], [u\u0027name_1\u0027]], \nu\u0027name\u0027: u\u0027tempest-438635676\u0027, \nu\u0027columns\u0027: [u\u0027tagKey\u0027]}, \n{u\u0027values\u0027: [[u\u0027_region\u0027], [u\u0027_tenant_id\u0027], [u\u0027name_3\u0027]], \nu\u0027name\u0027: u\u0027tempest-657098038\u0027, \nu\u0027columns\u0027: [u\u0027tagKey\u0027]}]","commit_id":"dd01013a80f8fdd315a7416b2f26115f106fd801"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"b3fefef77f9dddf3663a23eddbabeb5eb5368e44","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                continue"},{"line_number":382,"context_line":"            columns \u003d series[\u0027columns\u0027]"},{"line_number":383,"context_line":"            if \u0027tagKey\u0027 not in columns:"},{"line_number":384,"context_line":"                continue"},{"line_number":385,"context_line":"            if u\u0027values\u0027 not in series:"},{"line_number":386,"context_line":"                continue"},{"line_number":387,"context_line":"            for value in series[u\u0027values\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_e75fc7e2","line":384,"in_reply_to":"7a3c09a3_ab48de8b","updated":"2017-01-23 18:46:15.000000000","message":"There will be no tagKey when the query is not SHOW TAG KEYS. For example, SHOW TAG VALUES return something like:\nseries_names.raw[\u0027series\u0027] \u003d \n[{u\u0027values\u0027: [[u\u0027value_1\u0027], [u\u0027value_2\u0027], [u\u0027value_3\u0027]], \nu\u0027name\u0027: u\u0027name_1TagValues\u0027, \nu\u0027columns\u0027: [u\u0027name_1\u0027]}]","commit_id":"dd01013a80f8fdd315a7416b2f26115f106fd801"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"ab1c726fb9783d6e5245679000c5e145781d62a3","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                continue"},{"line_number":382,"context_line":"            columns \u003d series[\u0027columns\u0027]"},{"line_number":383,"context_line":"            if \u0027tagKey\u0027 not in columns:"},{"line_number":384,"context_line":"                continue"},{"line_number":385,"context_line":"            if u\u0027values\u0027 not in series:"},{"line_number":386,"context_line":"                continue"},{"line_number":387,"context_line":"            for value in series[u\u0027values\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_ab48de8b","line":384,"in_reply_to":"7a3c09a3_dde265d4","updated":"2017-01-18 20:58:49.000000000","message":"So, in what case would there be no tagKey?","commit_id":"dd01013a80f8fdd315a7416b2f26115f106fd801"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"536dcc685fcfa39213374fc9634c01641b05986e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if metric_name:"},{"line_number":136,"context_line":"            from_with_clause +\u003d \u0027 from \"{}\"\u0027.format(metric_name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if dimension_name and not dimension_name.startswith(u\u0027_\u0027):"},{"line_number":139,"context_line":"            from_with_clause +\u003d \u0027 with key \u003d {}\u0027.format(dimension_name)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        where_clause \u003d self._build_where_clause(None, None, tenant_id, region)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a461143_1069d2be","line":138,"updated":"2017-01-26 22:58:15.000000000","message":"Wouldn\u0027t invalid characters like \"_\" be validated and checked by the API?\n\nUnfortunately, I don\u0027t think we are validating the query in that case. The spec says the following: https://github.com/openstack/monasca-api/blob/master/docs/monasca-api-spec.md#dimensions\n\nSo, I would expect to see the dimension validated in the API, but it wouldn\u0027t or shouldn\u0027t be necessary to validate here, down in the repository.\n\nFor example, see https://github.com/openstack/monasca-api/blob/master/monasca_api/v2/reference/metrics.py#L343, but I\u0027m not seeing any validation on the dimenion name.","commit_id":"5e5225e3c6bc5d4fce262118e54760437f42d670"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5087a8d125ec61f40a1b8553f7ba9f52256fd53c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if metric_name:"},{"line_number":136,"context_line":"            from_with_clause +\u003d \u0027 from \"{}\"\u0027.format(metric_name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if dimension_name and not dimension_name.startswith(u\u0027_\u0027):"},{"line_number":139,"context_line":"            from_with_clause +\u003d \u0027 with key \u003d {}\u0027.format(dimension_name)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        where_clause \u003d self._build_where_clause(None, None, tenant_id, region)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a461143_709bf672","line":138,"in_reply_to":"3a461143_1069d2be","updated":"2017-01-26 23:01:53.000000000","message":"I totally agree with you. Joe and I just talked about this and we both think we should add validation in the api for both dimension name and dimension value. Ryan is currently working on that piece of code right now in review https://review.openstack.org/#/c/416325/. I will talk to him about this and resolve it. Thanks!","commit_id":"5e5225e3c6bc5d4fce262118e54760437f42d670"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"aee374bf08b115ab5a479d154c2edfbfe51c0d34","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if metric_name:"},{"line_number":136,"context_line":"            from_with_clause +\u003d \u0027 from \"{}\"\u0027.format(metric_name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if dimension_name and not dimension_name.startswith(u\u0027_\u0027):"},{"line_number":139,"context_line":"            from_with_clause +\u003d \u0027 with key \u003d {}\u0027.format(dimension_name)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        where_clause \u003d self._build_where_clause(None, None, tenant_id, region)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a461143_0f5fd30e","line":138,"in_reply_to":"3a461143_2f272fb7","updated":"2017-01-27 17:00:35.000000000","message":"Sounds good! Thanks.","commit_id":"5e5225e3c6bc5d4fce262118e54760437f42d670"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"5518c8c11944750a924241b7cfd37d613238c313","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if metric_name:"},{"line_number":136,"context_line":"            from_with_clause +\u003d \u0027 from \"{}\"\u0027.format(metric_name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if dimension_name and not dimension_name.startswith(u\u0027_\u0027):"},{"line_number":139,"context_line":"            from_with_clause +\u003d \u0027 with key \u003d {}\u0027.format(dimension_name)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        where_clause \u003d self._build_where_clause(None, None, tenant_id, region)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a461143_2f272fb7","line":138,"in_reply_to":"3a461143_709bf672","updated":"2017-01-27 16:57:31.000000000","message":"So, I think if we remove this check, then this review should be good to go then. I don\u0027t think we need to wait on Ryan\u0027s review.","commit_id":"5e5225e3c6bc5d4fce262118e54760437f42d670"}]}
