)]}'
{"devstack/post_test_hook.sh":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP"},{"line_number":3,"context_line":"# (C) Copyright 2017 FUJITSU LIMITED"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-sh","patch_set":7,"id":"df140735_08c181e5","line":2,"updated":"2017-06-05 15:55:49.000000000","message":"Copyright","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"0f60b10ceeb37a1088bcbae5ef565dd860defe7d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP"},{"line_number":3,"context_line":"# (C) Copyright 2017 FUJITSU LIMITED"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-sh","patch_set":7,"id":"df140735_1b6876b8","line":2,"in_reply_to":"df140735_08c181e5","updated":"2017-06-06 23:19:47.000000000","message":"Done","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":97,"context_line":"(cd $TEMPEST_DIR; testr list-tests monasca_tempest_tests \u003e monasca_tempest_tests)"},{"line_number":98,"context_line":"(cd $TEMPEST_DIR; cat monasca_tempest_tests)"},{"line_number":99,"context_line":"(cd $TEMPEST_DIR; cat monasca_tempest_tests | grep gate \u003e monasca_tempest_tests_gate)"},{"line_number":100,"context_line":"if [[ \"${MONASCA_API_IMPLEMENTATION_LANG,,}\" \u003d\u003d \u0027python\u0027 ]]; then"},{"line_number":101,"context_line":"    (cd $TEMPEST_DIR; cat monasca_tempest_tests | grep python_only \u003e\u003e monasca_tempest_tests_gate)"},{"line_number":102,"context_line":"fi"},{"line_number":103,"context_line":"(cd $TEMPEST_DIR; testr run --subunit --load-list\u003dmonasca_tempest_tests_gate | subunit-trace --fails)"}],"source_content_type":"text/x-sh","patch_set":7,"id":"df140735_28a56547","line":102,"range":{"start_line":100,"start_character":0,"end_line":102,"end_character":2},"updated":"2017-06-05 15:55:49.000000000","message":"Doesn\u0027t this need to be the reverse? If java, grep -v python_only","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"}],"docs/monasca-api-spec.md":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":950,"context_line":""},{"line_number":951,"context_line":"## Group, Inhibit, and Silence Rules"},{"line_number":952,"context_line":"The Notification Engine is in charge of inhibiting, silencing and grouping alarm-state-transitions and keeping any inhibit and silence"},{"line_number":953,"context_line":"tags up-to-date in the database. See the Notification Manager documentation for more details. These rules are defined via the API and"},{"line_number":954,"context_line":"sent as events to the Notification Engine. Note that the Notification Engine keeps all rules in memory and evaluates each alarm against"},{"line_number":955,"context_line":"all rules on rule creation and deletion and evaluates each alarm-state-transition against all rules. A large number of rules could greatly"},{"line_number":956,"context_line":"influence performance of the Notification Engine."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_0a8036f4","line":953,"range":{"start_line":953,"start_character":100,"end_line":953,"end_character":105},"updated":"2017-06-19 16:50:49.000000000","message":"You haven\u0027t really explained what these rules are for.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":950,"context_line":""},{"line_number":951,"context_line":"## Group, Inhibit, and Silence Rules"},{"line_number":952,"context_line":"The Notification Engine is in charge of inhibiting, silencing and grouping alarm-state-transitions and keeping any inhibit and silence"},{"line_number":953,"context_line":"tags up-to-date in the database. See the Notification Manager documentation for more details. These rules are defined via the API and"},{"line_number":954,"context_line":"sent as events to the Notification Engine. Note that the Notification Engine keeps all rules in memory and evaluates each alarm against"},{"line_number":955,"context_line":"all rules on rule creation and deletion and evaluates each alarm-state-transition against all rules. A large number of rules could greatly"},{"line_number":956,"context_line":"influence performance of the Notification Engine."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_37565d5e","line":953,"range":{"start_line":953,"start_character":100,"end_line":953,"end_character":105},"in_reply_to":"7f231b9d_0a8036f4","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":956,"context_line":"influence performance of the Notification Engine."},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_8a6206ad","line":959,"range":{"start_line":959,"start_character":41,"end_line":959,"end_character":48},"updated":"2017-06-19 16:50:49.000000000","message":"This doesn\u0027t explain what it means for an alarm to be grouped. What happens? What does it change about the pipeline?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":956,"context_line":"influence performance of the Notification Engine."},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_0a20d4af","line":959,"range":{"start_line":959,"start_character":41,"end_line":959,"end_character":48},"in_reply_to":"7f231b9d_8a6206ad","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_1d23e2a8","line":960,"range":{"start_line":960,"start_character":69,"end_line":960,"end_character":77},"updated":"2017-06-19 16:50:49.000000000","message":"spelling","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_4a17ec52","line":960,"range":{"start_line":960,"start_character":69,"end_line":960,"end_character":77},"in_reply_to":"7f231b9d_1d23e2a8","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_dd668aed","line":961,"range":{"start_line":961,"start_character":49,"end_line":961,"end_character":66},"updated":"2017-06-19 16:50:49.000000000","message":"This isn\u0027t the desired behavior though, right? This makes it sound like the grouping rules change nothing about the notifications being sent.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"588c06594baa3d9652ed2296fe9991ef8d2dc6d6","unresolved":false,"context_lines":[{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_31ca45a0","line":961,"range":{"start_line":961,"start_character":49,"end_line":961,"end_character":66},"in_reply_to":"7f231b9d_dd668aed","updated":"2017-06-19 17:04:57.000000000","message":"That is correct. Grouping does not effect the origonal notification. The thought here is that important notificaions like pagerduty should not get grouped. Grouping well never reduce the notificaions received. I plan to add more explaining that grouping will not reduce the number of notifications received.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."},{"line_number":965,"context_line":"This will result in two group notifications being sent. The \"repeat\" parameter specifies the amount of time the notification should wait"},{"line_number":966,"context_line":"before it is re-sent by the Periodic Engine. Notification actions can also be specified for the alarm transitioning to any state by"},{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_7dd5361b","line":965,"range":{"start_line":965,"start_character":69,"end_line":965,"end_character":78},"updated":"2017-06-19 16:50:49.000000000","message":"Is this parameter specific to the grouping? You may want to clarify what this means with regard to other notifications.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."},{"line_number":965,"context_line":"This will result in two group notifications being sent. The \"repeat\" parameter specifies the amount of time the notification should wait"},{"line_number":966,"context_line":"before it is re-sent by the Periodic Engine. Notification actions can also be specified for the alarm transitioning to any state by"},{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_4d81464a","line":965,"range":{"start_line":965,"start_character":69,"end_line":965,"end_character":78},"in_reply_to":"7f231b9d_7dd5361b","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."},{"line_number":965,"context_line":"This will result in two group notifications being sent. The \"repeat\" parameter specifies the amount of time the notification should wait"},{"line_number":966,"context_line":"before it is re-sent by the Periodic Engine. Notification actions can also be specified for the alarm transitioning to any state by"},{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"### Inhibit Rule"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_761673aa","line":966,"range":{"start_line":966,"start_character":96,"end_line":966,"end_character":101},"updated":"2017-06-19 16:50:49.000000000","message":"did you mean for the group transition?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."},{"line_number":965,"context_line":"This will result in two group notifications being sent. The \"repeat\" parameter specifies the amount of time the notification should wait"},{"line_number":966,"context_line":"before it is re-sent by the Periodic Engine. Notification actions can also be specified for the alarm transitioning to any state by"},{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"### Inhibit Rule"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_2d984abe","line":966,"range":{"start_line":966,"start_character":96,"end_line":966,"end_character":101},"in_reply_to":"7f231b9d_761673aa","updated":"2017-06-23 16:41:46.000000000","message":"I think it should be a group of alarm transition into different state hmm","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"### Inhibit Rule"},{"line_number":970,"context_line":"Inhibit is when one alarm in the ALARM state causes another class of alarms to not send notifications. When an inhibit rule is"},{"line_number":971,"context_line":"created or deleted, the Notification Engine adds or removes tags to any newly influenced alarm and the Notification Engine is also responsible"},{"line_number":972,"context_line":"for keeping those tags up-to-date. A source alarm inhibits a target alarm. If the source alarm is in ALARM state, then the target alarm does"},{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_9de932e4","line":970,"range":{"start_line":970,"start_character":60,"end_line":970,"end_character":65},"updated":"2017-06-19 16:50:49.000000000","message":"did you mean a group of alarms? Perhaps a set of alarms","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"### Inhibit Rule"},{"line_number":970,"context_line":"Inhibit is when one alarm in the ALARM state causes another class of alarms to not send notifications. When an inhibit rule is"},{"line_number":971,"context_line":"created or deleted, the Notification Engine adds or removes tags to any newly influenced alarm and the Notification Engine is also responsible"},{"line_number":972,"context_line":"for keeping those tags up-to-date. A source alarm inhibits a target alarm. If the source alarm is in ALARM state, then the target alarm does"},{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_ede6d244","line":970,"range":{"start_line":970,"start_character":60,"end_line":970,"end_character":65},"in_reply_to":"7f231b9d_9de932e4","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":968,"context_line":""},{"line_number":969,"context_line":"### Inhibit Rule"},{"line_number":970,"context_line":"Inhibit is when one alarm in the ALARM state causes another class of alarms to not send notifications. When an inhibit rule is"},{"line_number":971,"context_line":"created or deleted, the Notification Engine adds or removes tags to any newly influenced alarm and the Notification Engine is also responsible"},{"line_number":972,"context_line":"for keeping those tags up-to-date. A source alarm inhibits a target alarm. If the source alarm is in ALARM state, then the target alarm does"},{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."},{"line_number":974,"context_line":"In the case where a source and target alarm both transition back to OK or UNDETERMINED, the target alarm will not send a notification."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_fdd14624","line":971,"range":{"start_line":971,"start_character":60,"end_line":971,"end_character":64},"updated":"2017-06-19 16:50:49.000000000","message":"does it add the tags? or are those only added when the inhibition is active?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":971,"context_line":"created or deleted, the Notification Engine adds or removes tags to any newly influenced alarm and the Notification Engine is also responsible"},{"line_number":972,"context_line":"for keeping those tags up-to-date. A source alarm inhibits a target alarm. If the source alarm is in ALARM state, then the target alarm does"},{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."},{"line_number":974,"context_line":"In the case where a source and target alarm both transition back to OK or UNDETERMINED, the target alarm will not send a notification."},{"line_number":975,"context_line":"There is a window where, for a period of time after a source alarm transitions out of ALARM, no target alarm notification will be sent."},{"line_number":976,"context_line":"Any alarm matching an inhibition rule must wait for some configured wait time to ensure proper behavior. See the Notification Manager"},{"line_number":977,"context_line":"documentation for configuration information."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_bbaab66d","line":974,"range":{"start_line":974,"start_character":110,"end_line":974,"end_character":113},"updated":"2017-06-19 16:50:49.000000000","message":"Is this true? I though the only state we cared about was alarm, and we didn\u0027t interfere with anything else? Remember we can send notifications on OK and UNDETERMINED as well.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"588c06594baa3d9652ed2296fe9991ef8d2dc6d6","unresolved":false,"context_lines":[{"line_number":971,"context_line":"created or deleted, the Notification Engine adds or removes tags to any newly influenced alarm and the Notification Engine is also responsible"},{"line_number":972,"context_line":"for keeping those tags up-to-date. A source alarm inhibits a target alarm. If the source alarm is in ALARM state, then the target alarm does"},{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."},{"line_number":974,"context_line":"In the case where a source and target alarm both transition back to OK or UNDETERMINED, the target alarm will not send a notification."},{"line_number":975,"context_line":"There is a window where, for a period of time after a source alarm transitions out of ALARM, no target alarm notification will be sent."},{"line_number":976,"context_line":"Any alarm matching an inhibition rule must wait for some configured wait time to ensure proper behavior. See the Notification Manager"},{"line_number":977,"context_line":"documentation for configuration information."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_f1fa8dba","line":974,"range":{"start_line":974,"start_character":110,"end_line":974,"end_character":113},"in_reply_to":"7f231b9d_bbaab66d","updated":"2017-06-19 17:04:57.000000000","message":"I was trying to explain the window where both alarms transitioning will keep the target from sending for a little while. The idea here was that if you never knew there was a problem then got a notification saying the problem was fixed, that would be weird, so we added a window that looked for both source and target transitioning to OK. If they both fell in that window then we didn\u0027t send the target. Ill explain that better here","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":987,"context_line":""},{"line_number":988,"context_line":"### Silence Rule"},{"line_number":989,"context_line":"Alarm Silencing is when a notification is not sent out when it normally would have. When a silence rule is created or deleted, all"},{"line_number":990,"context_line":"alarms that match the rule\u0027s expression are tagged in the database as silenced by the Notification Engine and the Notification"},{"line_number":991,"context_line":"Engine is responsible for keeping the database up-to-date. A silence rule has the parameters \"start\\_time\" and \"silence\\_duration\". Together"},{"line_number":992,"context_line":"these parameters define when the rule is active and valid. The start time should be in ISO 8601 combined date and time format in UTC."},{"line_number":993,"context_line":"The silence duration is a string built of non delimited value and labels from the table below. For example \"1y2d3h4m5s\" would define the duration"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_fbfb8e75","line":990,"range":{"start_line":990,"start_character":44,"end_line":990,"end_character":50},"updated":"2017-06-19 16:50:49.000000000","message":"similar question to above, does it get tagged when the rule is created or when the rule takes effect?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"588c06594baa3d9652ed2296fe9991ef8d2dc6d6","unresolved":false,"context_lines":[{"line_number":987,"context_line":""},{"line_number":988,"context_line":"### Silence Rule"},{"line_number":989,"context_line":"Alarm Silencing is when a notification is not sent out when it normally would have. When a silence rule is created or deleted, all"},{"line_number":990,"context_line":"alarms that match the rule\u0027s expression are tagged in the database as silenced by the Notification Engine and the Notification"},{"line_number":991,"context_line":"Engine is responsible for keeping the database up-to-date. A silence rule has the parameters \"start\\_time\" and \"silence\\_duration\". Together"},{"line_number":992,"context_line":"these parameters define when the rule is active and valid. The start time should be in ISO 8601 combined date and time format in UTC."},{"line_number":993,"context_line":"The silence duration is a string built of non delimited value and labels from the table below. For example \"1y2d3h4m5s\" would define the duration"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_3126c569","line":990,"range":{"start_line":990,"start_character":44,"end_line":990,"end_character":50},"in_reply_to":"7f231b9d_fbfb8e75","updated":"2017-06-19 17:04:57.000000000","message":"I have it tagging when the rule gets created. I believe that was the behavior in Prometheus. Should it only be on alarm-transition?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"```"},{"line_number":1028,"context_line":"\u003cexpression\u003e"},{"line_number":1029,"context_line":"  ::\u003d [\u003cgroup by\u003e] [\u003cexcluding\u003e]"},{"line_number":1030,"context_line":"```"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"The \"group by\" section should be the phrase \"group by\" followed by a comma seperated list of keys from the table in the"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_2ab772f7","line":1029,"range":{"start_line":1029,"start_character":6,"end_line":1029,"end_character":18},"updated":"2017-06-19 16:50:49.000000000","message":"group by always comes last","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"```"},{"line_number":1028,"context_line":"\u003cexpression\u003e"},{"line_number":1029,"context_line":"  ::\u003d [\u003cgroup by\u003e] [\u003cexcluding\u003e]"},{"line_number":1030,"context_line":"```"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"The \"group by\" section should be the phrase \"group by\" followed by a comma seperated list of keys from the table in the"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_f8b2fbe5","line":1029,"range":{"start_line":1029,"start_character":6,"end_line":1029,"end_character":18},"in_reply_to":"7f231b9d_2ab772f7","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"In this example, the group rule will group by hostname and will exclude any metric that is named cpu\\_perc."},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"```"},{"line_number":1040,"context_line":"group by hostname excluding cpu_perc"},{"line_number":1041,"context_line":"```"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"###### More Complex Group Expression Example"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_7bf2de71","line":1040,"range":{"start_line":1040,"start_character":0,"end_line":1040,"end_character":17},"updated":"2017-06-19 16:50:49.000000000","message":"this is a valid expression, but will is not a good example for this section. It would return a group by list of \u0027hostname,excluding,cpu_perc\u0027","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"In this example, the group rule will group by hostname and will exclude any metric that is named cpu\\_perc."},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"```"},{"line_number":1040,"context_line":"group by hostname excluding cpu_perc"},{"line_number":1041,"context_line":"```"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"###### More Complex Group Expression Example"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_58f9ef4a","line":1040,"range":{"start_line":1040,"start_character":0,"end_line":1040,"end_character":17},"in_reply_to":"7f231b9d_7bf2de71","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1045,"context_line":"named cpu\\_perc\\_high or has a metric name equal to cpu\\_perc."},{"line_number":1046,"context_line":""},{"line_number":1047,"context_line":"```"},{"line_number":1048,"context_line":"group by __alarmName__, hostname excluding {__alarmName__\u003dcpu_perc_high, __metricName__\u003dcpu_perc}"},{"line_number":1049,"context_line":"```"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"#### Inhibit Rule Matching"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_7bc09ee1","line":1048,"range":{"start_line":1048,"start_character":43,"end_line":1048,"end_character":97},"updated":"2017-06-19 16:50:49.000000000","message":"this is an invalid expression","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1045,"context_line":"named cpu\\_perc\\_high or has a metric name equal to cpu\\_perc."},{"line_number":1046,"context_line":""},{"line_number":1047,"context_line":"```"},{"line_number":1048,"context_line":"group by __alarmName__, hostname excluding {__alarmName__\u003dcpu_perc_high, __metricName__\u003dcpu_perc}"},{"line_number":1049,"context_line":"```"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"#### Inhibit Rule Matching"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_1867f727","line":1048,"range":{"start_line":1048,"start_character":43,"end_line":1048,"end_character":97},"in_reply_to":"7f231b9d_7bc09ee1","updated":"2017-06-23 16:41:46.000000000","message":"I changed it to \"excluding {__alarmName__\u003dcpu_perc_high, __metricName__\u003dcpu_perc} group by __alarmName__, hostname\" and tested it with the aql_parser. The output is: {\u0027matchers\u0027: [\u0027__alarmName__\u0027, \u0027hostname\u0027], \u0027exclusions\u0027: {\u0027__metricName__\u0027: \u0027cpu_perc\u0027, \u0027__alarmName__\u0027: \u0027cpu_perc_high\u0027}}","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"hostname as the source alarm."},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"```"},{"line_number":1072,"context_line":"source hostAlive group by hostname"},{"line_number":1073,"context_line":"```"},{"line_number":1074,"context_line":""},{"line_number":1075,"context_line":"###### More Complex Inhibit Expression Exmple"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_9b793ac6","line":1072,"range":{"start_line":1072,"start_character":17,"end_line":1072,"end_character":22},"updated":"2017-06-19 16:50:49.000000000","message":"Did you try parsing this expression? I think it might require a \u0027targets {}\u0027 phrase.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"hostname as the source alarm."},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"```"},{"line_number":1072,"context_line":"source hostAlive group by hostname"},{"line_number":1073,"context_line":"```"},{"line_number":1074,"context_line":""},{"line_number":1075,"context_line":"###### More Complex Inhibit Expression Exmple"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_78082b2b","line":1072,"range":{"start_line":1072,"start_character":17,"end_line":1072,"end_character":22},"in_reply_to":"7f231b9d_9b793ac6","updated":"2017-06-23 16:41:46.000000000","message":"It doesn\u0027t require a targets phrase\n{\u0027source_match\u0027: {\u0027__metricName__\u0027: \u0027hostAlive\u0027}, \u0027exclusions\u0027: {}, \u0027target_match\u0027: {}, \u0027equal\u0027: [\u0027hostname\u0027]}","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"SilenceRule1:"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"```"},{"line_number":1165,"context_line":"{\"alarm-silencing-definition-created\":{"},{"line_number":1166,"context_line":"     \"name\": \"silence_rule_1\","},{"line_number":1167,"context_line":"     \"matchers\": {"},{"line_number":1168,"context_line":"         \"\\_\\_severity\\_\\_\": \"LOW\"},"},{"line_number":1169,"context_line":"     \"start_time\": \"2017-02-21 20:00:00\","},{"line_number":1170,"context_line":"     \"end_time\": \"2017-02-21 22:00:00\"}}"},{"line_number":1171,"context_line":"```"},{"line_number":1172,"context_line":""},{"line_number":1173,"context_line":"Output: AT2 gets silenced and AT1 sends a notification. NOTE: SilenceRule1 expires after \"end\\_time\"\u003d\"2017-02-21 22:00:00\"."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_367c7b70","line":1170,"range":{"start_line":1165,"start_character":9,"end_line":1170,"end_character":40},"updated":"2017-06-19 16:50:49.000000000","message":"Did you want to use the expressions in the examples? Also, I thought silence rules were specified with a start and duration, not endtime","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"SilenceRule1:"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"```"},{"line_number":1165,"context_line":"{\"alarm-silencing-definition-created\":{"},{"line_number":1166,"context_line":"     \"name\": \"silence_rule_1\","},{"line_number":1167,"context_line":"     \"matchers\": {"},{"line_number":1168,"context_line":"         \"\\_\\_severity\\_\\_\": \"LOW\"},"},{"line_number":1169,"context_line":"     \"start_time\": \"2017-02-21 20:00:00\","},{"line_number":1170,"context_line":"     \"end_time\": \"2017-02-21 22:00:00\"}}"},{"line_number":1171,"context_line":"```"},{"line_number":1172,"context_line":""},{"line_number":1173,"context_line":"Output: AT2 gets silenced and AT1 sends a notification. NOTE: SilenceRule1 expires after \"end\\_time\"\u003d\"2017-02-21 22:00:00\"."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_0351c80e","line":1170,"range":{"start_line":1165,"start_character":9,"end_line":1170,"end_character":40},"in_reply_to":"7f231b9d_367c7b70","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"588c06594baa3d9652ed2296fe9991ef8d2dc6d6","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"SilenceRule1:"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"```"},{"line_number":1165,"context_line":"{\"alarm-silencing-definition-created\":{"},{"line_number":1166,"context_line":"     \"name\": \"silence_rule_1\","},{"line_number":1167,"context_line":"     \"matchers\": {"},{"line_number":1168,"context_line":"         \"\\_\\_severity\\_\\_\": \"LOW\"},"},{"line_number":1169,"context_line":"     \"start_time\": \"2017-02-21 20:00:00\","},{"line_number":1170,"context_line":"     \"end_time\": \"2017-02-21 22:00:00\"}}"},{"line_number":1171,"context_line":"```"},{"line_number":1172,"context_line":""},{"line_number":1173,"context_line":"Output: AT2 gets silenced and AT1 sends a notification. NOTE: SilenceRule1 expires after \"end\\_time\"\u003d\"2017-02-21 22:00:00\"."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_f123ad54","line":1170,"range":{"start_line":1165,"start_character":9,"end_line":1170,"end_character":40},"in_reply_to":"7f231b9d_367c7b70","updated":"2017-06-19 17:04:57.000000000","message":"Yes, I have an old format here, and plan to change it to the one we are using now","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1177,"context_line":"|| AT1 | AT2 | AT3"},{"line_number":1178,"context_line":"|| --- | --- | ---"},{"line_number":1179,"context_line":"**\\_\\_alarmId\\_\\_** | \"d42bc\" | \"d42bc\" | \"d42bc\""},{"line_number":1180,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW | LOW"},{"line_number":1181,"context_line":"**\\_\\_alarmName\\_\\_** | \"cpu high\" | \"memory high\" | \"vm is dead\""},{"line_number":1182,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | ALARM"},{"line_number":1183,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_76eb1312","line":1180,"range":{"start_line":1180,"start_character":23,"end_line":1180,"end_character":39},"updated":"2017-06-19 16:50:49.000000000","message":"This example is confusing. The ids are all the same, but a single alarm cannot have multiple severities. Same for name.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1177,"context_line":"|| AT1 | AT2 | AT3"},{"line_number":1178,"context_line":"|| --- | --- | ---"},{"line_number":1179,"context_line":"**\\_\\_alarmId\\_\\_** | \"d42bc\" | \"d42bc\" | \"d42bc\""},{"line_number":1180,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW | LOW"},{"line_number":1181,"context_line":"**\\_\\_alarmName\\_\\_** | \"cpu high\" | \"memory high\" | \"vm is dead\""},{"line_number":1182,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | ALARM"},{"line_number":1183,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_83c15883","line":1180,"range":{"start_line":1180,"start_character":23,"end_line":1180,"end_character":39},"in_reply_to":"7f231b9d_76eb1312","updated":"2017-06-23 16:41:46.000000000","message":"done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"||--- | ---"},{"line_number":1265,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM"},{"line_number":1266,"context_line":"**\\_\\_alarmDefinitionId\\_\\_** | \"d42bc\" | \"d42bc\""},{"line_number":1267,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW"},{"line_number":1268,"context_line":"**hostname** | host1 | host2"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"SilenceRule2:"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_f6d283ff","line":1267,"range":{"start_line":1267,"start_character":23,"end_line":1267,"end_character":33},"updated":"2017-06-19 16:50:49.000000000","message":"A single alarm definition cannot have multiple severities","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"||--- | ---"},{"line_number":1265,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM"},{"line_number":1266,"context_line":"**\\_\\_alarmDefinitionId\\_\\_** | \"d42bc\" | \"d42bc\""},{"line_number":1267,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW"},{"line_number":1268,"context_line":"**hostname** | host1 | host2"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"SilenceRule2:"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_036428b8","line":1267,"range":{"start_line":1267,"start_character":23,"end_line":1267,"end_character":33},"in_reply_to":"7f231b9d_f6d283ff","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"|| AT1 | AT2 | AT3"},{"line_number":1296,"context_line":"|| --- | --- | ---"},{"line_number":1297,"context_line":"**\\_\\_alarmDefinitionId\\_\\_** | \"d42bc\" | \"d42bc\" | \"d42bc\""},{"line_number":1298,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW | HIGH"},{"line_number":1299,"context_line":"**hostname** | host1 | host2 | host1"},{"line_number":1300,"context_line":"**\\_\\_state\\_\\_** | OK | ALARM | ALARM"},{"line_number":1301,"context_line":"**\\_\\_alarm\\_actions\\_\\_** | [] | [] | []"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_7608b390","line":1298,"range":{"start_line":1298,"start_character":23,"end_line":1298,"end_character":40},"updated":"2017-06-19 16:50:49.000000000","message":"A single alarm definition cannot have multiple severities.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"|| AT1 | AT2 | AT3"},{"line_number":1296,"context_line":"|| --- | --- | ---"},{"line_number":1297,"context_line":"**\\_\\_alarmDefinitionId\\_\\_** | \"d42bc\" | \"d42bc\" | \"d42bc\""},{"line_number":1298,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW | HIGH"},{"line_number":1299,"context_line":"**hostname** | host1 | host2 | host1"},{"line_number":1300,"context_line":"**\\_\\_state\\_\\_** | OK | ALARM | ALARM"},{"line_number":1301,"context_line":"**\\_\\_alarm\\_actions\\_\\_** | [] | [] | []"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_e35a4cf1","line":1298,"range":{"start_line":1298,"start_character":23,"end_line":1298,"end_character":40},"in_reply_to":"7f231b9d_7608b390","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"    \"undetermined_actions\": [\"cf892\"]}}"},{"line_number":1326,"context_line":"```"},{"line_number":1327,"context_line":"Output: AT2 gets inhibited because its severity is low and will not be included in the group. AT3 is the source alarm. Since AT1 is in OK state,"},{"line_number":1328,"context_line":"it is not a source alarm. For grouping, AT1 and AT3 has the same host name but different state. So there will be two grouped notifications sent"},{"line_number":1329,"context_line":"out: “group\\_notification\\_rule\\_1\\_host1\\_ok[1]” and “group\\_notification\\_rule\\_1\\_host1\\_alarm[1]”."},{"line_number":1330,"context_line":"#####7.    Silence, Inhibit and Group Example"},{"line_number":1331,"context_line":"Four alarm transitions: AT1, AT2, AT3 and AT5"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_b6ee4bea","line":1328,"range":{"start_line":1328,"start_character":12,"end_line":1328,"end_character":24},"updated":"2017-06-19 16:50:49.000000000","message":"I would say it is a source alarm, but it is inactive","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"    \"undetermined_actions\": [\"cf892\"]}}"},{"line_number":1326,"context_line":"```"},{"line_number":1327,"context_line":"Output: AT2 gets inhibited because its severity is low and will not be included in the group. AT3 is the source alarm. Since AT1 is in OK state,"},{"line_number":1328,"context_line":"it is not a source alarm. For grouping, AT1 and AT3 has the same host name but different state. So there will be two grouped notifications sent"},{"line_number":1329,"context_line":"out: “group\\_notification\\_rule\\_1\\_host1\\_ok[1]” and “group\\_notification\\_rule\\_1\\_host1\\_alarm[1]”."},{"line_number":1330,"context_line":"#####7.    Silence, Inhibit and Group Example"},{"line_number":1331,"context_line":"Four alarm transitions: AT1, AT2, AT3 and AT5"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_56a6d7c2","line":1328,"range":{"start_line":1328,"start_character":89,"end_line":1328,"end_character":94},"updated":"2017-06-19 16:50:49.000000000","message":"Nit: It is not explicit in the description above that the group notifications will be separated by state.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"    \"undetermined_actions\": [\"cf892\"]}}"},{"line_number":1326,"context_line":"```"},{"line_number":1327,"context_line":"Output: AT2 gets inhibited because its severity is low and will not be included in the group. AT3 is the source alarm. Since AT1 is in OK state,"},{"line_number":1328,"context_line":"it is not a source alarm. For grouping, AT1 and AT3 has the same host name but different state. So there will be two grouped notifications sent"},{"line_number":1329,"context_line":"out: “group\\_notification\\_rule\\_1\\_host1\\_ok[1]” and “group\\_notification\\_rule\\_1\\_host1\\_alarm[1]”."},{"line_number":1330,"context_line":"#####7.    Silence, Inhibit and Group Example"},{"line_number":1331,"context_line":"Four alarm transitions: AT1, AT2, AT3 and AT5"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_e3b6ccfa","line":1328,"range":{"start_line":1328,"start_character":12,"end_line":1328,"end_character":24},"in_reply_to":"7f231b9d_b6ee4bea","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"|| --- | --- | --- | ---"},{"line_number":1335,"context_line":"**\\_\\_alarmDefinitionId\\_\\_** | \"d42bc\" | \"d42bc\" | \"d42bc\" | \"d42bc\""},{"line_number":1336,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | OK | UNDETERMINED"},{"line_number":1337,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW | HIGH | HIGH"},{"line_number":1338,"context_line":"**hostname** | host1 | host2 | host1 | host3"},{"line_number":1339,"context_line":"**\\_\\_alarm_actions\\_\\_** | [] | [] | [] | []"},{"line_number":1340,"context_line":"**\\_\\_ok_actions\\_\\_** | [] | [] | [] | []"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_16b3bfea","line":1337,"range":{"start_line":1337,"start_character":23,"end_line":1337,"end_character":47},"updated":"2017-06-19 16:50:49.000000000","message":"A single alarm definition cannot have multiple severities","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"|| --- | --- | --- | ---"},{"line_number":1335,"context_line":"**\\_\\_alarmDefinitionId\\_\\_** | \"d42bc\" | \"d42bc\" | \"d42bc\" | \"d42bc\""},{"line_number":1336,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | OK | UNDETERMINED"},{"line_number":1337,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW | HIGH | HIGH"},{"line_number":1338,"context_line":"**hostname** | host1 | host2 | host1 | host3"},{"line_number":1339,"context_line":"**\\_\\_alarm_actions\\_\\_** | [] | [] | [] | []"},{"line_number":1340,"context_line":"**\\_\\_ok_actions\\_\\_** | [] | [] | [] | []"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_c3b990e9","line":1337,"range":{"start_line":1337,"start_character":23,"end_line":1337,"end_character":47},"in_reply_to":"7f231b9d_16b3bfea","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"Output: AT1 is in \"group\\_notification\\_rule\\_1\\_host1\\_alarm\" group and silenced. AT3 is in \"group\\_notification\\_rule\\_1\\_host1\\_ok\" group"},{"line_number":1376,"context_line":"and silenced. AT2 is in \"group\\_notification\\_rule\\_1\\_host2\\_alarm\" group and inhibited. AT5 is in"},{"line_number":1377,"context_line":"\"group\\_notification\\_rule\\_1\\_host3\\_undetermined\" group and will send notification “group\\_notification\\_rule\\_1\\_host3\\_undetermined[1]”"},{"line_number":1378,"context_line":"using undetermined action \"cf892\"."},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"# Common Request Headers"},{"line_number":1381,"context_line":"This section documents the common request headers that are used in requests."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_762d53fc","line":1378,"range":{"start_line":1378,"start_character":6,"end_line":1378,"end_character":18},"updated":"2017-06-19 16:50:49.000000000","message":"Nit: Same as previous nit","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"Output: AT1 is in \"group\\_notification\\_rule\\_1\\_host1\\_alarm\" group and silenced. AT3 is in \"group\\_notification\\_rule\\_1\\_host1\\_ok\" group"},{"line_number":1376,"context_line":"and silenced. AT2 is in \"group\\_notification\\_rule\\_1\\_host2\\_alarm\" group and inhibited. AT5 is in"},{"line_number":1377,"context_line":"\"group\\_notification\\_rule\\_1\\_host3\\_undetermined\" group and will send notification “group\\_notification\\_rule\\_1\\_host3\\_undetermined[1]”"},{"line_number":1378,"context_line":"using undetermined action \"cf892\"."},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"# Common Request Headers"},{"line_number":1381,"context_line":"This section documents the common request headers that are used in requests."}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_03c2e8e9","line":1378,"range":{"start_line":1378,"start_character":6,"end_line":1378,"end_character":18},"in_reply_to":"7f231b9d_762d53fc","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":4341,"context_line":""},{"line_number":4342,"context_line":"#### Request Examples"},{"line_number":4343,"context_line":"```"},{"line_number":4344,"context_line":"GET /v2.0/group-rules?name\u003dgroup_rule HTTP/1.1"},{"line_number":4345,"context_line":"Host: 192.168.10.4:8070"},{"line_number":4346,"context_line":"Content-Type: application/json"},{"line_number":4347,"context_line":"X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_d600a736","line":4344,"range":{"start_line":4344,"start_character":27,"end_line":4344,"end_character":37},"updated":"2017-06-19 16:50:49.000000000","message":"would this actually return \u0027group_rule_2\u0027 and \u0027group_rule_4\u0027?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":4341,"context_line":""},{"line_number":4342,"context_line":"#### Request Examples"},{"line_number":4343,"context_line":"```"},{"line_number":4344,"context_line":"GET /v2.0/group-rules?name\u003dgroup_rule HTTP/1.1"},{"line_number":4345,"context_line":"Host: 192.168.10.4:8070"},{"line_number":4346,"context_line":"Content-Type: application/json"},{"line_number":4347,"context_line":"X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_de09672c","line":4344,"range":{"start_line":4344,"start_character":27,"end_line":4344,"end_character":37},"in_reply_to":"7f231b9d_d600a736","updated":"2017-06-23 16:41:46.000000000","message":"I think this should be a list for all the group rules.","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":4457,"context_line":"#### Response Examples"},{"line_number":4458,"context_line":"```"},{"line_number":4459,"context_line":"{"},{"line_number":4460,"context_line":"  \"expression\": \"group by __alarmName__, __metricName__, hostName excluding {hostname\u003dhost2}\","},{"line_number":4461,"context_line":"  \"alarm_actions\": ["},{"line_number":4462,"context_line":"    \"bf718275-a483-43eb-b125-eb31058d3053\""},{"line_number":4463,"context_line":"  ],"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_369d9b09","line":4460,"range":{"start_line":4460,"start_character":66,"end_line":4460,"end_character":75},"updated":"2017-06-19 16:50:49.000000000","message":"wrong order on group by and excluding","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":4457,"context_line":"#### Response Examples"},{"line_number":4458,"context_line":"```"},{"line_number":4459,"context_line":"{"},{"line_number":4460,"context_line":"  \"expression\": \"group by __alarmName__, __metricName__, hostName excluding {hostname\u003dhost2}\","},{"line_number":4461,"context_line":"  \"alarm_actions\": ["},{"line_number":4462,"context_line":"    \"bf718275-a483-43eb-b125-eb31058d3053\""},{"line_number":4463,"context_line":"  ],"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_7e0ed332","line":4460,"range":{"start_line":4460,"start_character":66,"end_line":4460,"end_character":75},"in_reply_to":"7f231b9d_369d9b09","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"* name (string(255), required) - A name of the alarm. Note, the name must be unique."},{"line_number":5098,"context_line":"* description (string(255), optional) - A description of a silence definition."},{"line_number":5099,"context_line":"* expression (string(1024)) - The rule expression."},{"line_number":5100,"context_line":"* start_time (string, optional) - The start time in ISO 8601 combined date and time format in UTC. Any alarm state transition before this time will not be silenced. Defaults to the current time."},{"line_number":5101,"context_line":"* silence_duration (string, optional) - The length of time the silence should effect alarm state transitions. Defaults to \u002710m\u0027"},{"line_number":5102,"context_line":""},{"line_number":5103,"context_line":"#### Request Examples"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_561ff76a","line":5100,"range":{"start_line":5100,"start_character":165,"end_line":5100,"end_character":173},"updated":"2017-06-19 16:50:49.000000000","message":"Could move the defaults to the front so they are easier to find","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"* name (string(255), required) - A name of the alarm. Note, the name must be unique."},{"line_number":5098,"context_line":"* description (string(255), optional) - A description of a silence definition."},{"line_number":5099,"context_line":"* expression (string(1024)) - The rule expression."},{"line_number":5100,"context_line":"* start_time (string, optional) - The start time in ISO 8601 combined date and time format in UTC. Any alarm state transition before this time will not be silenced. Defaults to the current time."},{"line_number":5101,"context_line":"* silence_duration (string, optional) - The length of time the silence should effect alarm state transitions. Defaults to \u002710m\u0027"},{"line_number":5102,"context_line":""},{"line_number":5103,"context_line":"#### Request Examples"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_7eaa53d2","line":5100,"range":{"start_line":5100,"start_character":165,"end_line":5100,"end_character":173},"in_reply_to":"7f231b9d_561ff76a","updated":"2017-06-23 16:41:46.000000000","message":"Done","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"91d009a97ea74233ab92df4042014491f79afa6e","unresolved":false,"context_lines":[{"line_number":5164,"context_line":""},{"line_number":5165,"context_line":"#### Request Examples"},{"line_number":5166,"context_line":"```"},{"line_number":5167,"context_line":"GET /v2.0/silence-rules?name\u003dsilence_rule HTTP/1.1"},{"line_number":5168,"context_line":"Host: 192.168.10.4:8070"},{"line_number":5169,"context_line":"Content-Type: application/json"},{"line_number":5170,"context_line":"X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"7f231b9d_9600ef03","line":5167,"range":{"start_line":5167,"start_character":29,"end_line":5167,"end_character":41},"updated":"2017-06-19 16:50:49.000000000","message":"would this example actually return \u0027silence_rule_1\u0027 and \u0027silence_rule_2\u0027?","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"36dd4162fccac2896e5b72b4e62f602d883ce890","unresolved":false,"context_lines":[{"line_number":5164,"context_line":""},{"line_number":5165,"context_line":"#### Request Examples"},{"line_number":5166,"context_line":"```"},{"line_number":5167,"context_line":"GET /v2.0/silence-rules?name\u003dsilence_rule HTTP/1.1"},{"line_number":5168,"context_line":"Host: 192.168.10.4:8070"},{"line_number":5169,"context_line":"Content-Type: application/json"},{"line_number":5170,"context_line":"X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7"}],"source_content_type":"text/x-markdown","patch_set":20,"id":"5f201791_be810b4d","line":5167,"range":{"start_line":5167,"start_character":29,"end_line":5167,"end_character":41},"in_reply_to":"7f231b9d_9600ef03","updated":"2017-06-23 16:41:46.000000000","message":"should be GET /v2.0/silence-rules only","commit_id":"05127c6ee24e69de334633443935c9a09fd03a14"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"5937a8c7e0f01a585a78d1f57d93603276134b82","unresolved":false,"context_lines":[{"line_number":956,"context_line":"influence performance of the Notification Engine."},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_4d6c249b","line":959,"updated":"2017-06-17 15:31:40.000000000","message":"alarm grouping is when alarms are grouped?","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_dba34bb1","line":960,"range":{"start_line":960,"start_character":69,"end_line":960,"end_character":77},"updated":"2017-06-18 14:24:30.000000000","message":"Therefore","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":957,"context_line":""},{"line_number":958,"context_line":"### Group Rule"},{"line_number":959,"context_line":"Alarm Grouping is when a notification is grouped and sent to a notification method defined by the grouping rule. A group rule does"},{"line_number":960,"context_line":"not effect the notification actions defined in the alarm definition. Therefor, an alarm that has alarm actions specified in both the"},{"line_number":961,"context_line":"alarm definition and the group rule will trigger two notifications to be sent if it transitions to the ALARM state. An alarm is matched"},{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_90ed60f1","line":960,"range":{"start_line":960,"start_character":69,"end_line":960,"end_character":77},"in_reply_to":"7f231b9d_dba34bb1","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."},{"line_number":965,"context_line":"This will result in two group notifications being sent. The \"repeat\" parameter specifies the amount of time the notification should wait"},{"line_number":966,"context_line":"before it is re-sent by the Periodic Engine. Notification actions can also be specified for the alarm transitioning to any state by"},{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_7bac379e","line":965,"range":{"start_line":965,"start_character":60,"end_line":965,"end_character":67},"updated":"2017-06-18 14:24:30.000000000","message":"repeat_interval","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":962,"context_line":"to a group rule by expression. Please see [Group Rule Matching](# Group Rule Matching) for more information. A group rule also has"},{"line_number":963,"context_line":"a \"group\\_wait\" parameter which specifies the window that the Notification Engine waits for notifications to pull down a batch to be examined."},{"line_number":964,"context_line":"Note that it is possible for some notification to come in right before the window expires and some to come in right after a new window starts."},{"line_number":965,"context_line":"This will result in two group notifications being sent. The \"repeat\" parameter specifies the amount of time the notification should wait"},{"line_number":966,"context_line":"before it is re-sent by the Periodic Engine. Notification actions can also be specified for the alarm transitioning to any state by"},{"line_number":967,"context_line":"using the parameters: \"alarm\\_actions\", \"ok\\_actions\", and \"undetermined\\_actions\"."},{"line_number":968,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_b0f05ccb","line":965,"range":{"start_line":965,"start_character":60,"end_line":965,"end_character":67},"in_reply_to":"7f231b9d_7bac379e","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."},{"line_number":974,"context_line":"In the case where a source and target alarm both transition back to OK or UNDETERMINED, the target alarm will not send a notification."},{"line_number":975,"context_line":"There is a window where, for a period of time after a source alarm transitions out of ALARM, no target alarm notification will be sent."},{"line_number":976,"context_line":"Any alarm matching an inhibition rule must wait for some configured wait time to ensure proper behavior. See the Notification Manager"},{"line_number":977,"context_line":"documentation for configuration information."},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"Great care should be taken when choosing source alarms for two reasons:"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_1b9d4365","line":976,"range":{"start_line":976,"start_character":22,"end_line":976,"end_character":37},"updated":"2017-06-18 14:24:30.000000000","message":"inhibit rule","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":973,"context_line":"not send any notifications. If the source alarm is in  OK or UNDETERMINED state, then the target alarm will send notifications like normal."},{"line_number":974,"context_line":"In the case where a source and target alarm both transition back to OK or UNDETERMINED, the target alarm will not send a notification."},{"line_number":975,"context_line":"There is a window where, for a period of time after a source alarm transitions out of ALARM, no target alarm notification will be sent."},{"line_number":976,"context_line":"Any alarm matching an inhibition rule must wait for some configured wait time to ensure proper behavior. See the Notification Manager"},{"line_number":977,"context_line":"documentation for configuration information."},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"Great care should be taken when choosing source alarms for two reasons:"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_50c10854","line":976,"range":{"start_line":976,"start_character":22,"end_line":976,"end_character":37},"in_reply_to":"7f231b9d_1b9d4365","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":981,"context_line":"the same reason that the target alarms would. For example, a source alarm indicating a region went down should not transition to"},{"line_number":982,"context_line":"UNDETERMINED if the region goes down."},{"line_number":983,"context_line":"2. It is possible for a source alarm to have multiple metrics. This means that the \"group by\" section of an inhibition expression"},{"line_number":984,"context_line":"will have unpredictable results when a metric dimension is specified here. For example, an alarm with multiple \"hostName\" dimensions"},{"line_number":985,"context_line":"in it matches an inhibit rule\u0027s group by \"hostName\" multiple times and will inhibit multiple target alarms. It is recommended that a"},{"line_number":986,"context_line":"source alarm be specific enough to only inhibit intended target alarms."},{"line_number":987,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_bb8f6f28","line":984,"range":{"start_line":984,"start_character":112,"end_line":984,"end_character":120},"updated":"2017-06-18 14:24:30.000000000","message":"hostname","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":981,"context_line":"the same reason that the target alarms would. For example, a source alarm indicating a region went down should not transition to"},{"line_number":982,"context_line":"UNDETERMINED if the region goes down."},{"line_number":983,"context_line":"2. It is possible for a source alarm to have multiple metrics. This means that the \"group by\" section of an inhibition expression"},{"line_number":984,"context_line":"will have unpredictable results when a metric dimension is specified here. For example, an alarm with multiple \"hostName\" dimensions"},{"line_number":985,"context_line":"in it matches an inhibit rule\u0027s group by \"hostName\" multiple times and will inhibit multiple target alarms. It is recommended that a"},{"line_number":986,"context_line":"source alarm be specific enough to only inhibit intended target alarms."},{"line_number":987,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_8d566729","line":984,"range":{"start_line":984,"start_character":112,"end_line":984,"end_character":120},"in_reply_to":"7f231b9d_bb8f6f28","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":982,"context_line":"UNDETERMINED if the region goes down."},{"line_number":983,"context_line":"2. It is possible for a source alarm to have multiple metrics. This means that the \"group by\" section of an inhibition expression"},{"line_number":984,"context_line":"will have unpredictable results when a metric dimension is specified here. For example, an alarm with multiple \"hostName\" dimensions"},{"line_number":985,"context_line":"in it matches an inhibit rule\u0027s group by \"hostName\" multiple times and will inhibit multiple target alarms. It is recommended that a"},{"line_number":986,"context_line":"source alarm be specific enough to only inhibit intended target alarms."},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"### Silence Rule"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_7b855706","line":985,"range":{"start_line":985,"start_character":41,"end_line":985,"end_character":51},"updated":"2017-06-18 14:24:30.000000000","message":"hostname","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":982,"context_line":"UNDETERMINED if the region goes down."},{"line_number":983,"context_line":"2. It is possible for a source alarm to have multiple metrics. This means that the \"group by\" section of an inhibition expression"},{"line_number":984,"context_line":"will have unpredictable results when a metric dimension is specified here. For example, an alarm with multiple \"hostName\" dimensions"},{"line_number":985,"context_line":"in it matches an inhibit rule\u0027s group by \"hostName\" multiple times and will inhibit multiple target alarms. It is recommended that a"},{"line_number":986,"context_line":"source alarm be specific enough to only inhibit intended target alarms."},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"### Silence Rule"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_6d31cb0b","line":985,"range":{"start_line":985,"start_character":41,"end_line":985,"end_character":51},"in_reply_to":"7f231b9d_7b855706","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"8d436bfe6ae37c1cef007d6d60945f8eb85779fd","unresolved":false,"context_lines":[{"line_number":990,"context_line":"alarms that match the rule\u0027s expression are tagged in the database as silenced by the Notification Engine and the Notification"},{"line_number":991,"context_line":"Engine is responsible for keeping the database up-to-date. A silence rule has the parameters \"start\\_time\" and \"silence\\_duration\". Together"},{"line_number":992,"context_line":"these parameters define when the rule is active and valid. The start time should be in ISO 8601 combined date and time format in UTC."},{"line_number":993,"context_line":"The silence duration is a string built of non delimited value and labels from the table below. For example \"1y2d3h4m5s\" would define the duration"},{"line_number":994,"context_line":"of one year and two days and three hours and four minutes and five seconds. Each label is preceded by an integer amount of that label, and"},{"line_number":995,"context_line":"there should be no spaces between each value and label pair in the silence duration string."},{"line_number":996,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_960d6140","line":993,"range":{"start_line":993,"start_character":108,"end_line":993,"end_character":110},"updated":"2017-06-21 16:26:03.000000000","message":"Year should be taken out because it is not accepted","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":990,"context_line":"alarms that match the rule\u0027s expression are tagged in the database as silenced by the Notification Engine and the Notification"},{"line_number":991,"context_line":"Engine is responsible for keeping the database up-to-date. A silence rule has the parameters \"start\\_time\" and \"silence\\_duration\". Together"},{"line_number":992,"context_line":"these parameters define when the rule is active and valid. The start time should be in ISO 8601 combined date and time format in UTC."},{"line_number":993,"context_line":"The silence duration is a string built of non delimited value and labels from the table below. For example \"1y2d3h4m5s\" would define the duration"},{"line_number":994,"context_line":"of one year and two days and three hours and four minutes and five seconds. Each label is preceded by an integer amount of that label, and"},{"line_number":995,"context_line":"there should be no spaces between each value and label pair in the silence duration string."},{"line_number":996,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_6d4c2b9e","line":993,"range":{"start_line":993,"start_character":108,"end_line":993,"end_character":110},"in_reply_to":"5f201791_960d6140","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"8d436bfe6ae37c1cef007d6d60945f8eb85779fd","unresolved":false,"context_lines":[{"line_number":996,"context_line":""},{"line_number":997,"context_line":"| time | label |"},{"line_number":998,"context_line":"| ---- | ----- |"},{"line_number":999,"context_line":"| year | y |"},{"line_number":1000,"context_line":"| day | d |"},{"line_number":1001,"context_line":"| hour | h|"},{"line_number":1002,"context_line":"| minute | m|"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_b6185d81","line":999,"range":{"start_line":999,"start_character":0,"end_line":999,"end_character":12},"updated":"2017-06-21 16:26:03.000000000","message":"Year should be taken out because it is not accepted","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":996,"context_line":""},{"line_number":997,"context_line":"| time | label |"},{"line_number":998,"context_line":"| ---- | ----- |"},{"line_number":999,"context_line":"| year | y |"},{"line_number":1000,"context_line":"| day | d |"},{"line_number":1001,"context_line":"| hour | h|"},{"line_number":1002,"context_line":"| minute | m|"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_ed5f1b3f","line":999,"range":{"start_line":999,"start_character":0,"end_line":999,"end_character":12},"in_reply_to":"5f201791_b6185d81","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":1139,"context_line":"Group   --\u003e Inhibit? No"},{"line_number":1140,"context_line":"Group   --\u003e Silence? No"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"If two rules are applied to the same alarm, is the alarm sent?"},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"| Rule | Group | Inhibit | Silence |"},{"line_number":1145,"context_line":"| ---- | ----- | ------- | ------- |"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_5ba5fba0","line":1142,"range":{"start_line":1142,"start_character":51,"end_line":1142,"end_character":56},"updated":"2017-06-18 14:24:30.000000000","message":"notification?","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a9916a26712fbd91d1742f00922fadb6b65dc28e","unresolved":false,"context_lines":[{"line_number":1139,"context_line":"Group   --\u003e Inhibit? No"},{"line_number":1140,"context_line":"Group   --\u003e Silence? No"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"If two rules are applied to the same alarm, is the alarm sent?"},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"| Rule | Group | Inhibit | Silence |"},{"line_number":1145,"context_line":"| ---- | ----- | ------- | ------- |"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_4d360f06","line":1142,"range":{"start_line":1142,"start_character":51,"end_line":1142,"end_character":56},"in_reply_to":"7f231b9d_5ba5fba0","updated":"2017-06-21 20:27:04.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":1159,"context_line":"||--- | ---"},{"line_number":1160,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"SilenceRule1:"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"```"},{"line_number":1165,"context_line":"{\"alarm-silencing-definition-created\":{"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_dbba2bbf","line":1162,"range":{"start_line":1162,"start_character":0,"end_line":1162,"end_character":12},"updated":"2017-06-18 14:24:30.000000000","message":"This is not the silence rule, its the event sending to kafka instead.","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"cbcabb9ca2773789bfd0578f8a8cca4920558362","unresolved":false,"context_lines":[{"line_number":1159,"context_line":"||--- | ---"},{"line_number":1160,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"SilenceRule1:"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"```"},{"line_number":1165,"context_line":"{\"alarm-silencing-definition-created\":{"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_58732f4e","line":1162,"range":{"start_line":1162,"start_character":0,"end_line":1162,"end_character":12},"in_reply_to":"7f231b9d_1b0aca1e","updated":"2017-06-23 16:44:54.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"f2c1d4284ec89853dcfaadc9c62025067214d8d3","unresolved":false,"context_lines":[{"line_number":1159,"context_line":"||--- | ---"},{"line_number":1160,"context_line":"**\\_\\_severity\\_\\_** | HIGH | LOW"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"SilenceRule1:"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"```"},{"line_number":1165,"context_line":"{\"alarm-silencing-definition-created\":{"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_1b0aca1e","line":1162,"range":{"start_line":1162,"start_character":0,"end_line":1162,"end_character":12},"in_reply_to":"7f231b9d_dbba2bbf","updated":"2017-06-19 15:52:14.000000000","message":"Good point. These examples should all have expressions instead of the Kafka event","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"**\\_\\_alarmName\\_\\_** | \"cpu high\" | \"memory high\" | \"vm is dead\""},{"line_number":1182,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | ALARM"},{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"InhibitionRule1 \u003d"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"```"},{"line_number":1187,"context_line":"{\"inhibit-rule-created\": {"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_bbbd2fb8","line":1184,"range":{"start_line":1184,"start_character":0,"end_line":1184,"end_character":15},"updated":"2017-06-18 14:24:30.000000000","message":"same here","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"cbcabb9ca2773789bfd0578f8a8cca4920558362","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"**\\_\\_alarmName\\_\\_** | \"cpu high\" | \"memory high\" | \"vm is dead\""},{"line_number":1182,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | ALARM"},{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"InhibitionRule1 \u003d"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"```"},{"line_number":1187,"context_line":"{\"inhibit-rule-created\": {"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_9879c730","line":1184,"range":{"start_line":1184,"start_character":0,"end_line":1184,"end_character":15},"in_reply_to":"7f231b9d_bbbd2fb8","updated":"2017-06-23 16:44:54.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | ALARM"},{"line_number":1207,"context_line":"**\\_\\_alarm_actions\\_\\_** | [\"123ab\"] | [\"cd839\"] | []"},{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"GroupingRule1:"},{"line_number":1210,"context_line":"```"},{"line_number":1211,"context_line":"{\"alarm-grouping-definition-created\": {"},{"line_number":1212,"context_line":"    \"name\": \"group_rule_2\","}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_9bb033df","line":1209,"range":{"start_line":1209,"start_character":0,"end_line":1209,"end_character":13},"updated":"2017-06-18 14:24:30.000000000","message":"same here","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"cbcabb9ca2773789bfd0578f8a8cca4920558362","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"**\\_\\_state\\_\\_** | ALARM | ALARM | ALARM"},{"line_number":1207,"context_line":"**\\_\\_alarm_actions\\_\\_** | [\"123ab\"] | [\"cd839\"] | []"},{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"GroupingRule1:"},{"line_number":1210,"context_line":"```"},{"line_number":1211,"context_line":"{\"alarm-grouping-definition-created\": {"},{"line_number":1212,"context_line":"    \"name\": \"group_rule_2\","}],"source_content_type":"text/x-markdown","patch_set":21,"id":"5f201791_38907343","line":1209,"range":{"start_line":1209,"start_character":0,"end_line":1209,"end_character":13},"in_reply_to":"7f231b9d_9bb033df","updated":"2017-06-23 16:44:54.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"efc90b92297f8dae260c3be26da9732099fde764","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"    \"undetermined_actions\": [\"cf892\"]}}"},{"line_number":1221,"context_line":"```"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"Output: Generate two grouped notifications “group\\_notification\\_rule\\_1\\_host1\\_alarm[2]” and “group\\_notification\\_rule\\_1\\_host2\\_alarm[1]”."},{"line_number":1224,"context_line":"Both using alarm\\_actions [\"cd892\"]. Also since AT1 and AT2 has their own alarm actions associated with them, there will be two more"},{"line_number":1225,"context_line":"notifications sent out making 4 total notifications sent out."},{"line_number":1226,"context_line":"#####4.    Silence and Group Example"},{"line_number":1227,"context_line":"Four alarm transitions: AT1, AT2, AT3 and AT4"},{"line_number":1228,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_3bc91f58","line":1225,"range":{"start_line":1223,"start_character":0,"end_line":1225,"end_character":61},"updated":"2017-06-18 14:24:30.000000000","message":"I remember we discussed and changed the behavior to this a while ago. Do you remember why we send 4 notifications instead of 2? Feels like this defeats the purpose of grouping.","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"f2c1d4284ec89853dcfaadc9c62025067214d8d3","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"    \"undetermined_actions\": [\"cf892\"]}}"},{"line_number":1221,"context_line":"```"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"Output: Generate two grouped notifications “group\\_notification\\_rule\\_1\\_host1\\_alarm[2]” and “group\\_notification\\_rule\\_1\\_host2\\_alarm[1]”."},{"line_number":1224,"context_line":"Both using alarm\\_actions [\"cd892\"]. Also since AT1 and AT2 has their own alarm actions associated with them, there will be two more"},{"line_number":1225,"context_line":"notifications sent out making 4 total notifications sent out."},{"line_number":1226,"context_line":"#####4.    Silence and Group Example"},{"line_number":1227,"context_line":"Four alarm transitions: AT1, AT2, AT3 and AT4"},{"line_number":1228,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7f231b9d_7b39bea1","line":1225,"range":{"start_line":1223,"start_character":0,"end_line":1225,"end_character":61},"in_reply_to":"7f231b9d_3bc91f58","updated":"2017-06-19 15:52:14.000000000","message":"We send 4 notifications because the original alarms still has alarm actions. Grouping should not be used to reduce notifications in the system. Grouping should be set up in a way such that the user knows they will be getting more notifications for each group rule they define. If the intent is to reduce notifications, then the alarm definitions need to be modified.","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":4615,"context_line":""},{"line_number":4616,"context_line":"* name (string(255), optional) - Name of group rule."},{"line_number":4617,"context_line":"* description (string(255), optional) - A description of the group rule."},{"line_number":4618,"context_line":"* expression (string(1024), optional) - The rule expression. Note, the expression must not change."},{"line_number":4619,"context_line":"* group_wait (string(10), optional) - Wait time to send the initial notification."},{"line_number":4620,"context_line":"* repeat_interval (string(10), optional) - Wait time to resend the group notification."},{"line_number":4621,"context_line":"* alarm_actions ([string], optional) - Array of notification method IDs that are invoked when the group of alarms for this definition transition to the `ALARM` state."}],"source_content_type":"text/x-markdown","patch_set":32,"id":"3f1d235d_a3a20b4a","line":4618,"updated":"2017-07-04 09:45:19.000000000","message":"Seems a bit odd to include this as possible value that can be send if it is prohibited anyway.","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/api/server.py":[{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    healthchecks \u003d simport.load(cfg.CONF.dispatcher.healthchecks)()"},{"line_number":140,"context_line":"    app.add_route(\"/healthcheck\", healthchecks)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    group_rules \u003d simport.load(cfg.CONF.dispatcher.alarm_group_definitions)()"},{"line_number":143,"context_line":"    app.add_route(\"/v2.0/group-rules/\", group_rules)"},{"line_number":144,"context_line":"    app.add_route(\"/v2.0/group-rules/{group_rule_id}\", group_rules)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_c7ce0159","line":142,"range":{"start_line":142,"start_character":51,"end_line":142,"end_character":74},"updated":"2017-09-21 17:32:30.000000000","message":"group_rules","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"}],"monasca_api/common/repositories/constants.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"22323eeb4b44494673ae78af8e6102d184a06575","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"PAGE_LIMIT \u003d 10000"},{"line_number":18,"context_line":"RULE_DESCRIPTION \u003d \u0027\u0027"},{"line_number":19,"context_line":"SILENCE_RULE_START_TIME \u003d datetime.datetime.now().strftime("},{"line_number":20,"context_line":"    \"%Y-%m-%dT%H:%M:%S.%f\")[:-3] + \u0027Z\u0027"},{"line_number":21,"context_line":"SILENCE_RULE_SILENCE_DURATION \u003d \u002710m\u0027"},{"line_number":22,"context_line":"GROUP_RULE_GROUP_WAIT \u003d \u002730s\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_415ba52d","line":19,"range":{"start_line":19,"start_character":44,"end_line":19,"end_character":49},"updated":"2017-06-20 17:09:19.000000000","message":"I don\u0027t think this is working the way you expect. As written, this should return whatever time the API started.","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"PAGE_LIMIT \u003d 10000"},{"line_number":18,"context_line":"RULE_DESCRIPTION \u003d \u0027\u0027"},{"line_number":19,"context_line":"SILENCE_RULE_START_TIME \u003d datetime.datetime.now().strftime("},{"line_number":20,"context_line":"    \"%Y-%m-%dT%H:%M:%S.%f\")[:-3] + \u0027Z\u0027"},{"line_number":21,"context_line":"SILENCE_RULE_SILENCE_DURATION \u003d \u002710m\u0027"},{"line_number":22,"context_line":"GROUP_RULE_GROUP_WAIT \u003d \u002730s\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_f0cb7450","line":19,"range":{"start_line":19,"start_character":44,"end_line":19,"end_character":49},"in_reply_to":"5f201791_415ba52d","updated":"2017-06-22 16:38:41.000000000","message":"Yes you are right. I moved this into silence_ruls,py under v2/reference","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"5169cc0cd80ead889a1636acf5f04cbe8732c207","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import datetime"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"PAGE_LIMIT \u003d 10000"},{"line_number":18,"context_line":"RULE_DESCRIPTION \u003d \u0027\u0027"},{"line_number":19,"context_line":"SILENCE_RULE_START_TIME \u003d datetime.datetime.now().strftime("},{"line_number":20,"context_line":"    \"%Y-%m-%dT%H:%M:%S.%f\")[:-3] + \u0027Z\u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f201791_c39b02c7","line":17,"updated":"2017-10-25 11:44:18.000000000","message":"can we put some documentation over these constants ?\nmainly: what\u0027s their purpose, where they\u0027ll be used in what context ?","commit_id":"54e8b7ec971755547c68b7ab0e80200f550429a0"}],"monasca_api/common/repositories/sqla/group_rules_repository.py":[{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                               label(\u0027undetermined_actions\u0027)])"},{"line_number":65,"context_line":"                       .select_from(gr_au)"},{"line_number":66,"context_line":"                       .where(gr_au.c.alarm_state \u003d\u003d text(\"\u0027UNDETERMINED\u0027\"))"},{"line_number":67,"context_line":"                       .group_by(gr_au.c.alarm_group_definition_id)"},{"line_number":68,"context_line":"                       .alias(\u0027gr_action_u\u0027))"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.base_query_from \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_677a95f1","line":67,"range":{"start_line":67,"start_character":41,"end_line":67,"end_character":66},"updated":"2017-09-21 17:32:30.000000000","message":"group_rule_id","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            gr_s.outerjoin(gr_action_a,"},{"line_number":72,"context_line":"                           gr_action_a.c.group_rule_id \u003d\u003d gr_s.c.rule_id)"},{"line_number":73,"context_line":"                .outerjoin(gr_action_o,"},{"line_number":74,"context_line":"                           gr_action_o.c.group_rule_id \u003d\u003d gr_s.c.id)"},{"line_number":75,"context_line":"                .outerjoin(gr_action_u,"},{"line_number":76,"context_line":"                           gr_action_u.c.group_rule_id \u003d\u003d gr_s.c.id))"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_6763b543","line":74,"range":{"start_line":74,"start_character":65,"end_line":74,"end_character":67},"updated":"2017-09-21 17:32:30.000000000","message":"rule_id","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                .outerjoin(gr_action_o,"},{"line_number":74,"context_line":"                           gr_action_o.c.group_rule_id \u003d\u003d gr_s.c.id)"},{"line_number":75,"context_line":"                .outerjoin(gr_action_u,"},{"line_number":76,"context_line":"                           gr_action_u.c.group_rule_id \u003d\u003d gr_s.c.id))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.base_query \u003d (select([gr_s.c.rule_id,"},{"line_number":79,"context_line":"                                   gr_s.c.name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_a7e1cd9d","line":76,"range":{"start_line":76,"start_character":65,"end_line":76,"end_character":67},"updated":"2017-09-21 17:32:30.000000000","message":"rule_id","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                if patch:"},{"line_number":224,"context_line":"                    new_group_wait \u003d original_row[\u0027group_wait\u0027]"},{"line_number":225,"context_line":"                else:"},{"line_number":226,"context_line":"                    new_group_wait \u003d \u002730s\u0027.encode(\u0027utf8\u0027)  # default"},{"line_number":227,"context_line":"            else:"},{"line_number":228,"context_line":"                new_group_wait \u003d group_wait.encode(\u0027utf8\u0027)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_138bf667","line":226,"range":{"start_line":226,"start_character":20,"end_line":226,"end_character":68},"updated":"2017-06-05 15:55:49.000000000","message":"Updates should have all of the fields defined. This should never be hit. Same for below","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"0f60b10ceeb37a1088bcbae5ef565dd860defe7d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                if patch:"},{"line_number":224,"context_line":"                    new_group_wait \u003d original_row[\u0027group_wait\u0027]"},{"line_number":225,"context_line":"                else:"},{"line_number":226,"context_line":"                    new_group_wait \u003d \u002730s\u0027.encode(\u0027utf8\u0027)  # default"},{"line_number":227,"context_line":"            else:"},{"line_number":228,"context_line":"                new_group_wait \u003d group_wait.encode(\u0027utf8\u0027)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_bbe18a2d","line":226,"range":{"start_line":226,"start_character":20,"end_line":226,"end_character":68},"in_reply_to":"df140735_138bf667","updated":"2017-06-06 23:19:47.000000000","message":"I think here  we allow group_wait\u003dNone for example in update and then it will hit the line.","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"            # Delete old actions"},{"line_number":255,"context_line":"            if patch:"},{"line_number":256,"context_line":"                if alarm_actions:"},{"line_number":257,"context_line":"                    self._delete_group_rule_actions("},{"line_number":258,"context_line":"                        conn, group_rule_id, \u0027ALARM\u0027)"},{"line_number":259,"context_line":"                if ok_actions:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_9342660e","line":256,"range":{"start_line":256,"start_character":19,"end_line":256,"end_character":32},"updated":"2017-06-05 15:55:49.000000000","message":"On a patch, how would I say that I want to delete all of alarm actions? They are only deleted if alarm_actions has more than one element","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"0f60b10ceeb37a1088bcbae5ef565dd860defe7d","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"            # Delete old actions"},{"line_number":255,"context_line":"            if patch:"},{"line_number":256,"context_line":"                if alarm_actions:"},{"line_number":257,"context_line":"                    self._delete_group_rule_actions("},{"line_number":258,"context_line":"                        conn, group_rule_id, \u0027ALARM\u0027)"},{"line_number":259,"context_line":"                if ok_actions:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_bb686a87","line":256,"range":{"start_line":256,"start_character":19,"end_line":256,"end_character":32},"in_reply_to":"df140735_9342660e","updated":"2017-06-06 23:19:47.000000000","message":"On a patch, if you want to change alarm_actions, you will specify the new alarm_actions\u003d[notification_id1, notification_id2, ...].  Then you will need to delete the alarm_actions in the action table and insert the new ids into the action table. Sorry maybe I misunderstand your question hmm but does that make sense?","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                                       b_tenant_id\u003dtenant_id).fetchone()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"            if not updated_row:"},{"line_number":298,"context_line":"                raise Exception(\"Failed to find current group rule\")"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"            # Return the group rule"},{"line_number":301,"context_line":"            return updated_row"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_b358caf9","line":298,"updated":"2017-06-05 15:55:49.000000000","message":"Should add the id to the exception","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"0f60b10ceeb37a1088bcbae5ef565dd860defe7d","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                                       b_tenant_id\u003dtenant_id).fetchone()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"            if not updated_row:"},{"line_number":298,"context_line":"                raise Exception(\"Failed to find current group rule\")"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"            # Return the group rule"},{"line_number":301,"context_line":"            return updated_row"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_3b121a0b","line":298,"in_reply_to":"df140735_b358caf9","updated":"2017-06-06 23:19:47.000000000","message":"Done","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                                  b_tenant_id\u003dtenant_id,"},{"line_number":311,"context_line":"                                  b_id\u003dgroup_rule_id)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"            if cursor.rowcount \u003c 1:"},{"line_number":314,"context_line":"                return False"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            return True"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def _get_group_rule(self, conn, tenant_id, _rule_id):"},{"line_number":319,"context_line":"        gr \u003d self.gr"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_73e912e4","line":316,"range":{"start_line":313,"start_character":12,"end_line":316,"end_character":23},"updated":"2017-06-05 15:55:49.000000000","message":"The succinct way is:\n\nreturn cursor.rowcount \u003e 0","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"0f60b10ceeb37a1088bcbae5ef565dd860defe7d","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                                  b_tenant_id\u003dtenant_id,"},{"line_number":311,"context_line":"                                  b_id\u003dgroup_rule_id)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"            if cursor.rowcount \u003c 1:"},{"line_number":314,"context_line":"                return False"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            return True"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def _get_group_rule(self, conn, tenant_id, _rule_id):"},{"line_number":319,"context_line":"        gr \u003d self.gr"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_7b31b2a2","line":316,"range":{"start_line":313,"start_character":12,"end_line":316,"end_character":23},"in_reply_to":"df140735_73e912e4","updated":"2017-06-06 23:19:47.000000000","message":"Good point!! Perhaps cursor.rowcount \u003e\u003d 0?","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c9022efb94f9f9bc029a6f592157435a73ec4759","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                                  b_tenant_id\u003dtenant_id,"},{"line_number":311,"context_line":"                                  b_id\u003dgroup_rule_id)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"            if cursor.rowcount \u003c 1:"},{"line_number":314,"context_line":"                return False"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            return True"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def _get_group_rule(self, conn, tenant_id, _rule_id):"},{"line_number":319,"context_line":"        gr \u003d self.gr"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_01890925","line":316,"range":{"start_line":313,"start_character":12,"end_line":316,"end_character":23},"in_reply_to":"df140735_7b31b2a2","updated":"2017-06-07 15:56:59.000000000","message":"Sorry you are right. I think \u003e0 is correct!","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from monasca_api.common.repositories import group_rules_repository as grr"},{"line_number":21,"context_line":"from monasca_api.common.repositories.sqla import models"},{"line_number":22,"context_line":"from monasca_api.common.repositories.sqla import sql_repository"},{"line_number":23,"context_line":"from sqlalchemy import MetaData, insert, update, delete"},{"line_number":24,"context_line":"from sqlalchemy import select, text, bindparam, null"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_531da90d","line":23,"updated":"2017-06-07 09:34:36.000000000","message":"those imports should be grouped together with oslo_utils (project requirements)","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"}],"monasca_api/common/repositories/sqla/inhibit_rules_repository.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            return ir_id"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @sql_repository.sql_try_catch_block"},{"line_number":80,"context_line":"    def get_inhibit_rules(self, tenant_id, name\u003dNone, offset\u003dNone, limit\u003d1000):"},{"line_number":81,"context_line":"        with self._db_engine.connect() as conn:"},{"line_number":82,"context_line":"            irs \u003d self.ir_s"},{"line_number":83,"context_line":"            params \u003d {\u0027b_tenant_id\u0027: tenant_id}"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_53a04e90","line":80,"range":{"start_line":80,"start_character":73,"end_line":80,"end_character":77},"updated":"2017-06-05 15:55:49.000000000","message":"This should not have a default. It needs to be passed in from the resource.","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"500c51f627024238e8d97dc80311892f76cc1188","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            return ir_id"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @sql_repository.sql_try_catch_block"},{"line_number":80,"context_line":"    def get_inhibit_rules(self, tenant_id, name\u003dNone, offset\u003dNone, limit\u003d1000):"},{"line_number":81,"context_line":"        with self._db_engine.connect() as conn:"},{"line_number":82,"context_line":"            irs \u003d self.ir_s"},{"line_number":83,"context_line":"            params \u003d {\u0027b_tenant_id\u0027: tenant_id}"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf091321_2c4aeb7f","line":80,"range":{"start_line":80,"start_character":73,"end_line":80,"end_character":77},"in_reply_to":"df140735_53a04e90","updated":"2017-06-07 22:00:05.000000000","message":"Done","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                new_expression \u003d original_row[\u0027expression\u0027]"},{"line_number":131,"context_line":"            else:"},{"line_number":132,"context_line":"                new_expression \u003d expression.encode(\u0027utf8\u0027)"},{"line_number":133,"context_line":"            if new_expression !\u003d original_row[\u0027expression\u0027]:"},{"line_number":134,"context_line":"                msg \u003d \"expression must not change {} vs {}.\".format("},{"line_number":135,"context_line":"                    expression, original_row[\u0027expression\u0027]).encode(\u0027utf8\u0027)"},{"line_number":136,"context_line":"                raise exceptions.InvalidUpdateException(msg)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"            conn.execute("},{"line_number":139,"context_line":"                self.update_ir_query"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_f3df620a","line":136,"range":{"start_line":133,"start_character":0,"end_line":136,"end_character":60},"updated":"2017-06-05 15:55:49.000000000","message":"Indent under the above else.","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"da5a46872537500bac5975930437611ff078d9e8","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                new_expression \u003d original_row[\u0027expression\u0027]"},{"line_number":131,"context_line":"            else:"},{"line_number":132,"context_line":"                new_expression \u003d expression.encode(\u0027utf8\u0027)"},{"line_number":133,"context_line":"            if new_expression !\u003d original_row[\u0027expression\u0027]:"},{"line_number":134,"context_line":"                msg \u003d \"expression must not change {} vs {}.\".format("},{"line_number":135,"context_line":"                    expression, original_row[\u0027expression\u0027]).encode(\u0027utf8\u0027)"},{"line_number":136,"context_line":"                raise exceptions.InvalidUpdateException(msg)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"            conn.execute("},{"line_number":139,"context_line":"                self.update_ir_query"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_6109e52f","line":136,"range":{"start_line":133,"start_character":0,"end_line":136,"end_character":60},"in_reply_to":"df140735_f3df620a","updated":"2017-06-07 17:09:19.000000000","message":"Done","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"}],"monasca_api/common/repositories/sqla/models.py":[{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                 Column(\u0027tenant_id\u0027, String(36)),"},{"line_number":151,"context_line":"                 Column(\u0027name\u0027, String(255)),"},{"line_number":152,"context_line":"                 Column(\u0027expression\u0027, String(1024)),"},{"line_number":153,"context_line":"                 Column(\u0027description\u0027, String(255)),"},{"line_number":154,"context_line":"                 Column(\u0027created_at\u0027, DateTime),"},{"line_number":155,"context_line":"                 Column(\u0027updated_at\u0027, DateTime),"},{"line_number":156,"context_line":"                 Column(\u0027deleted_at\u0027, DateTime))"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_6764d522","line":153,"range":{"start_line":153,"start_character":17,"end_line":153,"end_character":51},"updated":"2017-09-21 17:32:30.000000000","message":"I think you are missing:\n                 Column(\u0027group_wait\u0027, String(5)),\n                 Column(\u0027repeat_interval\u0027, String(5)),","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"def create_sr_model(metadata\u003dNone):"},{"line_number":172,"context_line":"    return Table(\u0027silence_rule\u0027, metadata,"},{"line_number":173,"context_line":"                 Column(\u0027rule_id\u0027, String(36)),"},{"line_number":174,"context_line":"                 Column(\u0027expression\u0027, String(1024)),"},{"line_number":175,"context_line":"                 Column(\u0027description\u0027, String(255)),"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_27113d5e","line":172,"range":{"start_line":172,"start_character":4,"end_line":172,"end_character":16},"updated":"2017-09-21 17:32:30.000000000","message":"I think you are missing:\n                 Column(\u0027tenant_id\u0027, String(36)),\n                 Column(\u0027name\u0027, String(255)),\n                 Column(\u0027created_at\u0027, DateTime),\n                 Column(\u0027updated_at\u0027, DateTime),\n                 Column(\u0027deleted_at\u0027, DateTime))","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"}],"monasca_api/common/repositories/sqla/silence_rules_repository.py":[{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"121cdfd5e2c36c98c84756340ff81211fecd8cec","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        sr_s \u003d sr.alias(\u0027sr\u0027)"},{"line_number":36,"context_line":"        self.sr_s \u003d sr_s"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.base_query \u003d (select([sr_s.c.id,"},{"line_number":39,"context_line":"                                   sr_s.c.name,"},{"line_number":40,"context_line":"                                   sr_s.c.expression,"},{"line_number":41,"context_line":"                                   sr_s.c.start_time,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_27437d6e","line":38,"range":{"start_line":38,"start_character":42,"end_line":38,"end_character":44},"updated":"2017-09-21 17:32:30.000000000","message":"rule_id","commit_id":"2f8c0d16e34da82fc105f4ec09e10b76b2f64a91"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"d660b80467b03c84863109e732ac0388df5cf781","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                if patch:"},{"line_number":146,"context_line":"                    new_start_time \u003d original_row[\u0027start_time\u0027]"},{"line_number":147,"context_line":"                else:"},{"line_number":148,"context_line":"                    new_start_time \u003d now  # default to current time"},{"line_number":149,"context_line":"            else:"},{"line_number":150,"context_line":"                new_start_time \u003d start_time.encode(\u0027utf8\u0027)"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_13d416e8","line":148,"range":{"start_line":148,"start_character":20,"end_line":148,"end_character":67},"updated":"2017-06-05 15:55:49.000000000","message":"All fields must be passed in for an update","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"da5a46872537500bac5975930437611ff078d9e8","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                if patch:"},{"line_number":146,"context_line":"                    new_start_time \u003d original_row[\u0027start_time\u0027]"},{"line_number":147,"context_line":"                else:"},{"line_number":148,"context_line":"                    new_start_time \u003d now  # default to current time"},{"line_number":149,"context_line":"            else:"},{"line_number":150,"context_line":"                new_start_time \u003d start_time.encode(\u0027utf8\u0027)"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_34be8dff","line":148,"range":{"start_line":148,"start_character":20,"end_line":148,"end_character":67},"in_reply_to":"df140735_13d416e8","updated":"2017-06-07 17:09:19.000000000","message":"Done","commit_id":"fb4f52e92afe44af05e693b3b6ba3d7e2a27f038"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"287c0c14acec96b4f1127e534559e2218d8e31d6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                         b_name\u003dname.encode(\u0027utf8\u0027),"},{"line_number":79,"context_line":"                         b_expression\u003dexpression.encode(\u0027utf8\u0027),"},{"line_number":80,"context_line":"                         b_description\u003ddescription.encode(\u0027utf8\u0027),"},{"line_number":81,"context_line":"                         b_start_time\u003dstart_time.encode(\u0027utf8\u0027),"},{"line_number":82,"context_line":"                         b_silence_duration\u003dsilence_duration.encode(\u0027utf8\u0027),"},{"line_number":83,"context_line":"                         b_created_at\u003dnow,"},{"line_number":84,"context_line":"                         b_updated_at\u003dnow)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_b577a1a0","line":81,"range":{"start_line":81,"start_character":38,"end_line":81,"end_character":48},"updated":"2017-07-06 22:46:52.000000000","message":"cannot encode a datetime object","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                         b_name\u003dname.encode(\u0027utf8\u0027),"},{"line_number":79,"context_line":"                         b_expression\u003dexpression.encode(\u0027utf8\u0027),"},{"line_number":80,"context_line":"                         b_description\u003ddescription.encode(\u0027utf8\u0027),"},{"line_number":81,"context_line":"                         b_start_time\u003dstart_time.encode(\u0027utf8\u0027),"},{"line_number":82,"context_line":"                         b_silence_duration\u003dsilence_duration.encode(\u0027utf8\u0027),"},{"line_number":83,"context_line":"                         b_created_at\u003dnow,"},{"line_number":84,"context_line":"                         b_updated_at\u003dnow)"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_859bc270","line":81,"range":{"start_line":81,"start_character":38,"end_line":81,"end_character":48},"in_reply_to":"3f1d235d_b577a1a0","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/tests/test_group_rule.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            u\u0027alarm_actions\u0027: [u\"123abc\"],"},{"line_number":307,"context_line":"            u\u0027ok_actions\u0027: [u\"123abc\"],"},{"line_number":308,"context_line":"            u\u0027links\u0027: [{u\u0027href\u0027: u\u0027http://falconframework.org/v2.0/group-rules/\u0027"},{"line_number":309,"context_line":"                                 u\u002700000001-0001-0001-0001-000000000001/00000001-0001-0001-0001-000000000001\u0027,"},{"line_number":310,"context_line":"                        u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":311,"context_line":"            u\u0027name\u0027: u\u0027Test Alarm\u0027,"},{"line_number":312,"context_line":"            u\u0027description\u0027: u\u0027test group rule\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_def2f49a","line":309,"range":{"start_line":309,"start_character":72,"end_line":309,"end_character":80},"updated":"2017-06-20 16:50:21.000000000","message":"why does this link have two IDs in it?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            u\u0027alarm_actions\u0027: [u\"123abc\"],"},{"line_number":307,"context_line":"            u\u0027ok_actions\u0027: [u\"123abc\"],"},{"line_number":308,"context_line":"            u\u0027links\u0027: [{u\u0027href\u0027: u\u0027http://falconframework.org/v2.0/group-rules/\u0027"},{"line_number":309,"context_line":"                                 u\u002700000001-0001-0001-0001-000000000001/00000001-0001-0001-0001-000000000001\u0027,"},{"line_number":310,"context_line":"                        u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":311,"context_line":"            u\u0027name\u0027: u\u0027Test Alarm\u0027,"},{"line_number":312,"context_line":"            u\u0027description\u0027: u\u0027test group rule\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_153127ed","line":309,"range":{"start_line":309,"start_character":72,"end_line":309,"end_character":80},"in_reply_to":"5f201791_def2f49a","updated":"2017-06-22 16:38:41.000000000","message":"It shouldn\u0027t! Will fix it in a new patch set.","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"}],"monasca_api/tests/test_inhibit_rule.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            group\u003d\u0027repositories\u0027, enforce_type\u003dTrue)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class AlarmTestBase(falcon.testing.TestBase, oslotest.BaseTestCase):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    api_class \u003d base.MockedAPI"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_3e87a8da","line":57,"range":{"start_line":57,"start_character":6,"end_line":57,"end_character":19},"updated":"2017-06-20 16:50:21.000000000","message":"why is this class here and why is it called AlarmTestBase?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            group\u003d\u0027repositories\u0027, enforce_type\u003dTrue)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class AlarmTestBase(falcon.testing.TestBase, oslotest.BaseTestCase):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    api_class \u003d base.MockedAPI"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_d5eccf2a","line":57,"range":{"start_line":57,"start_character":6,"end_line":57,"end_character":19},"in_reply_to":"5f201791_3e87a8da","updated":"2017-06-22 16:38:41.000000000","message":"I renamed it to TestBase","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.CONF \u003d self.useFixture(MonascaApiConfigFixture(CONF)).conf"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class RESTResponseEquals(object):"},{"line_number":71,"context_line":"    \"\"\"Match if the supplied data contains a single string containing a JSON"},{"line_number":72,"context_line":"    object which decodes to match expected_data, excluding the contents of"},{"line_number":73,"context_line":"    the \u0027links\u0027 key."}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_defc3440","line":70,"range":{"start_line":70,"start_character":6,"end_line":70,"end_character":24},"updated":"2017-06-20 16:50:21.000000000","message":"I\u0027m confused as to why this class exists. Seems like it could be replaced with a simple method call.","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.CONF \u003d self.useFixture(MonascaApiConfigFixture(CONF)).conf"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class RESTResponseEquals(object):"},{"line_number":71,"context_line":"    \"\"\"Match if the supplied data contains a single string containing a JSON"},{"line_number":72,"context_line":"    object which decodes to match expected_data, excluding the contents of"},{"line_number":73,"context_line":"    the \u0027links\u0027 key."}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_2b739fb3","line":70,"range":{"start_line":70,"start_character":6,"end_line":70,"end_character":24},"in_reply_to":"5f201791_defc3440","updated":"2017-06-22 16:38:41.000000000","message":"I think the only special thing for this class is it actually removed the links from the response body.","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        expected_def \u003d {"},{"line_number":363,"context_line":"            u\u0027id\u0027: group_rule_id,"},{"line_number":364,"context_line":"            u\u0027links\u0027: [{u\u0027href\u0027: u\u0027http://falconframework.org/v2.0/inhibit-rules/\u0027"},{"line_number":365,"context_line":"                                 u\u002700000001-0001-0001-0001-000000000001/00000001-0001-0001-0001-000000000001\u0027,"},{"line_number":366,"context_line":"                        u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":367,"context_line":"            u\u0027name\u0027: new_name,"},{"line_number":368,"context_line":"            u\u0027description\u0027: u\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_7ee1a0d0","line":365,"range":{"start_line":365,"start_character":72,"end_line":365,"end_character":78},"updated":"2017-06-20 16:50:21.000000000","message":"why do all these links have two IDs in them?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        expected_def \u003d {"},{"line_number":363,"context_line":"            u\u0027id\u0027: group_rule_id,"},{"line_number":364,"context_line":"            u\u0027links\u0027: [{u\u0027href\u0027: u\u0027http://falconframework.org/v2.0/inhibit-rules/\u0027"},{"line_number":365,"context_line":"                                 u\u002700000001-0001-0001-0001-000000000001/00000001-0001-0001-0001-000000000001\u0027,"},{"line_number":366,"context_line":"                        u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":367,"context_line":"            u\u0027name\u0027: new_name,"},{"line_number":368,"context_line":"            u\u0027description\u0027: u\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_b5ccb3bc","line":365,"range":{"start_line":365,"start_character":72,"end_line":365,"end_character":78},"in_reply_to":"5f201791_7ee1a0d0","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"}],"monasca_api/tests/test_silence_rule.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        expected_rule \u003d {"},{"line_number":286,"context_line":"            u\"id\": u\"00000001-0001-0001-0001-000000000001\","},{"line_number":287,"context_line":"            u\u0027links\u0027: [{u\u0027href\u0027: u\u0027http://falconframework.org/v2.0/silence-rules/\u0027"},{"line_number":288,"context_line":"                                 u\u002700000001-0001-0001-0001-000000000001/00000001-0001-0001-0001-000000000001\u0027,"},{"line_number":289,"context_line":"                        u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":290,"context_line":"            u\"expression\": u\"metric_name\u003dcpu.percent\","},{"line_number":291,"context_line":"            u\"name\": u\"test_silence_rule\","}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_fe2010b3","line":288,"range":{"start_line":288,"start_character":59,"end_line":288,"end_character":71},"updated":"2017-06-20 16:50:21.000000000","message":"Same question, why two IDs on these links?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        expected_rule \u003d {"},{"line_number":286,"context_line":"            u\"id\": u\"00000001-0001-0001-0001-000000000001\","},{"line_number":287,"context_line":"            u\u0027links\u0027: [{u\u0027href\u0027: u\u0027http://falconframework.org/v2.0/silence-rules/\u0027"},{"line_number":288,"context_line":"                                 u\u002700000001-0001-0001-0001-000000000001/00000001-0001-0001-0001-000000000001\u0027,"},{"line_number":289,"context_line":"                        u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":290,"context_line":"            u\"expression\": u\"metric_name\u003dcpu.percent\","},{"line_number":291,"context_line":"            u\"name\": u\"test_silence_rule\","}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_55c1df7f","line":288,"range":{"start_line":288,"start_character":59,"end_line":288,"end_character":71},"in_reply_to":"5f201791_fe2010b3","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"}],"monasca_api/v2/common/schemas/alarm_definition_request_body_schema.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        raise voluptuous.Invalid(\u0027Not a list: {}\u0027.format(type(notification_ids)))"},{"line_number":30,"context_line":"    existing \u003d []"},{"line_number":31,"context_line":"    for notification_id in notification_ids:"},{"line_number":32,"context_line":"        if not isinstance(notification_id, (str, six.text_type)):"},{"line_number":33,"context_line":"            raise voluptuous.Invalid(\u0027list item \u003c{}\u003e -\u003e {} not one of (str, \u0027"},{"line_number":34,"context_line":"                                     \u0027unicode)\u0027.format(notification_id,"},{"line_number":35,"context_line":"                                                       type(notification_id)))"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_44ad7ee7","line":32,"updated":"2017-07-04 09:45:19.000000000","message":"six.string_types","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        raise voluptuous.Invalid(\u0027Not a list: {}\u0027.format(type(notification_ids)))"},{"line_number":30,"context_line":"    existing \u003d []"},{"line_number":31,"context_line":"    for notification_id in notification_ids:"},{"line_number":32,"context_line":"        if not isinstance(notification_id, (str, six.text_type)):"},{"line_number":33,"context_line":"            raise voluptuous.Invalid(\u0027list item \u003c{}\u003e -\u003e {} not one of (str, \u0027"},{"line_number":34,"context_line":"                                     \u0027unicode)\u0027.format(notification_id,"},{"line_number":35,"context_line":"                                                       type(notification_id)))"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_45bddab5","line":32,"in_reply_to":"3f1d235d_44ad7ee7","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/common/schemas/group_rule_request_body_schema.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_log import log"},{"line_number":16,"context_line":"from voluptuous import All"},{"line_number":17,"context_line":"from voluptuous import Any"},{"line_number":18,"context_line":"from voluptuous import Invalid"},{"line_number":19,"context_line":"from voluptuous import Length"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_6696a997","line":16,"updated":"2017-06-07 09:34:36.000000000","message":"In general you shouldn\u0027t have imports like this. Can it be reworked to import entire voluptous or just specific module containing all the objects you need ?","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_log import log"},{"line_number":16,"context_line":"from voluptuous import All"},{"line_number":17,"context_line":"from voluptuous import Any"},{"line_number":18,"context_line":"from voluptuous import Invalid"},{"line_number":19,"context_line":"from voluptuous import Length"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_54cb4171","line":16,"in_reply_to":"df140735_6696a997","updated":"2017-06-07 17:08:47.000000000","message":"I think import the entire voluptous will work. Thanks.","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        raise voluptuous.Invalid(\u0027Not a list: {}\u0027.format(type(notification_ids)))"},{"line_number":28,"context_line":"    existing \u003d []"},{"line_number":29,"context_line":"    for notification_id in notification_ids:"},{"line_number":30,"context_line":"        if not isinstance(notification_id, (str, unicode)):"},{"line_number":31,"context_line":"            raise voluptuous.Invalid(\u0027list item \u003c{}\u003e -\u003e {} not one of (str, \u0027"},{"line_number":32,"context_line":"                                     \u0027unicode)\u0027.format(notification_id,"},{"line_number":33,"context_line":"                                                       type(notification_id)))"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_c4a18efa","line":30,"updated":"2017-07-04 09:45:19.000000000","message":"This is not py35 compatible.\nI believe you can get the same result using six.string_types.\n\nAs Py35 is Pike goal, we shouldn\u0027t introduce more incompatibility as it is already a big issue to fix the code to be Py35 compatible","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        raise voluptuous.Invalid(\u0027Not a list: {}\u0027.format(type(notification_ids)))"},{"line_number":28,"context_line":"    existing \u003d []"},{"line_number":29,"context_line":"    for notification_id in notification_ids:"},{"line_number":30,"context_line":"        if not isinstance(notification_id, (str, unicode)):"},{"line_number":31,"context_line":"            raise voluptuous.Invalid(\u0027list item \u003c{}\u003e -\u003e {} not one of (str, \u0027"},{"line_number":32,"context_line":"                                     \u0027unicode)\u0027.format(notification_id,"},{"line_number":33,"context_line":"                                                       type(notification_id)))"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_c5c8aa56","line":30,"in_reply_to":"3f1d235d_c4a18efa","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/common/schemas/inhibit_rule_request_body_schema.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_log import log"},{"line_number":16,"context_line":"from voluptuous import All"},{"line_number":17,"context_line":"from voluptuous import Any"},{"line_number":18,"context_line":"from voluptuous import Length"},{"line_number":19,"context_line":"from voluptuous import Marker"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_266c319b","line":16,"updated":"2017-06-07 09:34:36.000000000","message":"same comment as in previous file.","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_log import log"},{"line_number":16,"context_line":"from voluptuous import All"},{"line_number":17,"context_line":"from voluptuous import Any"},{"line_number":18,"context_line":"from voluptuous import Length"},{"line_number":19,"context_line":"from voluptuous import Marker"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_d42e31f9","line":16,"in_reply_to":"df140735_266c319b","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_log import log"},{"line_number":16,"context_line":"from voluptuous import All"},{"line_number":17,"context_line":"from voluptuous import Any"},{"line_number":18,"context_line":"from voluptuous import Length"},{"line_number":19,"context_line":"from voluptuous import Marker"},{"line_number":20,"context_line":"from voluptuous import Required"},{"line_number":21,"context_line":"from voluptuous import Schema"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from monasca_api.v2.common.schemas import exceptions"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_fe3c90c0","line":21,"range":{"start_line":16,"start_character":1,"end_line":21,"end_character":29},"updated":"2017-06-20 16:50:21.000000000","message":"should probably import voluptuous to be consistent with other files","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_log import log"},{"line_number":16,"context_line":"from voluptuous import All"},{"line_number":17,"context_line":"from voluptuous import Any"},{"line_number":18,"context_line":"from voluptuous import Length"},{"line_number":19,"context_line":"from voluptuous import Marker"},{"line_number":20,"context_line":"from voluptuous import Required"},{"line_number":21,"context_line":"from voluptuous import Schema"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from monasca_api.v2.common.schemas import exceptions"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_ab5e8f0f","line":21,"range":{"start_line":16,"start_character":1,"end_line":21,"end_character":29},"in_reply_to":"5f201791_fe3c90c0","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"inhibit_rule_schema \u003d {"},{"line_number":26,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All("},{"line_number":27,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":28,"context_line":"    voluptuous.Required(\u0027expression\u0027): voluptuous.All("},{"line_number":29,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d1024)),"},{"line_number":30,"context_line":"    voluptuous.Marker(\u0027description\u0027): voluptuous.All("}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_e49c8ac1","line":27,"updated":"2017-07-04 09:45:19.000000000","message":"This is not py35 compatible.\nI believe you can get the same result using six.string_types.\n\nAs Py35 is Pike goal, we shouldn\u0027t introduce more incompatibility as it is already a big issue to fix the code to be Py35 compatible","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"inhibit_rule_schema \u003d {"},{"line_number":26,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All("},{"line_number":27,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":28,"context_line":"    voluptuous.Required(\u0027expression\u0027): voluptuous.All("},{"line_number":29,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d1024)),"},{"line_number":30,"context_line":"    voluptuous.Marker(\u0027description\u0027): voluptuous.All("}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_a5c5a63e","line":27,"in_reply_to":"3f1d235d_e49c8ac1","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/common/schemas/silence_rule_request_body_schema.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"silence_rule_schema \u003d {"},{"line_number":25,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All("},{"line_number":26,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":27,"context_line":"    voluptuous.Required(\u0027expression\u0027): voluptuous.All("},{"line_number":28,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d1024)),"},{"line_number":29,"context_line":"    voluptuous.Marker(\u0027description\u0027): voluptuous.All("}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_c48aae68","line":26,"updated":"2017-07-04 09:45:19.000000000","message":"This is not py35 compatible.\nI believe you can get the same result using six.string_types.\n\nAs Py35 is Pike goal, we shouldn\u0027t introduce more incompatibility as it is already a big issue to fix the code to be Py35 compatible","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"silence_rule_schema \u003d {"},{"line_number":25,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All("},{"line_number":26,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":27,"context_line":"    voluptuous.Required(\u0027expression\u0027): voluptuous.All("},{"line_number":28,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d1024)),"},{"line_number":29,"context_line":"    voluptuous.Marker(\u0027description\u0027): voluptuous.All("}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_45ccba34","line":26,"in_reply_to":"3f1d235d_c48aae68","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/common/validation.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"EMAIL_PATTERN \u003d \u0027^.+@.+$\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_CHARS \u003d \"\u003c\u003e\u003d{}(),\\\"\\\\\\\\;\u0026\""},{"line_number":26,"context_line":"RESTRICTED_MATCHER_CHARS \u003d re.compile(\u0027[\u0027 + INVALID_CHARS + \u0027]\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_deb7943a","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":13},"updated":"2017-06-20 16:50:21.000000000","message":"should probably reuse the dimensions validation here","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"EMAIL_PATTERN \u003d \u0027^.+@.+$\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_CHARS \u003d \"\u003c\u003e\u003d{}(),\\\"\\\\\\\\;\u0026\""},{"line_number":26,"context_line":"RESTRICTED_MATCHER_CHARS \u003d re.compile(\u0027[\u0027 + INVALID_CHARS + \u0027]\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_8b2e3341","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":13},"in_reply_to":"5f201791_deb7943a","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"dcba8ce8e55e0eee6e1dac3c2deba8ce798b6b8c","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"EMAIL_PATTERN \u003d \u0027^.+@.+$\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_CHARS \u003d \"\u003c\u003e\u003d{}(),\\\"\\\\\\\\;\u0026\""},{"line_number":26,"context_line":"RESTRICTED_MATCHER_CHARS \u003d re.compile(\u0027[\u0027 + INVALID_CHARS + \u0027]\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_7ec7f346","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":13},"in_reply_to":"5f201791_deb7943a","updated":"2017-06-23 16:44:47.000000000","message":"We cant validate the expression here with invalid chars. It needs to be parsed first.","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_expression(expression):"},{"line_number":75,"context_line":"    if not isinstance(expression, (str, unicode)):"},{"line_number":76,"context_line":"        msg \u003d \"Invalid expression type: {0} is not a string type\".format("},{"line_number":77,"context_line":"            expression)"},{"line_number":78,"context_line":"        raise InvalidExpression(msg)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_a47b3279","line":75,"updated":"2017-07-04 09:45:19.000000000","message":"This is not py35 compatible.\nI believe you can get the same result using six.string_types.\n\nAs Py35 is Pike goal, we shouldn\u0027t introduce more incompatibility as it is already a big issue to fix the code to be Py35 compatible","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_expression(expression):"},{"line_number":75,"context_line":"    if not isinstance(expression, (str, unicode)):"},{"line_number":76,"context_line":"        msg \u003d \"Invalid expression type: {0} is not a string type\".format("},{"line_number":77,"context_line":"            expression)"},{"line_number":78,"context_line":"        raise InvalidExpression(msg)"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_b01e060a","line":75,"in_reply_to":"3f1d235d_a47b3279","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/reference/group_rules.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":414,"context_line":"    if \u0027description\u0027 in group_rule:"},{"line_number":415,"context_line":"        return group_rule[\u0027description\u0027]"},{"line_number":416,"context_line":"    else:"},{"line_number":417,"context_line":"        if return_none:"},{"line_number":418,"context_line":"            return None"},{"line_number":419,"context_line":"        else:"},{"line_number":420,"context_line":"            return \u0027\u0027  # default to empty string"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_66cea984","line":417,"updated":"2017-06-07 09:34:36.000000000","message":"can be oneliner (ternary)","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":414,"context_line":"    if \u0027description\u0027 in group_rule:"},{"line_number":415,"context_line":"        return group_rule[\u0027description\u0027]"},{"line_number":416,"context_line":"    else:"},{"line_number":417,"context_line":"        if return_none:"},{"line_number":418,"context_line":"            return None"},{"line_number":419,"context_line":"        else:"},{"line_number":420,"context_line":"            return \u0027\u0027  # default to empty string"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_773f67b5","line":417,"in_reply_to":"df140735_66cea984","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        if return_none:"},{"line_number":418,"context_line":"            return None"},{"line_number":419,"context_line":"        else:"},{"line_number":420,"context_line":"            return \u0027\u0027  # default to empty string"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"def get_query_group_rule_group_wait(group_rule, return_none\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_a6a96191","line":420,"updated":"2017-06-07 09:34:36.000000000","message":"maybe a constant, module level variable ?","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        if return_none:"},{"line_number":418,"context_line":"            return None"},{"line_number":419,"context_line":"        else:"},{"line_number":420,"context_line":"            return \u0027\u0027  # default to empty string"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"def get_query_group_rule_group_wait(group_rule, return_none\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_97867bdb","line":420,"in_reply_to":"df140735_a6a96191","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    if \u0027group_wait\u0027 in group_rule:"},{"line_number":425,"context_line":"        group_wait \u003d group_rule[\u0027group_wait\u0027]"},{"line_number":426,"context_line":"        return group_wait"},{"line_number":427,"context_line":"    else:"},{"line_number":428,"context_line":"        if return_none:"},{"line_number":429,"context_line":"            return None"},{"line_number":430,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_269d5166","line":427,"updated":"2017-06-07 09:34:36.000000000","message":"see above","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    if \u0027group_wait\u0027 in group_rule:"},{"line_number":425,"context_line":"        group_wait \u003d group_rule[\u0027group_wait\u0027]"},{"line_number":426,"context_line":"        return group_wait"},{"line_number":427,"context_line":"    else:"},{"line_number":428,"context_line":"        if return_none:"},{"line_number":429,"context_line":"            return None"},{"line_number":430,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_5768e31f","line":427,"in_reply_to":"df140735_269d5166","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":435,"context_line":"    if \u0027repeat_interval\u0027 in group_rule:"},{"line_number":436,"context_line":"        repeat_interval \u003d group_rule[\u0027repeat_interval\u0027]"},{"line_number":437,"context_line":"        return repeat_interval"},{"line_number":438,"context_line":"    else:"},{"line_number":439,"context_line":"        if return_none:"},{"line_number":440,"context_line":"            return None"},{"line_number":441,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_c68d7532","line":438,"updated":"2017-06-07 09:34:36.000000000","message":"see above","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":435,"context_line":"    if \u0027repeat_interval\u0027 in group_rule:"},{"line_number":436,"context_line":"        repeat_interval \u003d group_rule[\u0027repeat_interval\u0027]"},{"line_number":437,"context_line":"        return repeat_interval"},{"line_number":438,"context_line":"    else:"},{"line_number":439,"context_line":"        if return_none:"},{"line_number":440,"context_line":"            return None"},{"line_number":441,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_37756ffb","line":438,"in_reply_to":"df140735_c68d7532","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        actions \u003d group_rule[action_state]"},{"line_number":448,"context_line":"        return actions"},{"line_number":449,"context_line":"    else:"},{"line_number":450,"context_line":"        if return_none:"},{"line_number":451,"context_line":"            return None"},{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_4679652d","line":450,"updated":"2017-06-07 09:34:36.000000000","message":"see above","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        actions \u003d group_rule[action_state]"},{"line_number":448,"context_line":"        return actions"},{"line_number":449,"context_line":"    else:"},{"line_number":450,"context_line":"        if return_none:"},{"line_number":451,"context_line":"            return None"},{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_17726b12","line":450,"in_reply_to":"df140735_4679652d","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"6004bb3167cf1abc2d85ccccc9b9ce7fc50599fa","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            {u\u0027group-rule-updated\u0027:"},{"line_number":245,"context_line":"             group_rule_event_dict})"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        self.send_event(self.events_message_queue, group_rule_updated_event)"},{"line_number":248,"context_line":"        return result"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def _validate_group_rule(self, group_rule, require_all\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":21,"id":"7f231b9d_e5f4008a","line":247,"range":{"start_line":247,"start_character":13,"end_line":247,"end_character":23},"updated":"2017-06-19 21:04:43.000000000","message":"This should send the event to a different topic then \u0027events\u0027 to make sure that rule stuff doesn\u0027t interfere with Thresh","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            LOG.debug(ex)"},{"line_number":251,"context_line":"            raise exception.HTTPUnprocessableEntityError(\u0027Unprocessable Entity\u0027, str(ex))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    @resource.resource_try_catch_block"},{"line_number":254,"context_line":"    def _group_rule_create(self, tenant_id, name, expression, description, group_wait,"},{"line_number":255,"context_line":"                           repeat_interval, alarm_actions, ok_actions, undetermined_actions):"},{"line_number":256,"context_line":"        self._validate_name_not_conflicting(tenant_id, name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_090dd93d","line":253,"range":{"start_line":253,"start_character":14,"end_line":253,"end_character":38},"updated":"2017-06-20 16:50:21.000000000","message":"this is already on the on_post method, no need for it here","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            LOG.debug(ex)"},{"line_number":251,"context_line":"            raise exception.HTTPUnprocessableEntityError(\u0027Unprocessable Entity\u0027, str(ex))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    @resource.resource_try_catch_block"},{"line_number":254,"context_line":"    def _group_rule_create(self, tenant_id, name, expression, description, group_wait,"},{"line_number":255,"context_line":"                           repeat_interval, alarm_actions, ok_actions, undetermined_actions):"},{"line_number":256,"context_line":"        self._validate_name_not_conflicting(tenant_id, name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_8bd3d338","line":253,"range":{"start_line":253,"start_character":14,"end_line":253,"end_character":38},"in_reply_to":"5f201791_090dd93d","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                                       expected_id\u003dNone):"},{"line_number":360,"context_line":"        group_rules \u003d self._group_rules_repo.\\"},{"line_number":361,"context_line":"            get_group_rules(tenant_id\u003dtenant_id, name\u003dname, offset\u003dNone,"},{"line_number":362,"context_line":"                            limit\u003d0)"},{"line_number":363,"context_line":"        if group_rules:"},{"line_number":364,"context_line":"            if not expected_id:"},{"line_number":365,"context_line":"                LOG.warning(\"Found existing group rule for {} \""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_24043c7b","line":362,"range":{"start_line":362,"start_character":34,"end_line":362,"end_character":35},"updated":"2017-06-20 16:50:21.000000000","message":"why not a limit of 1?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                                       expected_id\u003dNone):"},{"line_number":360,"context_line":"        group_rules \u003d self._group_rules_repo.\\"},{"line_number":361,"context_line":"            get_group_rules(tenant_id\u003dtenant_id, name\u003dname, offset\u003dNone,"},{"line_number":362,"context_line":"                            limit\u003d0)"},{"line_number":363,"context_line":"        if group_rules:"},{"line_number":364,"context_line":"            if not expected_id:"},{"line_number":365,"context_line":"                LOG.warning(\"Found existing group rule for {} \""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_4bb81b75","line":362,"range":{"start_line":362,"start_character":34,"end_line":362,"end_character":35},"in_reply_to":"5f201791_24043c7b","updated":"2017-06-22 16:38:41.000000000","message":"I think it should be None","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if not group_rule_id:"},{"line_number":96,"context_line":"            name \u003d helpers.get_query_name(req)"},{"line_number":97,"context_line":"            offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":98,"context_line":"            if offset is not None and not isinstance(offset, int):"},{"line_number":99,"context_line":"                try:"},{"line_number":100,"context_line":"                    offset \u003d int(offset)"},{"line_number":101,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_e4d36a5f","line":98,"updated":"2017-07-04 09:45:19.000000000","message":"As I recall there was a problem somewhere where falcon interpreted numeric value as long and such code got broken. Might be better to have long here or take a look at six.integer_types","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if not group_rule_id:"},{"line_number":96,"context_line":"            name \u003d helpers.get_query_name(req)"},{"line_number":97,"context_line":"            offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":98,"context_line":"            if offset is not None and not isinstance(offset, int):"},{"line_number":99,"context_line":"                try:"},{"line_number":100,"context_line":"                    offset \u003d int(offset)"},{"line_number":101,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_f0880e20","line":98,"in_reply_to":"3f1d235d_e4d36a5f","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/reference/inhibit_rules.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"975d2e363f655e2ddbc90bd0bbbe4881eef99cbb","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from monasca_api.api import inhibit_rules_api_v2"},{"line_number":23,"context_line":"from monasca_api.common.repositories import exceptions"},{"line_number":24,"context_line":"from monasca_api.v2.common.exceptions import HTTPUnprocessableEntityError"},{"line_number":25,"context_line":"from monasca_api.v2.common.schemas import (inhibit_rule_request_body_schema as schema_inhibit_rule)"},{"line_number":26,"context_line":"import monasca_api.v2.common.validation as validation"},{"line_number":27,"context_line":"from monasca_api.v2.reference import alarming"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_66ca2950","line":24,"updated":"2017-06-07 09:34:36.000000000","message":"Should import exceptions module instead concrete object","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"50804ddc995ce99b58f13e38a812a00bbb37ff56","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from monasca_api.api import inhibit_rules_api_v2"},{"line_number":23,"context_line":"from monasca_api.common.repositories import exceptions"},{"line_number":24,"context_line":"from monasca_api.v2.common.exceptions import HTTPUnprocessableEntityError"},{"line_number":25,"context_line":"from monasca_api.v2.common.schemas import (inhibit_rule_request_body_schema as schema_inhibit_rule)"},{"line_number":26,"context_line":"import monasca_api.v2.common.validation as validation"},{"line_number":27,"context_line":"from monasca_api.v2.reference import alarming"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_f44a5581","line":24,"in_reply_to":"df140735_66ca2950","updated":"2017-06-07 17:08:47.000000000","message":"Done","commit_id":"6cd978be8dc2e72773a28c2859f3080f0ee99db4"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            raise exception.HTTPUnprocessableEntityError("},{"line_number":232,"context_line":"                \u0027Unprocessable Entity\u0027, str(ex))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @resource.resource_try_catch_block"},{"line_number":235,"context_line":"    def _inhibit_rule_create(self, tenant_id, name, expression, description):"},{"line_number":236,"context_line":"        self._validate_name_not_conflicting(tenant_id, name)"},{"line_number":237,"context_line":"        inhibit_rule_id \u003d ("}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_640914dc","line":234,"range":{"start_line":234,"start_character":14,"end_line":234,"end_character":38},"updated":"2017-06-20 16:50:21.000000000","message":"This is already on the on_post method, so not needed here","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            raise exception.HTTPUnprocessableEntityError("},{"line_number":232,"context_line":"                \u0027Unprocessable Entity\u0027, str(ex))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @resource.resource_try_catch_block"},{"line_number":235,"context_line":"    def _inhibit_rule_create(self, tenant_id, name, expression, description):"},{"line_number":236,"context_line":"        self._validate_name_not_conflicting(tenant_id, name)"},{"line_number":237,"context_line":"        inhibit_rule_id \u003d ("}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_cbf0abcc","line":234,"range":{"start_line":234,"start_character":14,"end_line":234,"end_character":38},"in_reply_to":"5f201791_640914dc","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        inhibit_rules \u003d \\"},{"line_number":291,"context_line":"            self._inhibit_rules_repo.\\"},{"line_number":292,"context_line":"            get_inhibit_rules(tenant_id\u003dtenant_id, name\u003dname,"},{"line_number":293,"context_line":"                              offset\u003dNone, limit\u003d0)"},{"line_number":294,"context_line":"        if inhibit_rules:"},{"line_number":295,"context_line":"            if not expected_id:"},{"line_number":296,"context_line":"                LOG.warning(\"Found existing inhibit rule for {}\""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_04cf0080","line":293,"range":{"start_line":293,"start_character":49,"end_line":293,"end_character":50},"updated":"2017-06-20 16:50:21.000000000","message":"why not a limit of 1?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        inhibit_rules \u003d \\"},{"line_number":291,"context_line":"            self._inhibit_rules_repo.\\"},{"line_number":292,"context_line":"            get_inhibit_rules(tenant_id\u003dtenant_id, name\u003dname,"},{"line_number":293,"context_line":"                              offset\u003dNone, limit\u003d0)"},{"line_number":294,"context_line":"        if inhibit_rules:"},{"line_number":295,"context_line":"            if not expected_id:"},{"line_number":296,"context_line":"                LOG.warning(\"Found existing inhibit rule for {}\""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_6b66372c","line":293,"range":{"start_line":293,"start_character":49,"end_line":293,"end_character":50},"in_reply_to":"5f201791_04cf0080","updated":"2017-06-22 16:38:41.000000000","message":"I think it should be None","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"            name \u003d helpers.get_query_name(req)"},{"line_number":85,"context_line":"            offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":86,"context_line":"            if offset is not None and not isinstance(offset, int):"},{"line_number":87,"context_line":"                try:"},{"line_number":88,"context_line":"                    offset \u003d int(offset)"},{"line_number":89,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_64c75a98","line":86,"updated":"2017-07-04 09:45:19.000000000","message":"six.integer_types","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"            name \u003d helpers.get_query_name(req)"},{"line_number":85,"context_line":"            offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":86,"context_line":"            if offset is not None and not isinstance(offset, int):"},{"line_number":87,"context_line":"                try:"},{"line_number":88,"context_line":"                    offset \u003d int(offset)"},{"line_number":89,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_d07d0a1d","line":86,"in_reply_to":"3f1d235d_64c75a98","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_api/v2/reference/silence_rules.py":[{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"b7a3426a9f7c53d4928a82a934ad05ffc4d5343d","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        return constants.RULE_DESCRIPTION"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"def get_query_silence_rule_start_time(silence_rule, return_none\u003dFalse):"},{"line_number":391,"context_line":"    if \u0027start_time\u0027 in silence_rule:"},{"line_number":392,"context_line":"        start_time \u003d silence_rule[\u0027start_time\u0027]"},{"line_number":393,"context_line":"        return start_time"}],"source_content_type":"text/x-python","patch_set":21,"id":"7f231b9d_702e70fb","line":390,"range":{"start_line":390,"start_character":4,"end_line":390,"end_character":37},"updated":"2017-06-19 21:41:59.000000000","message":"When creating a silence rule, it should default to datetime.datetime.utcnow()","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"cbcabb9ca2773789bfd0578f8a8cca4920558362","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        return constants.RULE_DESCRIPTION"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"def get_query_silence_rule_start_time(silence_rule, return_none\u003dFalse):"},{"line_number":391,"context_line":"    if \u0027start_time\u0027 in silence_rule:"},{"line_number":392,"context_line":"        start_time \u003d silence_rule[\u0027start_time\u0027]"},{"line_number":393,"context_line":"        return start_time"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f201791_b0acdc8c","line":390,"range":{"start_line":390,"start_character":4,"end_line":390,"end_character":37},"in_reply_to":"7f231b9d_702e70fb","updated":"2017-06-23 16:44:54.000000000","message":"Done","commit_id":"fcff99d29eb0f4225c6386abb4caba1037d250c6"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.HTTPUnprocessableEntityError(\u0027Unprocessable Entity\u0027,"},{"line_number":241,"context_line":"                                                         str(ex))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @resource.resource_try_catch_block"},{"line_number":244,"context_line":"    def _silence_rule_create(self, tenant_id, name, expression, description,"},{"line_number":245,"context_line":"                             start_time, silence_duration):"},{"line_number":246,"context_line":"        self._validate_name_not_conflicting(tenant_id, name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_0f3b99d1","line":243,"range":{"start_line":243,"start_character":14,"end_line":243,"end_character":38},"updated":"2017-06-20 16:50:21.000000000","message":"this is already on on_post, no need for it here","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.HTTPUnprocessableEntityError(\u0027Unprocessable Entity\u0027,"},{"line_number":241,"context_line":"                                                         str(ex))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @resource.resource_try_catch_block"},{"line_number":244,"context_line":"    def _silence_rule_create(self, tenant_id, name, expression, description,"},{"line_number":245,"context_line":"                             start_time, silence_duration):"},{"line_number":246,"context_line":"        self._validate_name_not_conflicting(tenant_id, name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_cb80ab8e","line":243,"range":{"start_line":243,"start_character":14,"end_line":243,"end_character":38},"in_reply_to":"5f201791_0f3b99d1","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                                       expected_id\u003dNone):"},{"line_number":315,"context_line":"        silence_rules \u003d self._silence_rules_repo.\\"},{"line_number":316,"context_line":"            get_silence_rules(tenant_id\u003dtenant_id, name\u003dname, offset\u003dNone,"},{"line_number":317,"context_line":"                              limit\u003d0)"},{"line_number":318,"context_line":"        if silence_rules:"},{"line_number":319,"context_line":"            if not expected_id:"},{"line_number":320,"context_line":"                LOG.warning(\"Found existing silence rule for {} \""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_0f4a7926","line":317,"range":{"start_line":317,"start_character":36,"end_line":317,"end_character":37},"updated":"2017-06-20 16:50:21.000000000","message":"why not a limit of 1?","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                                       expected_id\u003dNone):"},{"line_number":315,"context_line":"        silence_rules \u003d self._silence_rules_repo.\\"},{"line_number":316,"context_line":"            get_silence_rules(tenant_id\u003dtenant_id, name\u003dname, offset\u003dNone,"},{"line_number":317,"context_line":"                              limit\u003d0)"},{"line_number":318,"context_line":"        if silence_rules:"},{"line_number":319,"context_line":"            if not expected_id:"},{"line_number":320,"context_line":"                LOG.warning(\"Found existing silence rule for {} \""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_ab7b2fbc","line":317,"range":{"start_line":317,"start_character":36,"end_line":317,"end_character":37},"in_reply_to":"5f201791_0f4a7926","updated":"2017-06-22 16:38:41.000000000","message":"I think it should be None","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6ecee89c9fb5932b2f4ef4445caaf6464ef9f11b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            req, self._get_silence_rules_authorized_roles)"},{"line_number":88,"context_line":"        if silence_rule_id is None:"},{"line_number":89,"context_line":"            name \u003d helpers.get_query_name(req)"},{"line_number":90,"context_line":"            offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":91,"context_line":"            if offset is not None and not isinstance(offset, int):"},{"line_number":92,"context_line":"                try:"},{"line_number":93,"context_line":"                    offset \u003d int(offset)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_24bde201","line":90,"updated":"2017-07-04 09:45:19.000000000","message":"six.integer_types","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            req, self._get_silence_rules_authorized_roles)"},{"line_number":88,"context_line":"        if silence_rule_id is None:"},{"line_number":89,"context_line":"            name \u003d helpers.get_query_name(req)"},{"line_number":90,"context_line":"            offset \u003d helpers.get_query_param(req, \u0027offset\u0027)"},{"line_number":91,"context_line":"            if offset is not None and not isinstance(offset, int):"},{"line_number":92,"context_line":"                try:"},{"line_number":93,"context_line":"                    offset \u003d int(offset)"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_d0cbca50","line":90,"in_reply_to":"3f1d235d_24bde201","updated":"2017-07-24 18:00:10.000000000","message":"Done","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"287c0c14acec96b4f1127e534559e2218d8e31d6","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        silence_rule_id \u003d ("},{"line_number":264,"context_line":"            self._silence_rules_repo"},{"line_number":265,"context_line":"                .create_silence_rule(tenant_id, name, expression, description,"},{"line_number":266,"context_line":"                                     start_time, silence_duration))"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        self._send_silence_rule_created_event("}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_ed7e46ad","line":265,"range":{"start_line":265,"start_character":17,"end_line":265,"end_character":36},"updated":"2017-07-06 22:46:52.000000000","message":"Need to validate the expression before creating in the repository. Same for other rules.","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"f24b3d4b94ae00ca9e46fb3efd3045af88fcd9ee","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        silence_rule_id \u003d ("},{"line_number":264,"context_line":"            self._silence_rules_repo"},{"line_number":265,"context_line":"                .create_silence_rule(tenant_id, name, expression, description,"},{"line_number":266,"context_line":"                                     start_time, silence_duration))"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        self._send_silence_rule_created_event("}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_d00d0a3f","line":265,"range":{"start_line":265,"start_character":17,"end_line":265,"end_character":36},"in_reply_to":"3f1d235d_ed7e46ad","updated":"2017-07-24 18:00:10.000000000","message":"In line 65, I did a _validate_silence_rule which called function \"validation.validate_expression\". But this validate_expression only checks if the expression is a string and if it has a valid length.","commit_id":"6b8ab60ec658cd593d3e8bc56c5c8f1a3f757c61"}],"monasca_tempest_tests/tests/api/test_silence_rules.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"696f7acb05cb7205c91f99116ad43fb438b101d3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    @decorators.attr(type\u003d\"negative\")"},{"line_number":61,"context_line":"    def test_create_silence_rule_with_name_exceeds_max_length(self):"},{"line_number":62,"context_line":"        # Create a silence rule"},{"line_number":63,"context_line":"        name \u003d data_utils.rand_name(\u0027silence_rule\u0027)"},{"line_number":64,"context_line":"        remaining_length \u003d constants.MAX_RULE_NAME_LENGTH - len(name) + 1"},{"line_number":65,"context_line":"        name +\u003d \"x\" * remaining_length"},{"line_number":66,"context_line":"        expression \u003d \"targets cpu.percent\""},{"line_number":67,"context_line":"        silence_rule \u003d helpers.create_silence_rule("},{"line_number":68,"context_line":"            name\u003dname, expression\u003dexpression)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_eacbab6f","line":65,"range":{"start_line":63,"start_character":27,"end_line":65,"end_character":26},"updated":"2017-06-20 16:50:21.000000000","message":"can shorten this to name \u003d \"x\" * constants.MAX_RULE_NAME_LENGTH","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c660389ec6d9ab170d80ec3f2f8745adcc23b59b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    @decorators.attr(type\u003d\"negative\")"},{"line_number":61,"context_line":"    def test_create_silence_rule_with_name_exceeds_max_length(self):"},{"line_number":62,"context_line":"        # Create a silence rule"},{"line_number":63,"context_line":"        name \u003d data_utils.rand_name(\u0027silence_rule\u0027)"},{"line_number":64,"context_line":"        remaining_length \u003d constants.MAX_RULE_NAME_LENGTH - len(name) + 1"},{"line_number":65,"context_line":"        name +\u003d \"x\" * remaining_length"},{"line_number":66,"context_line":"        expression \u003d \"targets cpu.percent\""},{"line_number":67,"context_line":"        silence_rule \u003d helpers.create_silence_rule("},{"line_number":68,"context_line":"            name\u003dname, expression\u003dexpression)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f201791_0e13515e","line":65,"range":{"start_line":63,"start_character":27,"end_line":65,"end_character":26},"in_reply_to":"5f201791_eacbab6f","updated":"2017-06-22 16:38:41.000000000","message":"Done","commit_id":"cbf6fce7d272570061ec05f29b1469d27a49559c"}]}
