)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13192,"name":"Souville","display_name":"Bertrand Souville","email":"souville@docomolab-euro.com","username":"bertys"},"change_message_id":"86715987a641f1f978ef02b7954745d8ab1e25c9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Now it does a validation check against the input and gives a"},{"line_number":12,"context_line":"http 400 error message."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: 1467317"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ibfca9c7e4ec0c1b37272fc410df36ff43a3eb3f2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5f7c97a3_84231dbe","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":19},"updated":"2018-07-09 13:25:39.000000000","message":"Correct link?","commit_id":"02342681c49f416e0fbeca2e9e90c80bffd3ac4d"}],"aodh/api/controllers/v2/alarm_rules/event.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b6e6474b6b1ab85bc6e4117b25f4934611959a9e","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def validate_alarm(cls, alarm):"},{"line_number":46,"context_line":"        def field_validation(value):"},{"line_number":47,"context_line":"            result \u003d re.match(\"^[a-zA-Z0-9_-.*\u0027]*$\", value)"},{"line_number":48,"context_line":"            return result.string"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ed46f2a7","line":46,"updated":"2018-07-02 13:07:28.000000000","message":"Use voluptuous.Match ?","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b6e6474b6b1ab85bc6e4117b25f4934611959a9e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            result \u003d re.match(\"^[a-zA-Z0-9_-.*\u0027]*$\", value)"},{"line_number":48,"context_line":"            return result.string"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        def op_validation(value):"},{"line_number":51,"context_line":"            if value in base.operation_kind:"},{"line_number":52,"context_line":"                return value"},{"line_number":53,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_6dd0a2c9","line":50,"updated":"2018-07-02 13:07:28.000000000","message":"Ditto, you can just validate that directly with voluptuous by using\nvoluptuous.In","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b6e6474b6b1ab85bc6e4117b25f4934611959a9e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            else:"},{"line_number":54,"context_line":"                base.ClientSideError(\u0027Please check your query\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        schema \u003d Schema({\"field\": field_validation, \"op\": op_validation,"},{"line_number":57,"context_line":"                                                    \"value\": \"string\"})"},{"line_number":58,"context_line":"        for i in alarm.event_rule.query:"},{"line_number":59,"context_line":"            i._get_value_as_type()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_cde0d69a","line":56,"updated":"2018-07-02 13:07:28.000000000","message":"The schema should be defined once and for all in the class, not each time in this function.","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b6e6474b6b1ab85bc6e4117b25f4934611959a9e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        for i in alarm.event_rule.query:"},{"line_number":59,"context_line":"            i._get_value_as_type()"},{"line_number":60,"context_line":"            try:"},{"line_number":61,"context_line":"                schema({\"field\": i.field, \"op\": i.value, \"value\": \"string\"})"},{"line_number":62,"context_line":"            except Exception:"},{"line_number":63,"context_line":"                raise base.ClientSideError(\u0027Please check your query\u0027)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_cd8e96d0","line":61,"range":{"start_line":61,"start_character":57,"end_line":61,"end_character":74},"updated":"2018-07-02 13:07:28.000000000","message":"Correct me if I\u0027m wrong, but it\u0027s also possible to have other types, so that does not sound correct, no?","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":28504,"name":"Vinay Kapalavai","email":"vkapalav@redhat.com","username":"vkapalav"},"change_message_id":"d2dc4e6b5d747d73cdf7c53679456d2cb6ebc281","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        for i in alarm.event_rule.query:"},{"line_number":59,"context_line":"            i._get_value_as_type()"},{"line_number":60,"context_line":"            try:"},{"line_number":61,"context_line":"                schema({\"field\": i.field, \"op\": i.value, \"value\": \"string\"})"},{"line_number":62,"context_line":"            except Exception:"},{"line_number":63,"context_line":"                raise base.ClientSideError(\u0027Please check your query\u0027)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_7ee5aa3d","line":61,"range":{"start_line":61,"start_character":57,"end_line":61,"end_character":74},"in_reply_to":"5f7c97a3_cd8e96d0","updated":"2018-07-05 17:52:36.000000000","message":"True. Normally data_type is optional, but it supports others as well. Thanks for pointing it out.","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b6e6474b6b1ab85bc6e4117b25f4934611959a9e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            i._get_value_as_type()"},{"line_number":60,"context_line":"            try:"},{"line_number":61,"context_line":"                schema({\"field\": i.field, \"op\": i.value, \"value\": \"string\"})"},{"line_number":62,"context_line":"            except Exception:"},{"line_number":63,"context_line":"                raise base.ClientSideError(\u0027Please check your query\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ed8912c7","line":62,"range":{"start_line":62,"start_character":19,"end_line":62,"end_character":28},"updated":"2018-07-02 13:07:28.000000000","message":"That\u0027s a bit vague. Just catch voluptuous exceptions.","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b6e6474b6b1ab85bc6e4117b25f4934611959a9e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            try:"},{"line_number":61,"context_line":"                schema({\"field\": i.field, \"op\": i.value, \"value\": \"string\"})"},{"line_number":62,"context_line":"            except Exception:"},{"line_number":63,"context_line":"                raise base.ClientSideError(\u0027Please check your query\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @property"},{"line_number":66,"context_line":"    def default_description(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_adbd5a68","line":63,"updated":"2018-07-02 13:07:28.000000000","message":"Providing what\u0027s wrong would be more useful for clients :)","commit_id":"813cac280f35b02dedde47989136a31b61b24c70"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"41c9f3324e8201ed658d8470b2e888b4a1d24af6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import voluptuous"},{"line_number":17,"context_line":"from voluptuous import Schema, Match"},{"line_number":18,"context_line":"import wsme"},{"line_number":19,"context_line":"from wsme import types as wtypes"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_98244710","line":17,"updated":"2018-07-03 10:14:31.000000000","message":"the code style usually requires here to only import modules.\nso just use \"import voluptuous\" and use \"voluptuous.Schema\" etc.","commit_id":"c9b5c4648b8e138f11f3db3e2116e831e733e898"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"41c9f3324e8201ed658d8470b2e888b4a1d24af6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    query \u003d wsme.wsattr([base.Query])"},{"line_number":35,"context_line":"    \"The query to find the event (default is [])\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    schema \u003d wsme.wsattr(wtypes.text)"},{"line_number":38,"context_line":"    schema \u003d Schema({\"field\": Match(r\"^[a-zA-Z.\u0027,0-9_-]*$\"),"},{"line_number":39,"context_line":"             \"op\": voluptuous.In(base.operation_kind).container,"},{"line_number":40,"context_line":"             \"value\": [\"string\",\"integer\",\"float\",\"boolean\",\"datetime\"]})"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_58730f17","line":37,"updated":"2018-07-03 10:14:31.000000000","message":"That\u0027s useless, it\u0027s overriden with the line under","commit_id":"c9b5c4648b8e138f11f3db3e2116e831e733e898"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"41c9f3324e8201ed658d8470b2e888b4a1d24af6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    schema \u003d Schema({\"field\": Match(r\"^[a-zA-Z.\u0027,0-9_-]*$\"),"},{"line_number":39,"context_line":"             \"op\": voluptuous.In(base.operation_kind).container,"},{"line_number":40,"context_line":"             \"value\": [\"string\",\"integer\",\"float\",\"boolean\",\"datetime\"]})"},{"line_number":41,"context_line":"    \"The schema validation check for provided input query\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, event_type\u003dNone, query\u003dNone):"},{"line_number":44,"context_line":"        event_type \u003d event_type or \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_b864a34e","line":41,"updated":"2018-07-03 10:14:31.000000000","message":"So the doc string here is used to auto generate documentation.\nIf you add a \"schema\" field here, it\u0027s gonna build a documentation that say that you should pass a \"schema\" field in an AlarmEventRule object over the REST API. That\u0027s definitely not what you want.\n\nYou should be able to avoid that by prefixing is with _ or moving it outside the class (unfortunately). Double check by generating the doc locally. :)","commit_id":"c9b5c4648b8e138f11f3db3e2116e831e733e898"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"41c9f3324e8201ed658d8470b2e888b4a1d24af6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            try:"},{"line_number":55,"context_line":"                cls.schema._datatype[0]({\"field\": i.field, \"op\": i.op, \"value\": i.value})"},{"line_number":56,"context_line":"            except voluptuous.MultipleInvalid:"},{"line_number":57,"context_line":"                raise base.ClientSideError(\u0027Please check your query value or traits\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @property"},{"line_number":60,"context_line":"    def default_description(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_3862d33e","line":57,"updated":"2018-07-03 10:14:31.000000000","message":"You should include the error that voluptuous raises, so it\u0027s possible for the user to understand what it should check.","commit_id":"c9b5c4648b8e138f11f3db3e2116e831e733e898"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"db5d02aac663172bee0101b992f52d49c28d829a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from aodh.i18n import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Scema validation for the event type query."},{"line_number":25,"context_line":"schema \u003d voluptuous.Schema("},{"line_number":26,"context_line":"    {\"field\": voluptuous.Match(r\"^[a-zA-Z.\u0027,0-9_-]*$\"),"},{"line_number":27,"context_line":"     \"op\": voluptuous.In(base.operation_kind).container,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_e725335c","line":24,"updated":"2018-07-09 13:39:56.000000000","message":"Schema","commit_id":"02342681c49f416e0fbeca2e9e90c80bffd3ac4d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"db5d02aac663172bee0101b992f52d49c28d829a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Scema validation for the event type query."},{"line_number":25,"context_line":"schema \u003d voluptuous.Schema("},{"line_number":26,"context_line":"    {\"field\": voluptuous.Match(r\"^[a-zA-Z.\u0027,0-9_-]*$\"),"},{"line_number":27,"context_line":"     \"op\": voluptuous.In(base.operation_kind).container,"},{"line_number":28,"context_line":"     \"value\": [\"string\", \"integer\", \"float\", \"boolean\", \"datetime\"]})"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_a71bbb19","line":25,"updated":"2018-07-09 13:39:56.000000000","message":"I *think* putting that as a private field in the class would make hum not documented, no?\n\nIf you really can\u0027t store that in the class itself, at least find a better name than \"schema\" and anyhow prefix it with an underscore to indicate it\u0027s private.","commit_id":"02342681c49f416e0fbeca2e9e90c80bffd3ac4d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3722c9e3ea281f6ec81c67db5eabb8a8d2440c42","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            i._get_value_as_type()"},{"line_number":54,"context_line":"            try:"},{"line_number":55,"context_line":"                if i.type \u003d\u003d \u0027\u0027:"},{"line_number":56,"context_line":"                    i.type \u003d \"string\""},{"line_number":57,"context_line":"                _q_validator({\"field\": i.field, \"op\": i.op,"},{"line_number":58,"context_line":"                              \"value\": i.type})"},{"line_number":59,"context_line":"            except voluptuous.MultipleInvalid as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_54d025c9","line":56,"updated":"2018-07-11 07:25:34.000000000","message":"is this better than just allowing \u0027\u0027 in the schema?","commit_id":"d19b910178fe27c85d7d99286bb6a6a9996cd84a"},{"author":{"_account_id":28504,"name":"Vinay Kapalavai","email":"vkapalav@redhat.com","username":"vkapalav"},"change_message_id":"5654b55d8c6b3044546db2275da8b155552d501c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            i._get_value_as_type()"},{"line_number":54,"context_line":"            try:"},{"line_number":55,"context_line":"                if i.type \u003d\u003d \u0027\u0027:"},{"line_number":56,"context_line":"                    i.type \u003d \"string\""},{"line_number":57,"context_line":"                _q_validator({\"field\": i.field, \"op\": i.op,"},{"line_number":58,"context_line":"                              \"value\": i.type})"},{"line_number":59,"context_line":"            except voluptuous.MultipleInvalid as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_4cc73167","line":56,"in_reply_to":"5f7c97a3_54d025c9","updated":"2018-07-11 13:56:58.000000000","message":"I guess it would be clean enough to look at the valid datatypes in the schema.","commit_id":"d19b910178fe27c85d7d99286bb6a6a9996cd84a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3722c9e3ea281f6ec81c67db5eabb8a8d2440c42","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                              \"value\": i.type})"},{"line_number":59,"context_line":"            except voluptuous.MultipleInvalid as e:"},{"line_number":60,"context_line":"                raise base.ClientSideError("},{"line_number":61,"context_line":"                    _(\"Query value or traits not valid: %s\") % str(e))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def default_description(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d4dbd5e7","line":61,"updated":"2018-07-11 07:25:34.000000000","message":"not valid \u003d invalid?","commit_id":"d19b910178fe27c85d7d99286bb6a6a9996cd84a"},{"author":{"_account_id":28504,"name":"Vinay Kapalavai","email":"vkapalav@redhat.com","username":"vkapalav"},"change_message_id":"5654b55d8c6b3044546db2275da8b155552d501c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                              \"value\": i.type})"},{"line_number":59,"context_line":"            except voluptuous.MultipleInvalid as e:"},{"line_number":60,"context_line":"                raise base.ClientSideError("},{"line_number":61,"context_line":"                    _(\"Query value or traits not valid: %s\") % str(e))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def default_description(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_cca021a8","line":61,"in_reply_to":"5f7c97a3_d4dbd5e7","updated":"2018-07-11 13:56:58.000000000","message":"I will fix that.","commit_id":"d19b910178fe27c85d7d99286bb6a6a9996cd84a"}],"aodh/tests/functional/gabbi/gabbits/alarms.yaml":[{"author":{"_account_id":23078,"name":"Jeremy Freudberg","email":"jeremyfreudberg@gmail.com","username":"jeremyfreudberg"},"change_message_id":"4624c37b9453e9c38bba8a065e3aea3db486b7f9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  response_headers:"},{"line_number":29,"context_line":"      allow: GET, POST"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- name: try to PUT an alarm"},{"line_number":32,"context_line":"  desc: what does PUT do"},{"line_number":33,"context_line":"  PUT: /v2/alarms"},{"line_number":34,"context_line":"  request_headers:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"5f7c97a3_074af481","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":27},"updated":"2018-07-04 17:05:13.000000000","message":"it has to be a unique name, see job failure","commit_id":"12a5da1f56d537e20c0b7f24cc69afea1f26bad3"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"69608c0fade5108004b4732a0e3b321096471d21","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          name: instance_on"},{"line_number":41,"context_line":"          event-type: compute.instance.power_off.*"},{"line_number":42,"context_line":"          query: \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027"},{"line_number":43,"context_line":"  status: 405"},{"line_number":44,"context_line":"  response_headers:"},{"line_number":45,"context_line":"          allow: GET, POST"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_92463fa7","line":43,"updated":"2018-07-05 03:37:05.000000000","message":"Can you check the error message is the expected one.","commit_id":"f81c36c6bc574fc7c22a7e4f84dd47485d0e3b15"},{"author":{"_account_id":28504,"name":"Vinay Kapalavai","email":"vkapalav@redhat.com","username":"vkapalav"},"change_message_id":"972e81431fbe6c0abdd8a9f3fb192de037c28e1c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          name: instance_on"},{"line_number":41,"context_line":"          event-type: compute.instance.power_off.*"},{"line_number":42,"context_line":"          query: \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027"},{"line_number":43,"context_line":"  status: 405"},{"line_number":44,"context_line":"  response_headers:"},{"line_number":45,"context_line":"          allow: GET, POST"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_2aa9ccdb","line":43,"in_reply_to":"5f7c97a3_4cd54db6","updated":"2018-07-06 15:13:25.000000000","message":"Yes, that worked out.!!Thank you.","commit_id":"f81c36c6bc574fc7c22a7e4f84dd47485d0e3b15"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"84c98ee52e9a43362f980baff39c863978f212d2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          name: instance_on"},{"line_number":41,"context_line":"          event-type: compute.instance.power_off.*"},{"line_number":42,"context_line":"          query: \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027"},{"line_number":43,"context_line":"  status: 405"},{"line_number":44,"context_line":"  response_headers:"},{"line_number":45,"context_line":"          allow: GET, POST"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_4cd54db6","line":43,"in_reply_to":"5f7c97a3_52f17eff","updated":"2018-07-06 09:36:04.000000000","message":"Yeah, that\u0027s why I wanted to check the error message, the 405 looks strange to me.\n\nI think the reason of the 405, is because you do \"PUT /v2/alarms\" (this api endpoint does not exists, so the server return a 405). Maybe your are looking for POST /v2/alarms (to create a new alarm) ?","commit_id":"f81c36c6bc574fc7c22a7e4f84dd47485d0e3b15"},{"author":{"_account_id":28504,"name":"Vinay Kapalavai","email":"vkapalav@redhat.com","username":"vkapalav"},"change_message_id":"d2dc4e6b5d747d73cdf7c53679456d2cb6ebc281","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          name: instance_on"},{"line_number":41,"context_line":"          event-type: compute.instance.power_off.*"},{"line_number":42,"context_line":"          query: \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027"},{"line_number":43,"context_line":"  status: 405"},{"line_number":44,"context_line":"  response_headers:"},{"line_number":45,"context_line":"          allow: GET, POST"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_52f17eff","line":43,"in_reply_to":"5f7c97a3_92463fa7","updated":"2018-07-05 17:52:36.000000000","message":"The api gives a status message of 400.","commit_id":"f81c36c6bc574fc7c22a7e4f84dd47485d0e3b15"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0db57634384f43f3da3db02426e4697c8a8e89fd","unresolved":false,"context_lines":[{"line_number":24,"context_line":"          resource_type: instance"},{"line_number":25,"context_line":"          aggregation_method: max"},{"line_number":26,"context_line":"          threshold: 300.0"},{"line_number":27,"context_line":"  status: 400"},{"line_number":28,"context_line":"  response_headers:"},{"line_number":29,"context_line":"      allow: GET, POST"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f7c97a3_45e0bbcb","line":27,"updated":"2018-07-06 16:11:27.000000000","message":"duh?","commit_id":"701405ce6fde35c494f1ee6dcc5fb07ee7ee8e0a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0db57634384f43f3da3db02426e4697c8a8e89fd","unresolved":false,"context_lines":[{"line_number":39,"context_line":"      event_rule:"},{"line_number":40,"context_line":"          name: instance_on"},{"line_number":41,"context_line":"          event-type: compute.instance.power_off.*"},{"line_number":42,"context_line":"          query:  \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027  "},{"line_number":43,"context_line":"  status: 400"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: createAlarm"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f7c97a3_25c6df4a","line":42,"updated":"2018-07-06 16:11:27.000000000","message":"trailing whitespace","commit_id":"701405ce6fde35c494f1ee6dcc5fb07ee7ee8e0a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0db57634384f43f3da3db02426e4697c8a8e89fd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          name: instance_on"},{"line_number":41,"context_line":"          event-type: compute.instance.power_off.*"},{"line_number":42,"context_line":"          query:  \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027  "},{"line_number":43,"context_line":"  status: 400"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: createAlarm"},{"line_number":46,"context_line":"  desc: Creates an alarm."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f7c97a3_e5bb07bb","line":43,"updated":"2018-07-06 16:11:27.000000000","message":"you need to check the content of the error too","commit_id":"701405ce6fde35c494f1ee6dcc5fb07ee7ee8e0a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"db5d02aac663172bee0101b992f52d49c28d829a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"          event-type: \u0027compute.instance.power_off.*\u0027"},{"line_number":42,"context_line":"          query:  \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027"},{"line_number":43,"context_line":"  status: 400"},{"line_number":44,"context_line":"  response_headers:"},{"line_number":45,"context_line":"      reason: \"Bad Request\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"- name: createAlarm"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5f7c97a3_671123f8","line":44,"updated":"2018-07-09 13:39:56.000000000","message":"yeah this should be response string or better, response json","commit_id":"02342681c49f416e0fbeca2e9e90c80bffd3ac4d"},{"author":{"_account_id":13192,"name":"Souville","display_name":"Bertrand Souville","email":"souville@docomolab-euro.com","username":"bertys"},"change_message_id":"86715987a641f1f978ef02b7954745d8ab1e25c9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"          event-type: \u0027compute.instance.power_off.*\u0027"},{"line_number":42,"context_line":"          query:  \u0027{\"\u003d\": {\"id\": \"bb912729-fa51-443b-bac6-bf4c795f081d\"}}\u0027"},{"line_number":43,"context_line":"  status: 400"},{"line_number":44,"context_line":"  response_headers:"},{"line_number":45,"context_line":"      reason: \"Bad Request\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"- name: createAlarm"},{"line_number":48,"context_line":"  desc: Creates an alarm."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5f7c97a3_e7f0d3fe","line":45,"range":{"start_line":44,"start_character":2,"end_line":45,"end_character":27},"updated":"2018-07-09 13:25:39.000000000","message":"response_headers or response_strings?\nhttps://gabbi.readthedocs.io/en/latest/format.html#response-expectations","commit_id":"02342681c49f416e0fbeca2e9e90c80bffd3ac4d"}]}
