)]}'
{"monasca_api/common/repositories/mysql/alarms_repository.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_b7840a0b","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":75},"updated":"2017-01-31 01:51:25.000000000","message":"Copyright","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_c1e0db2b","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":75},"in_reply_to":"3a461143_b7840a0b","updated":"2017-01-31 16:12:48.000000000","message":"Done","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"}],"monasca_api/common/repositories/sqla/alarms_repository.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2014 Hewlett-Packard"},{"line_number":3,"context_line":"# Copyright 2016 FUJITSU LIMITED"},{"line_number":4,"context_line":"# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_97af0e7c","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":28},"updated":"2017-01-31 01:51:25.000000000","message":"Delete this one","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2014 Hewlett-Packard"},{"line_number":3,"context_line":"# Copyright 2016 FUJITSU LIMITED"},{"line_number":4,"context_line":"# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_01e74340","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":28},"in_reply_to":"3a461143_97af0e7c","updated":"2017-01-31 16:12:48.000000000","message":"Done","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2014 Hewlett-Packard"},{"line_number":3,"context_line":"# Copyright 2016 FUJITSU LIMITED"},{"line_number":4,"context_line":"# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_b7b24ae3","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":70},"updated":"2017-01-31 01:51:25.000000000","message":"Update this one","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2014 Hewlett-Packard"},{"line_number":3,"context_line":"# Copyright 2016 FUJITSU LIMITED"},{"line_number":4,"context_line":"# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_41d30b60","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":70},"in_reply_to":"3a461143_b7b24ae3","updated":"2017-01-31 16:12:48.000000000","message":"Done","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"}],"monasca_api/tests/test_a_repository.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cray"},{"line_number":2,"context_line":"# Copyright 2016 FUJITSU LIMITED"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_57e046cd","line":3,"updated":"2017-01-31 01:51:25.000000000","message":"Add Copyright","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cray"},{"line_number":2,"context_line":"# Copyright 2016 FUJITSU LIMITED"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_a1ccafbb","line":3,"in_reply_to":"3a461143_57e046cd","updated":"2017-01-31 16:12:48.000000000","message":"Done","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"}],"monasca_api/v2/common/validation.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d505cb50203784547504ab5b5c4b186058f18802","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2015-2017 Hewlett Packard Enterprise Development Company LP"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_ee975438","line":1,"range":{"start_line":1,"start_character":65,"end_line":1,"end_character":72},"updated":"2017-01-18 21:05:40.000000000","message":"Need to remove Company","commit_id":"ec9a9fcc32c6793cbd4d4b8f69be3393c7d28287"}],"monasca_api/v2/reference/alarms.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d505cb50203784547504ab5b5c4b186058f18802","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014-2017 Hewlett Packard Enterprise Development Company LP"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_8ea9707e","line":1,"range":{"start_line":1,"start_character":61,"end_line":1,"end_character":68},"updated":"2017-01-18 21:05:40.000000000","message":"Ditto","commit_id":"ec9a9fcc32c6793cbd4d4b8f69be3393c7d28287"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"5a44bb6cb40bc2a8593e935b6839e5b0caefd097","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            self._validate_group_by(query_parms[\u0027group_by\u0027])"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        # ensure metric_dimensions is a list"},{"line_number":387,"context_line":"        if \u0027metric_dimensions\u0027 in query_parms and isinstance(query_parms[\u0027metric_dimensions\u0027], str):"},{"line_number":388,"context_line":"            query_parms[\u0027metric_dimensions\u0027] \u003d query_parms[\u0027metric_dimensions\u0027].split(\u0027,\u0027)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a461143_593849d3","line":387,"updated":"2017-02-01 06:36:49.000000000","message":"Shouldn\u0027t this code be similar(same) to the one from L#133","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cd2be70f8d0d19b9f751e0d10559aa44c9f4918a","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            self._validate_group_by(query_parms[\u0027group_by\u0027])"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        # ensure metric_dimensions is a list"},{"line_number":387,"context_line":"        if \u0027metric_dimensions\u0027 in query_parms and isinstance(query_parms[\u0027metric_dimensions\u0027], str):"},{"line_number":388,"context_line":"            query_parms[\u0027metric_dimensions\u0027] \u003d query_parms[\u0027metric_dimensions\u0027].split(\u0027,\u0027)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_0ee2192f","line":387,"in_reply_to":"3a461143_593849d3","updated":"2017-02-08 16:34:48.000000000","message":"Good point, I will check for other areas like this as well.","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"5a44bb6cb40bc2a8593e935b6839e5b0caefd097","unresolved":false,"context_lines":[{"line_number":505,"context_line":"                            limit):"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        # get_alarms expects \u0027metric_dimensions\u0027 for dimensions key."},{"line_number":508,"context_line":"        if \u0027dimensions\u0027 in query_parms:"},{"line_number":509,"context_line":"            dimensions \u003d query_parms[\u0027dimensions\u0027]"},{"line_number":510,"context_line":"            new_query_parms \u003d {\u0027metric_dimensions\u0027: dimensions}"},{"line_number":511,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a461143_99455144","line":508,"updated":"2017-02-01 06:36:49.000000000","message":"Seems like this if is not redundant + I think since you now want to have dimensions in query_params it might be clearer to just change _alarm_history_list signature to accept one extra param ```dimensions``` which by the mean of call helpers.get_query_dimensions you always assume to be at least empty dictionary.\n\nThough the second comment you might want to leave behind as it seems to be common patter in this resource to add stuff into ```query_params```","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cd2be70f8d0d19b9f751e0d10559aa44c9f4918a","unresolved":false,"context_lines":[{"line_number":505,"context_line":"                            limit):"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        # get_alarms expects \u0027metric_dimensions\u0027 for dimensions key."},{"line_number":508,"context_line":"        if \u0027dimensions\u0027 in query_parms:"},{"line_number":509,"context_line":"            dimensions \u003d query_parms[\u0027dimensions\u0027]"},{"line_number":510,"context_line":"            new_query_parms \u003d {\u0027metric_dimensions\u0027: dimensions}"},{"line_number":511,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_ae4e6538","line":508,"in_reply_to":"3a461143_99455144","updated":"2017-02-08 16:34:48.000000000","message":"I was hoping not to touch too many things in the patch, but I will take a second look at this. Perhaps it can be simplified.","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"}],"monasca_api/v2/reference/helpers.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"c8338f9fa43a12cfc1d1546d7775520b4262b179","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import falcon"},{"line_number":20,"context_line":"import monasca_common.validation.metrics as metric_validation"},{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import simplejson"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_eedc5fe6","line":20,"updated":"2017-01-27 08:48:31.000000000","message":"It should be\n\n from monasca_common.validation import metrics\n\nor if you prefer it that way\n\n from monasca_common.validation import metrics as metric_validation\n\nso sth like in alarm_definitions.py file","commit_id":"a7884bc102f248c78a7bfea341696d1da5c6b262"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cray Inc. All Rights Reserved."},{"line_number":2,"context_line":"# (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_97346e4a","line":2,"range":{"start_line":2,"start_character":21,"end_line":2,"end_character":25},"updated":"2017-01-31 01:51:25.000000000","message":"Copyright","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cray Inc. All Rights Reserved."},{"line_number":2,"context_line":"# (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_e1c23784","line":2,"range":{"start_line":2,"start_character":21,"end_line":2,"end_character":25},"in_reply_to":"3a461143_97346e4a","updated":"2017-01-31 16:12:48.000000000","message":"Done","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        for key, value in dimensions.items():"},{"line_number":305,"context_line":"            if key.startswith(\u0027_\u0027):"},{"line_number":306,"context_line":"                raise Exception(\"Dimensions may not start with \u0027_\u0027\")"},{"line_number":307,"context_line":"            metric_validation.validate_dimension_key(key)"},{"line_number":308,"context_line":"            if value:"},{"line_number":309,"context_line":"                if \u0027|\u0027 in value:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_17207ef6","line":306,"range":{"start_line":306,"start_character":33,"end_line":306,"end_character":43},"updated":"2017-01-31 01:51:25.000000000","message":"I prefer to actually tell them which one is wrong","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        for key, value in dimensions.items():"},{"line_number":305,"context_line":"            if key.startswith(\u0027_\u0027):"},{"line_number":306,"context_line":"                raise Exception(\"Dimensions may not start with \u0027_\u0027\")"},{"line_number":307,"context_line":"            metric_validation.validate_dimension_key(key)"},{"line_number":308,"context_line":"            if value:"},{"line_number":309,"context_line":"                if \u0027|\u0027 in value:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_413a2b9a","line":306,"range":{"start_line":306,"start_character":33,"end_line":306,"end_character":43},"in_reply_to":"3a461143_17207ef6","updated":"2017-01-31 16:12:48.000000000","message":"Done","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6024dcea63b7a6028b9b19711656bcf47420c7db","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                    metric_validation.validate_dimension_value(key, value)"},{"line_number":315,"context_line":"    except Exception as ex:"},{"line_number":316,"context_line":"        LOG.debug(ex)"},{"line_number":317,"context_line":"        raise HTTPUnprocessableEntityError(\"Unprocessable Entity\", ex.message)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"def paginate(resource, uri, limit):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_d770b60d","line":317,"range":{"start_line":317,"start_character":43,"end_line":317,"end_character":44},"updated":"2017-01-31 01:51:25.000000000","message":"Why the change to double quotes?","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"2340f861d28cb8bafcb0b436ba87d73ab9346519","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                    metric_validation.validate_dimension_value(key, value)"},{"line_number":315,"context_line":"    except Exception as ex:"},{"line_number":316,"context_line":"        LOG.debug(ex)"},{"line_number":317,"context_line":"        raise HTTPUnprocessableEntityError(\"Unprocessable Entity\", ex.message)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"def paginate(resource, uri, limit):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_a143cf11","line":317,"range":{"start_line":317,"start_character":43,"end_line":317,"end_character":44},"in_reply_to":"3a461143_d770b60d","updated":"2017-01-31 16:12:48.000000000","message":"Not sure how that happened, but reverted.","commit_id":"5ed983e2e0917e7056086deb6a11727a88fdd2b9"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"5a44bb6cb40bc2a8593e935b6839e5b0caefd097","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    :param name: Query param name."},{"line_number":285,"context_line":"    :raises falcon.HTTPBadRequest: If name is not valid."},{"line_number":286,"context_line":"    \"\"\""},{"line_number":287,"context_line":"    if not name:"},{"line_number":288,"context_line":"        return"},{"line_number":289,"context_line":"    try:"},{"line_number":290,"context_line":"        metric_validation.validate_name(name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a461143_396b7db8","line":287,"updated":"2017-02-01 06:36:49.000000000","message":"NIT@FutureRequest: maybe we should move it to monasca_common in another change ? and clear code later on here","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cd2be70f8d0d19b9f751e0d10559aa44c9f4918a","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    :param name: Query param name."},{"line_number":285,"context_line":"    :raises falcon.HTTPBadRequest: If name is not valid."},{"line_number":286,"context_line":"    \"\"\""},{"line_number":287,"context_line":"    if not name:"},{"line_number":288,"context_line":"        return"},{"line_number":289,"context_line":"    try:"},{"line_number":290,"context_line":"        metric_validation.validate_name(name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_0e8bf968","line":287,"in_reply_to":"3a461143_396b7db8","updated":"2017-02-08 16:34:48.000000000","message":"This could be moved to common, but I\u0027m not sure I see the benefit. The API tends to have different requirements for validation than internal-only components, so having a separate method here makes sense to me.","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"5a44bb6cb40bc2a8593e935b6839e5b0caefd097","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    try:"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        for key, value in dimensions.items():"},{"line_number":305,"context_line":"            if key.startswith(\u0027_\u0027):"},{"line_number":306,"context_line":"                raise Exception(\"Dimension key {} may not start with \u0027_\u0027\".format(key))"},{"line_number":307,"context_line":"            metric_validation.validate_dimension_key(key)"},{"line_number":308,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a461143_596689ed","line":305,"updated":"2017-02-01 06:36:49.000000000","message":"NIT@FutureRequest: maybe we should move it to monasca_common in another change ? and clear code later on here","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"cd2be70f8d0d19b9f751e0d10559aa44c9f4918a","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    try:"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        for key, value in dimensions.items():"},{"line_number":305,"context_line":"            if key.startswith(\u0027_\u0027):"},{"line_number":306,"context_line":"                raise Exception(\"Dimension key {} may not start with \u0027_\u0027\".format(key))"},{"line_number":307,"context_line":"            metric_validation.validate_dimension_key(key)"},{"line_number":308,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_6e563d07","line":305,"in_reply_to":"3a461143_596689ed","updated":"2017-02-08 16:34:48.000000000","message":"The validation here doesn\u0027t really fit into other components, since it is focused toward outside access of data. Other components will most likely need the basic validation already available in common.","commit_id":"0f4ab5fa41875e60acc0ba09cfc045a7e3d41328"}],"monasca_api/v2/reference/metrics.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d505cb50203784547504ab5b5c4b186058f18802","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        try:"},{"line_number":101,"context_line":"            validate(metrics)"},{"line_number":102,"context_line":"        except Exception as ex:"},{"line_number":103,"context_line":"            raise HTTPUnprocessableEntityError(\"Unprocessable Entity\", ex.message)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        tenant_id \u003d ("},{"line_number":106,"context_line":"            helpers.get_x_tenant_or_tenant_id(req,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_aec54c0b","line":103,"range":{"start_line":103,"start_character":71,"end_line":103,"end_character":81},"updated":"2017-01-18 21:05:40.000000000","message":"In monasca_api/v2/reference/alarms.py, you use str(ex), which is correct?","commit_id":"ec9a9fcc32c6793cbd4d4b8f69be3393c7d28287"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"6038b6452daab1eb818ba497c3fea9adf7ac4398","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            helpers.get_x_tenant_or_tenant_id(req,"},{"line_number":136,"context_line":"                                              self._delegate_authorized_roles))"},{"line_number":137,"context_line":"        name \u003d helpers.get_query_name(req)"},{"line_number":138,"context_line":"        helpers.validate_query_name(name)"},{"line_number":139,"context_line":"        dimensions \u003d helpers.get_query_dimensions(req)"},{"line_number":140,"context_line":"        helpers.validate_query_dimensions(dimensions)"},{"line_number":141,"context_line":"        offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_4f405457","side":"PARENT","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":41},"updated":"2017-01-25 23:42:59.000000000","message":"same here","commit_id":"0aeb52c27e761bdbea156cdcce83e2ba38423e19"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c6434ecd786ee56ce8199cf294bcdd47169da25e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        name \u003d helpers.get_query_name(req)"},{"line_number":138,"context_line":"        helpers.validate_query_name(name)"},{"line_number":139,"context_line":"        dimensions \u003d helpers.get_query_dimensions(req)"},{"line_number":140,"context_line":"        helpers.validate_query_dimensions(dimensions)"},{"line_number":141,"context_line":"        offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":142,"context_line":"        start_timestamp \u003d helpers.get_query_starttime_timestamp(req, False)"},{"line_number":143,"context_line":"        end_timestamp \u003d helpers.get_query_endtime_timestamp(req, False)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_8f231c05","side":"PARENT","line":140,"range":{"start_line":140,"start_character":8,"end_line":140,"end_character":53},"updated":"2017-01-25 23:29:09.000000000","message":"Can we use the validation functions from monasca_common for here too?","commit_id":"0aeb52c27e761bdbea156cdcce83e2ba38423e19"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"6038b6452daab1eb818ba497c3fea9adf7ac4398","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":142,"context_line":"        start_timestamp \u003d helpers.get_query_starttime_timestamp(req, False)"},{"line_number":143,"context_line":"        end_timestamp \u003d helpers.get_query_endtime_timestamp(req, False)"},{"line_number":144,"context_line":"        helpers.validate_start_end_timestamps(start_timestamp, end_timestamp)"},{"line_number":145,"context_line":"        result \u003d self._list_metrics(tenant_id, name,"},{"line_number":146,"context_line":"                                    dimensions, req.uri,"},{"line_number":147,"context_line":"                                    offset, req.limit,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_6f0c3043","side":"PARENT","line":144,"range":{"start_line":144,"start_character":8,"end_line":144,"end_character":77},"updated":"2017-01-25 23:42:59.000000000","message":"same here","commit_id":"0aeb52c27e761bdbea156cdcce83e2ba38423e19"}]}
