)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9500,"name":"Matt Fischer","email":"matt@mattfischer.com","username":"mfisch"},"change_message_id":"4440d0243702a127ce9db5e230e98c5f2d659719","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will allow certain notifications for events in"},{"line_number":10,"context_line":"Keystone to be opted out. Opting out may be a desired way of"},{"line_number":11,"context_line":"doing this since most keystone deployer\u0027s will likely like"},{"line_number":12,"context_line":"to by default have all audit traces."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I86caf6e5f25cdd76121881813167c2144bf1d051"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a5ae5dd_c7227a01","line":11,"updated":"2016-02-04 03:47:24.000000000","message":"no apostrophe in deployers","commit_id":"c830260bba86e87b2a255ea59119d1c619af7bd8"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"fa1f1c0fc0ae6d472be0868241b120f6630f4d9f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will allow certain notifications for events in"},{"line_number":10,"context_line":"Keystone to be opted out. Opting out may be a desired way of"},{"line_number":11,"context_line":"doing this since most keystone deployer\u0027s will likely like"},{"line_number":12,"context_line":"to by default have all audit traces."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I86caf6e5f25cdd76121881813167c2144bf1d051"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a5ae5dd_efe748e2","line":11,"in_reply_to":"5a5ae5dd_c7227a01","updated":"2016-02-04 06:29:23.000000000","message":"Done","commit_id":"c830260bba86e87b2a255ea59119d1c619af7bd8"}],"doc/source/event_notifications.rst":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fe34c25d1a052a2b5283d25aff7f1e97f71eec62","unresolved":false,"context_lines":[{"line_number":28,"context_line":"documented below."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Common Notification Structure"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Notifications generated by Keystone are generated in JSON format. An external"},{"line_number":34,"context_line":"application can format them into ATOM format and publish them as a feed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa69d971_e99bc3c7","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":29},"updated":"2016-01-03 14:00:24.000000000","message":"irrelevant change.","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"903b8949481ad101408703a80d4f6035e7d766ea","unresolved":false,"context_lines":[{"line_number":28,"context_line":"documented below."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Common Notification Structure"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Notifications generated by Keystone are generated in JSON format. An external"},{"line_number":34,"context_line":"application can format them into ATOM format and publish them as a feed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa69d971_9199ec21","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":29},"in_reply_to":"fa69d971_e99bc3c7","updated":"2016-01-04 18:44:36.000000000","message":"Although not a big deal, the \"\u003d\" should be the length of the string above it as seen in http://documentation-style-guide-sphinx.readthedocs.org/en/latest/style-guide.html#headings","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fe34c25d1a052a2b5283d25aff7f1e97f71eec62","unresolved":false,"context_lines":[{"line_number":429,"context_line":".. code-block:: ini"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    [DEFAULT]"},{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa69d971_c9a83fde","line":433,"range":{"start_line":432,"start_character":0,"end_line":433,"end_character":48},"updated":"2016-01-03 14:00:24.000000000","message":"is that possible to support the config like this? i think most of config do it in this way.\n\nnotification_opt_out \u003d identity.user.created, identity.role.created","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"903b8949481ad101408703a80d4f6035e7d766ea","unresolved":false,"context_lines":[{"line_number":429,"context_line":".. code-block:: ini"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    [DEFAULT]"},{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa69d971_e5e3c631","line":433,"range":{"start_line":432,"start_character":0,"end_line":433,"end_character":48},"in_reply_to":"fa69d971_c9a83fde","updated":"2016-01-04 18:44:36.000000000","message":"Since \u0027notification_opt_out\u0027 is MultiStrOpt it can be be set multiple times. Similar to \u0027notification_driver\u0027. This way it is more readable to the user.","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5df6416febe29c2c383811bff4a4c07adbc7dc43","unresolved":false,"context_lines":[{"line_number":409,"context_line":"associated with the project should be deleted."},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Projects can also have update events (``event_type`` \u003d"},{"line_number":412,"context_line":"``identity.project.updated``), wherein the project has been disabled. Keystone"},{"line_number":413,"context_line":"ensures this has an immediate impact on the accessibility of the project\u0027s"},{"line_number":414,"context_line":"resources by revoking tokens with authorization on the project, but should"},{"line_number":415,"context_line":"**not** have a direct impact on the projects resources (in other words, virtual"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_a6cd6d32","side":"PARENT","line":412,"updated":"2016-01-06 17:27:23.000000000","message":"example of a literal","commit_id":"a9971cc1dacdd3651380084cc6f391e2bc339c82"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5df6416febe29c2c383811bff4a4c07adbc7dc43","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In `/etc/keystone/keystone.conf` you can set"},{"line_number":424,"context_line":"`notification_opt_out` to the event you wish to opt-out of. Multiple events"},{"line_number":425,"context_line":"can be opted out of."},{"line_number":426,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_c64d01c5","line":423,"updated":"2016-01-06 17:27:23.000000000","message":"double backticks for a literal","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"f1544b08d5762b096c8ccb67d5376f7acabe7ea0","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In `/etc/keystone/keystone.conf` you can set"},{"line_number":424,"context_line":"`notification_opt_out` to the event you wish to opt-out of. Multiple events"},{"line_number":425,"context_line":"can be opted out of."},{"line_number":426,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_80235855","line":423,"in_reply_to":"fa69d971_c64d01c5","updated":"2016-01-07 03:49:47.000000000","message":"Done","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5df6416febe29c2c383811bff4a4c07adbc7dc43","unresolved":false,"context_lines":[{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In `/etc/keystone/keystone.conf` you can set"},{"line_number":424,"context_line":"`notification_opt_out` to the event you wish to opt-out of. Multiple events"},{"line_number":425,"context_line":"can be opted out of."},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"Example:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_86caa919","line":424,"updated":"2016-01-06 17:27:23.000000000","message":"same","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"f1544b08d5762b096c8ccb67d5376f7acabe7ea0","unresolved":false,"context_lines":[{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In `/etc/keystone/keystone.conf` you can set"},{"line_number":424,"context_line":"`notification_opt_out` to the event you wish to opt-out of. Multiple events"},{"line_number":425,"context_line":"can be opted out of."},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"Example:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_a01e9c09","line":424,"in_reply_to":"fa69d971_86caa919","updated":"2016-01-07 03:49:47.000000000","message":"Done","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5df6416febe29c2c383811bff4a4c07adbc7dc43","unresolved":false,"context_lines":[{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In `/etc/keystone/keystone.conf` you can set"},{"line_number":424,"context_line":"`notification_opt_out` to the event you wish to opt-out of. Multiple events"},{"line_number":425,"context_line":"can be opted out of."},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"Example:"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_06df99d9","line":425,"updated":"2016-01-06 17:27:23.000000000","message":"Suggestion to avoid ending a sentence with \"of\":\n\n  You can opt-out of multiple events.","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"f1544b08d5762b096c8ccb67d5376f7acabe7ea0","unresolved":false,"context_lines":[{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In `/etc/keystone/keystone.conf` you can set"},{"line_number":424,"context_line":"`notification_opt_out` to the event you wish to opt-out of. Multiple events"},{"line_number":425,"context_line":"can be opted out of."},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"Example:"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_c0db904d","line":425,"in_reply_to":"fa69d971_06df99d9","updated":"2016-01-07 03:49:47.000000000","message":"Done","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5df6416febe29c2c383811bff4a4c07adbc7dc43","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"},{"line_number":437,"context_line":"the sections above."}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_86f1496d","line":435,"updated":"2016-01-06 17:27:23.000000000","message":"\"This will...\"","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"f1544b08d5762b096c8ccb67d5376f7acabe7ea0","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"},{"line_number":437,"context_line":"the sections above."}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa69d971_20a70cbe","line":435,"in_reply_to":"fa69d971_86f1496d","updated":"2016-01-07 03:49:47.000000000","message":"Done","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"6cab51255b0322ce36e2dc5fd5fc93cfddae7ef8","unresolved":false,"context_lines":[{"line_number":416,"context_line":"machines should **not** be deleted)."},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"Opting out of certain notifications"},{"line_number":419,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da6ed579_44809146","line":419,"updated":"2016-01-13 18:15:46.000000000","message":"I\u0027m really not sure about the use case.\n\nKeystone provides different channels for notification.\n\ne.g notification_driver\u003dmessagingv2, log\n\nBasically this opts out of every channel.  Ideally you want to opt out of messagingv2(rabbit) channel to avoid overloading, but you want all the events in log.\n\nWhat should be the usecase?\n   1) Opt out of certain event for all the channels \n   2) Opt out of certain event for some channel\n\nLooks like you are going for 1).","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"d392cf2cec1126c0c9824eec4f5fb1e7eb02f4cc","unresolved":false,"context_lines":[{"line_number":416,"context_line":"machines should **not** be deleted)."},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"Opting out of certain notifications"},{"line_number":419,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9a68dd71_1c9160f1","line":419,"in_reply_to":"da6ed579_44809146","updated":"2016-01-23 03:56:55.000000000","message":"Correct. It is up to the deployer to set this up","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"71fd595499af507c94b5535308fe3cfdef48e499","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    [DEFAULT]"},{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"This will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa69d971_e1a6d60d","line":433,"updated":"2016-01-07 05:39:56.000000000","message":"Any reason why this style was chosen over having a list? \n\n    notification_opt_out \u003d identity.user.created, identity.role.created\n\nSimilar to https://github.com/openstack/keystone/blob/a44a29a66fb03495bb50b61416d2ba623af9582d/keystone/common/config.py#L611-L613","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"c8b1c78de5ff1aa9095306e8d1995080672a867a","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    [DEFAULT]"},{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"This will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa69d971_25855eac","line":433,"in_reply_to":"fa69d971_e1a6d60d","updated":"2016-01-08 18:46:40.000000000","message":"This is more readable than having a list. Since users may opt-out of many different notifications, this method makes it easier to see what they are opting out of.","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":9500,"name":"Matt Fischer","email":"matt@mattfischer.com","username":"mfisch"},"change_message_id":"4440d0243702a127ce9db5e230e98c5f2d659719","unresolved":false,"context_lines":[{"line_number":418,"context_line":"Opting out of certain notifications"},{"line_number":419,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In ``/etc/keystone/keystone.conf`` you can set"},{"line_number":424,"context_line":"``notification_opt_out`` to the event you wish to opt-out of. It is possible"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a5ae5dd_672146fb","line":421,"updated":"2016-02-04 03:47:24.000000000","message":"no comma","commit_id":"c830260bba86e87b2a255ea59119d1c619af7bd8"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"fa1f1c0fc0ae6d472be0868241b120f6630f4d9f","unresolved":false,"context_lines":[{"line_number":418,"context_line":"Opting out of certain notifications"},{"line_number":419,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"There are many notifications that Keystone emits, and some deployers may only"},{"line_number":422,"context_line":"care about certain events. In Keystone there is a way to opt-out of certain"},{"line_number":423,"context_line":"notifications. In ``/etc/keystone/keystone.conf`` you can set"},{"line_number":424,"context_line":"``notification_opt_out`` to the event you wish to opt-out of. It is possible"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a5ae5dd_ef99886f","line":421,"in_reply_to":"5a5ae5dd_672146fb","updated":"2016-02-04 06:29:23.000000000","message":"Done","commit_id":"c830260bba86e87b2a255ea59119d1c619af7bd8"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ecdc2c449df3bb06b8c717bbeea71db5dbd3c3e6","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":".. code-block:: ini"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    [DEFAULT]"},{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"This will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a5ae5dd_02164055","line":433,"range":{"start_line":431,"start_character":4,"end_line":433,"end_character":48},"updated":"2016-02-04 04:27:25.000000000","message":"we should also add the authentication success event type","commit_id":"c830260bba86e87b2a255ea59119d1c619af7bd8"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"fa1f1c0fc0ae6d472be0868241b120f6630f4d9f","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":".. code-block:: ini"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    [DEFAULT]"},{"line_number":432,"context_line":"    notification_opt_out \u003d identity.user.created"},{"line_number":433,"context_line":"    notification_opt_out \u003d identity.role.created"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"This will opt-out notifications for the creation of users and roles. For a list of"},{"line_number":436,"context_line":"all notifications that can be opted out, see the supported events tables in"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a5ae5dd_0fb424cf","line":433,"range":{"start_line":431,"start_character":4,"end_line":433,"end_character":48},"in_reply_to":"5a5ae5dd_02164055","updated":"2016-02-04 06:29:23.000000000","message":"\"event_type\": \"identity.authenticate\"\n\"action\": \"authenticate\", \"outcome\": \"success\"","commit_id":"c830260bba86e87b2a255ea59119d1c619af7bd8"}],"etc/keystone.conf.sample":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fe34c25d1a052a2b5283d25aff7f1e97f71eec62","unresolved":false,"context_lines":[{"line_number":92,"context_line":"# Allowed values: basic, cadf"},{"line_number":93,"context_line":"#notification_format \u003d basic"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# Define the notification events to opt-out of. Notification events are"},{"line_number":96,"context_line":"# defined as \"identity.\u003cresource_type\u003e.\u003coperation\u003e\". Notification opt-out can"},{"line_number":97,"context_line":"# be set multiple times in order to add more opt-out options. (multi valued)"},{"line_number":98,"context_line":"#notification_opt_out \u003d"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"#"},{"line_number":101,"context_line":"# From oslo.log"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"fa69d971_495e8f13","line":98,"range":{"start_line":95,"start_character":0,"end_line":98,"end_character":23},"updated":"2016-01-03 14:00:24.000000000","message":"Don\u0027t update the file manually, Bot will take care of this.","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"903b8949481ad101408703a80d4f6035e7d766ea","unresolved":false,"context_lines":[{"line_number":92,"context_line":"# Allowed values: basic, cadf"},{"line_number":93,"context_line":"#notification_format \u003d basic"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# Define the notification events to opt-out of. Notification events are"},{"line_number":96,"context_line":"# defined as \"identity.\u003cresource_type\u003e.\u003coperation\u003e\". Notification opt-out can"},{"line_number":97,"context_line":"# be set multiple times in order to add more opt-out options. (multi valued)"},{"line_number":98,"context_line":"#notification_opt_out \u003d"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"#"},{"line_number":101,"context_line":"# From oslo.log"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"fa69d971_11865cb9","line":98,"range":{"start_line":95,"start_character":0,"end_line":98,"end_character":23},"in_reply_to":"fa69d971_495e8f13","updated":"2016-01-04 18:44:36.000000000","message":"Done","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"}],"keystone/notifications.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"416c37a73667872b2964079527dc29ddafdcb685","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                \u0027Failed to send %(action)s %(event_type)s notification\u0027),"},{"line_number":735,"context_line":"                {\u0027action\u0027: action, \u0027event_type\u0027: event_type})"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":""},{"line_number":738,"context_line":"emit_event \u003d CadfNotificationWrapper"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_6c332963","side":"PARENT","line":737,"updated":"2015-12-07 16:14:20.000000000","message":"Why the whitespace changes?","commit_id":"a9971cc1dacdd3651380084cc6f391e2bc339c82"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"98e2bf865e1933ae0da18404e94bbb850e6953f4","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                \u0027Failed to send %(action)s %(event_type)s notification\u0027),"},{"line_number":735,"context_line":"                {\u0027action\u0027: action, \u0027event_type\u0027: event_type})"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":""},{"line_number":738,"context_line":"emit_event \u003d CadfNotificationWrapper"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_f0815c90","side":"PARENT","line":737,"in_reply_to":"7a740942_6c332963","updated":"2015-12-10 21:21:25.000000000","message":"Readability.","commit_id":"a9971cc1dacdd3651380084cc6f391e2bc339c82"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"416c37a73667872b2964079527dc29ddafdcb685","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":44,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":45,"context_line":"                    \u0027the initiator of the event.\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027notification_opt_out\u0027, default\u003dNone,"},{"line_number":47,"context_line":"               help\u003d\u0027Define the notification options to opt-out of.\u0027),"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_ecd95923","line":46,"updated":"2015-12-07 16:14:20.000000000","message":"Any reason to not sure ListOpt?","commit_id":"035555468db31b71a1b5c1f18e87974ea25d86bc"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"98e2bf865e1933ae0da18404e94bbb850e6953f4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":44,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":45,"context_line":"                    \u0027the initiator of the event.\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027notification_opt_out\u0027, default\u003dNone,"},{"line_number":47,"context_line":"               help\u003d\u0027Define the notification options to opt-out of.\u0027),"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_300da43e","line":46,"in_reply_to":"7a740942_ecd95923","updated":"2015-12-10 21:21:25.000000000","message":"Changed to ListOpt.","commit_id":"035555468db31b71a1b5c1f18e87974ea25d86bc"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f6c3f09a02ff3138aa10580cac263d4812c4e4ae","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            opt_out \u003d CONF.notification_opt_out.split(\u0027,\u0027)"},{"line_number":126,"context_line":"        except AttributeError:"},{"line_number":127,"context_line":"            opt_out \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # If operation is authenticate, then it does not have a resource_type"},{"line_number":130,"context_line":"        if operation \u003d\u003d \u0027authenticate\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_4c966d94","line":127,"updated":"2015-12-07 16:08:13.000000000","message":"Make this an empty list instead of None so that the confusing \u0027if\u0027 statement below can be rewritten","commit_id":"035555468db31b71a1b5c1f18e87974ea25d86bc"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"98e2bf865e1933ae0da18404e94bbb850e6953f4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            opt_out \u003d CONF.notification_opt_out.split(\u0027,\u0027)"},{"line_number":126,"context_line":"        except AttributeError:"},{"line_number":127,"context_line":"            opt_out \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # If operation is authenticate, then it does not have a resource_type"},{"line_number":130,"context_line":"        if operation \u003d\u003d \u0027authenticate\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_9015784a","line":127,"in_reply_to":"7a740942_4c966d94","updated":"2015-12-10 21:21:25.000000000","message":"Done","commit_id":"035555468db31b71a1b5c1f18e87974ea25d86bc"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"02b183b579f6eac789a834b35a4b692bd61061ae","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":44,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":45,"context_line":"                    \u0027the initiator of the event.\u0027),"},{"line_number":46,"context_line":"    cfg.ListOpt(\u0027notification_opt_out\u0027, default\u003d[],"},{"line_number":47,"context_line":"                help\u003d\u0027Define the notification options to opt-out of.\u0027),"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_1ff8b348","line":46,"updated":"2015-12-10 22:38:29.000000000","message":"so listOpts are defined as:\n\n  notification_opt_out\u003dopt1,opt2,opt3\n\nif you used: multiStrOpt, you could do:\n\n  notification_opt_out\u003dopt1\n  notification_opt_out\u003dopt2\n  notification_opt_out\u003dopt3\n\nit\u0027s just a preference thing, both default to empty arrays ([])","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4d2fcf21c8dae240a511d7da5a1c6e7a35433c23","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":44,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":45,"context_line":"                    \u0027the initiator of the event.\u0027),"},{"line_number":46,"context_line":"    cfg.ListOpt(\u0027notification_opt_out\u0027, default\u003d[],"},{"line_number":47,"context_line":"                help\u003d\u0027Define the notification options to opt-out of.\u0027),"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_955c587e","line":46,"in_reply_to":"7a740942_1ff8b348","updated":"2015-12-11 18:45:24.000000000","message":"Done","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"02b183b579f6eac789a834b35a4b692bd61061ae","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":45,"context_line":"                    \u0027the initiator of the event.\u0027),"},{"line_number":46,"context_line":"    cfg.ListOpt(\u0027notification_opt_out\u0027, default\u003d[],"},{"line_number":47,"context_line":"                help\u003d\u0027Define the notification options to opt-out of.\u0027),"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_9fa2634a","line":47,"updated":"2015-12-10 22:38:29.000000000","message":"in the help text, explain the value you expect, and how do define multiple ones","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4d2fcf21c8dae240a511d7da5a1c6e7a35433c23","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":45,"context_line":"                    \u0027the initiator of the event.\u0027),"},{"line_number":46,"context_line":"    cfg.ListOpt(\u0027notification_opt_out\u0027, default\u003d[],"},{"line_number":47,"context_line":"                help\u003d\u0027Define the notification options to opt-out of.\u0027),"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_20cc4069","line":47,"in_reply_to":"7a740942_9fa2634a","updated":"2015-12-11 18:45:24.000000000","message":"Done","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"02b183b579f6eac789a834b35a4b692bd61061ae","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        # of before it."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # generates a list of notifications to opt out of"},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            opt_out \u003d CONF.notification_opt_out"},{"line_number":126,"context_line":"        except AttributeError:"},{"line_number":127,"context_line":"            opt_out \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_7f445773","line":124,"updated":"2015-12-10 22:38:29.000000000","message":"you don\u0027t need this block, just check \"CONF.notification_opt_out\" on line 135 instead of \"opt_out\", it default to an empty array, so you\u0027re safe","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4d2fcf21c8dae240a511d7da5a1c6e7a35433c23","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        # of before it."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # generates a list of notifications to opt out of"},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            opt_out \u003d CONF.notification_opt_out"},{"line_number":126,"context_line":"        except AttributeError:"},{"line_number":127,"context_line":"            opt_out \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_a0def00e","line":124,"in_reply_to":"7a740942_7f445773","updated":"2015-12-11 18:45:24.000000000","message":"Awesome","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"02b183b579f6eac789a834b35a4b692bd61061ae","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        except AttributeError:"},{"line_number":127,"context_line":"            opt_out \u003d []"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # If operation is authenticate, then it does not have a resource_type"},{"line_number":130,"context_line":"        if operation \u003d\u003d \u0027authenticate\u0027:"},{"line_number":131,"context_line":"            action \u003d \u0027authenticate\u0027"},{"line_number":132,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_bf315f0d","line":129,"updated":"2015-12-10 22:38:29.000000000","message":"the reason you\u0027re having trouble here with \u0027authenticate\u0027 because you should check for it in _send_audit_notification","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"02b183b579f6eac789a834b35a4b692bd61061ae","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    :param kwargs: Any additional arguments passed in will be added as"},{"line_number":727,"context_line":"        key-value pairs to the CADF event."},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    \"\"\""},{"line_number":730,"context_line":"    event \u003d eventfactory.EventFactory().new_event("},{"line_number":731,"context_line":"        eventType\u003dcadftype.EVENTTYPE_ACTIVITY,"},{"line_number":732,"context_line":"        outcome\u003doutcome,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_b1f1936c","line":729,"updated":"2015-12-10 22:38:29.000000000","message":"you can move it here, and just check if event_type is in the list of opt_out_notifications","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4d2fcf21c8dae240a511d7da5a1c6e7a35433c23","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    :param kwargs: Any additional arguments passed in will be added as"},{"line_number":727,"context_line":"        key-value pairs to the CADF event."},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    \"\"\""},{"line_number":730,"context_line":"    event \u003d eventfactory.EventFactory().new_event("},{"line_number":731,"context_line":"        eventType\u003dcadftype.EVENTTYPE_ACTIVITY,"},{"line_number":732,"context_line":"        outcome\u003doutcome,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_db00d1ad","line":729,"in_reply_to":"7a740942_b1f1936c","updated":"2015-12-11 18:45:24.000000000","message":"Makes sense since it is only a CADF notification, but event_type would be set to \"identity.authenticate\". In opt_out_notifications it  would be set as \"authenticate\". I changed the requirements to have identity in the conf file.\n\nI can do this, but wouldn\u0027t it be good to do all the checks in just one-place(\u0027_emit()\u0027) instead of having code here for pretty much just one option?","commit_id":"43f9fd758fa20af1b599f6d6a0c6e38621e5409c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"142128f64d2b3dbc7bef2850a7032f9b901886fa","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        # the desired notification format in the function instead"},{"line_number":124,"context_line":"        # of before it."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        opt_out \u003d CONF.notification_opt_out"},{"line_number":127,"context_line":"        event \u003d \u0027identity.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        if event not in opt_out:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_a51ef409","line":126,"updated":"2015-12-11 20:38:42.000000000","message":"rather than in _emit(), you can slot this logic into _send_notification()","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"345ffa23529be3889b10dfe279c8137f83770bdf","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        # the desired notification format in the function instead"},{"line_number":124,"context_line":"        # of before it."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        opt_out \u003d CONF.notification_opt_out"},{"line_number":127,"context_line":"        event \u003d \u0027identity.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        if event not in opt_out:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_d636fab3","line":126,"in_reply_to":"7a740942_a51ef409","updated":"2015-12-14 18:23:01.000000000","message":"Done","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"142128f64d2b3dbc7bef2850a7032f9b901886fa","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                # overloaded, it\u0027s used to register callbacks and to actually"},{"line_number":205,"context_line":"                # send the notification externally. Thus, we should check"},{"line_number":206,"context_line":"                # the desired notification format in the function instead"},{"line_number":207,"context_line":"                # of before it."},{"line_number":208,"context_line":"                _send_notification("},{"line_number":209,"context_line":"                    self.operation,"},{"line_number":210,"context_line":"                    self.resource_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_c5b0e0ff","line":207,"updated":"2015-12-11 20:38:42.000000000","message":"you\u0027re currently missing it here, but if you move the check *into* send_notification, then no need to change this :)","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"345ffa23529be3889b10dfe279c8137f83770bdf","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                # overloaded, it\u0027s used to register callbacks and to actually"},{"line_number":205,"context_line":"                # send the notification externally. Thus, we should check"},{"line_number":206,"context_line":"                # the desired notification format in the function instead"},{"line_number":207,"context_line":"                # of before it."},{"line_number":208,"context_line":"                _send_notification("},{"line_number":209,"context_line":"                    self.operation,"},{"line_number":210,"context_line":"                    self.resource_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_96407209","line":207,"in_reply_to":"7a740942_c5b0e0ff","updated":"2015-12-14 18:23:01.000000000","message":"Awesome :)","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"142128f64d2b3dbc7bef2850a7032f9b901886fa","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                    to the notifier API."},{"line_number":464,"context_line":"                    if False, the event will only be sent via"},{"line_number":465,"context_line":"                    notify_event_callbacks to in process listeners."},{"line_number":466,"context_line":"    \"\"\""},{"line_number":467,"context_line":"    payload \u003d {\u0027resource_info\u0027: resource_id}"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    notify_event_callbacks(SERVICE, resource_type, operation, payload)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_c5d9c057","line":466,"updated":"2015-12-11 20:38:42.000000000","message":"you could do it here, and just check it in one spot.\n\nyou want to check the opt-out stuff before it gets to `notifier.info` (line 483) that\u0027s what actually sends the notifications, the rest of this is creating the payload which is just compute power and pretty cheap.","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"345ffa23529be3889b10dfe279c8137f83770bdf","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                    to the notifier API."},{"line_number":464,"context_line":"                    if False, the event will only be sent via"},{"line_number":465,"context_line":"                    notify_event_callbacks to in process listeners."},{"line_number":466,"context_line":"    \"\"\""},{"line_number":467,"context_line":"    payload \u003d {\u0027resource_info\u0027: resource_id}"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    notify_event_callbacks(SERVICE, resource_type, operation, payload)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_76f626d9","line":466,"in_reply_to":"7a740942_c5d9c057","updated":"2015-12-14 18:23:01.000000000","message":"Done","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"142128f64d2b3dbc7bef2850a7032f9b901886fa","unresolved":false,"context_lines":[{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    \"\"\""},{"line_number":724,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":725,"context_line":"    if event_type not in opt_out:"},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        event \u003d eventfactory.EventFactory().new_event("},{"line_number":728,"context_line":"            eventType\u003dcadftype.EVENTTYPE_ACTIVITY,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_a57a7422","line":725,"updated":"2015-12-11 20:38:42.000000000","message":"a small suggestion here, it\u0027s a matter of style but you could do the following instead:\n\n  if event_type in opt_out:\n    return\n\n  \u003crest of code should run\u003e\n\nI say style because it means you won\u0027t have to tab everything in by 4 spots.","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"345ffa23529be3889b10dfe279c8137f83770bdf","unresolved":false,"context_lines":[{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    \"\"\""},{"line_number":724,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":725,"context_line":"    if event_type not in opt_out:"},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        event \u003d eventfactory.EventFactory().new_event("},{"line_number":728,"context_line":"            eventType\u003dcadftype.EVENTTYPE_ACTIVITY,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_16f1e2cd","line":725,"in_reply_to":"7a740942_a57a7422","updated":"2015-12-14 18:23:01.000000000","message":"Done","commit_id":"8c58b29cf84b3fa83899be4c7145337d1cd6fa8e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"41de91237209443ff15bea4c292da4ff27911c5f","unresolved":false,"context_lines":[{"line_number":737,"context_line":""},{"line_number":738,"context_line":"emit_event \u003d CadfNotificationWrapper"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"role_assignment \u003d CadfRoleAssignmentNotificationWrapper"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_81658ae2","side":"PARENT","line":740,"updated":"2015-12-14 18:34:42.000000000","message":"undo these random white space changes","commit_id":"a9971cc1dacdd3651380084cc6f391e2bc339c82"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"2255504ac4991f94b55757d70919e79a2a308eb7","unresolved":false,"context_lines":[{"line_number":737,"context_line":""},{"line_number":738,"context_line":"emit_event \u003d CadfNotificationWrapper"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"role_assignment \u003d CadfRoleAssignmentNotificationWrapper"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_05b14147","side":"PARENT","line":740,"in_reply_to":"5a710552_81658ae2","updated":"2015-12-18 17:54:52.000000000","message":"Done","commit_id":"a9971cc1dacdd3651380084cc6f391e2bc339c82"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"41de91237209443ff15bea4c292da4ff27911c5f","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # send the notification externally. Thus, we should check"},{"line_number":123,"context_line":"        # the desired notification format in the function instead"},{"line_number":124,"context_line":"        # of before it."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        _send_notification("},{"line_number":127,"context_line":"            operation,"},{"line_number":128,"context_line":"            resource_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_415fa20e","line":125,"updated":"2015-12-14 18:34:42.000000000","message":"undo these random white space changes","commit_id":"6727f892085a9d3b19e4d283950ccf64602c8806"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"2255504ac4991f94b55757d70919e79a2a308eb7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # send the notification externally. Thus, we should check"},{"line_number":123,"context_line":"        # the desired notification format in the function instead"},{"line_number":124,"context_line":"        # of before it."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        _send_notification("},{"line_number":127,"context_line":"            operation,"},{"line_number":128,"context_line":"            resource_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_457d096d","line":125,"in_reply_to":"5a710552_415fa20e","updated":"2015-12-18 17:54:52.000000000","message":"Done","commit_id":"6727f892085a9d3b19e4d283950ccf64602c8806"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"41de91237209443ff15bea4c292da4ff27911c5f","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    \"\"\""},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":464,"context_line":"    event \u003d \u0027identity.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    if event in opt_out:"},{"line_number":467,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_418d627a","line":464,"updated":"2015-12-14 18:34:42.000000000","message":"use \"SERVICE\" instead of \u0027identity\u0027 as it\u0027s already defined, look at line 481","commit_id":"6727f892085a9d3b19e4d283950ccf64602c8806"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"2255504ac4991f94b55757d70919e79a2a308eb7","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    \"\"\""},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":464,"context_line":"    event \u003d \u0027identity.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    if event in opt_out:"},{"line_number":467,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_8583f155","line":464,"in_reply_to":"5a710552_418d627a","updated":"2015-12-18 17:54:52.000000000","message":"Done","commit_id":"6727f892085a9d3b19e4d283950ccf64602c8806"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"7c8de7d9c8295f9a5e48d45e1ed2bfdd3e80589f","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _send_notification(operation, resource_type, resource_id, public\u003dTrue):"},{"line_number":449,"context_line":"    \"\"\"Send notification to inform observers about the affected resource."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    This method doesn\u0027t raise an exception when sending the notification fails."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    :param operation: operation being performed (created, updated, or deleted)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_40c97d77","line":450,"updated":"2016-01-21 19:29:57.000000000","message":"Probably should update the docstring explaining that a notification won\u0027t send if ____","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"d392cf2cec1126c0c9824eec4f5fb1e7eb02f4cc","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _send_notification(operation, resource_type, resource_id, public\u003dTrue):"},{"line_number":449,"context_line":"    \"\"\"Send notification to inform observers about the affected resource."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    This method doesn\u0027t raise an exception when sending the notification fails."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    :param operation: operation being performed (created, updated, or deleted)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_9c80f0c0","line":450,"in_reply_to":"9a68dd71_40c97d77","updated":"2016-01-23 03:56:55.000000000","message":"I added a new function called \u0027_check_notification_opt_out\u0027 which which is documented.","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"71fd595499af507c94b5535308fe3cfdef48e499","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    if False, the event will only be sent via"},{"line_number":459,"context_line":"                    notify_event_callbacks to in process listeners."},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":462,"context_line":"    event \u003d SERVICE + \u0027.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    if event in opt_out:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_01d3ea60","line":461,"updated":"2016-01-07 05:39:56.000000000","message":"unless we plan to use opt_out in another place, we might not need this variable. We could just do something like: \n\n    notification \u003d SERVICE + \u0027.\u0027 + resource_type + \u0027.\u0027 + operation\n    if notification in CONF.notification_opt_out:\n        return","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"c8b1c78de5ff1aa9095306e8d1995080672a867a","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    if False, the event will only be sent via"},{"line_number":459,"context_line":"                    notify_event_callbacks to in process listeners."},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":462,"context_line":"    event \u003d SERVICE + \u0027.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    if event in opt_out:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_8563ea19","line":461,"in_reply_to":"fa69d971_01d3ea60","updated":"2016-01-08 18:46:40.000000000","message":"Makes sense. I will update as soon as I get feedback on this patch in general.","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"7c8de7d9c8295f9a5e48d45e1ed2bfdd3e80589f","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                    notify_event_callbacks to in process listeners."},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":462,"context_line":"    event \u003d SERVICE + \u0027.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    if event in opt_out:"},{"line_number":465,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_8040d5a6","line":462,"range":{"start_line":462,"start_character":12,"end_line":462,"end_character":59},"updated":"2016-01-21 19:29:57.000000000","message":"Also may i suggest building the \"event\" string like its done on Line 442","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"d392cf2cec1126c0c9824eec4f5fb1e7eb02f4cc","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                    notify_event_callbacks to in process listeners."},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":462,"context_line":"    event \u003d SERVICE + \u0027.\u0027 + resource_type + \u0027.\u0027 + operation"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    if event in opt_out:"},{"line_number":465,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_7c941c42","line":462,"range":{"start_line":462,"start_character":12,"end_line":462,"end_character":59},"in_reply_to":"9a68dd71_8040d5a6","updated":"2016-01-23 03:56:55.000000000","message":"Done","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"71fd595499af507c94b5535308fe3cfdef48e499","unresolved":false,"context_lines":[{"line_number":724,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"    if event_type in opt_out:"},{"line_number":727,"context_line":"        return"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    event \u003d eventfactory.EventFactory().new_event("},{"line_number":730,"context_line":"        eventType\u003dcadftype.EVENTTYPE_ACTIVITY,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_c1db924d","line":727,"updated":"2016-01-07 05:39:56.000000000","message":"Since this is pretty similar to the above, would we be able to move this into a more common spot so there is less duplicate logic?","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"c8b1c78de5ff1aa9095306e8d1995080672a867a","unresolved":false,"context_lines":[{"line_number":724,"context_line":"    opt_out \u003d CONF.notification_opt_out"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"    if event_type in opt_out:"},{"line_number":727,"context_line":"        return"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    event \u003d eventfactory.EventFactory().new_event("},{"line_number":730,"context_line":"        eventType\u003dcadftype.EVENTTYPE_ACTIVITY,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_c506c21f","line":727,"in_reply_to":"fa69d971_c1db924d","updated":"2016-01-08 18:46:40.000000000","message":"Will do as soon as I get feedback on this patch in general concerning guang-yee\u0027s comment.","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"691d052b9dafa3e3d3038af08ddae20f915523c3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                         \u0027The value expected is: \u0027"},{"line_number":51,"context_line":"                         \u0027identity.\u003cresource_type\u003e.\u003coperation\u003e. This field \u0027"},{"line_number":52,"context_line":"                         \u0027can be set multiple times in order to add more \u0027"},{"line_number":53,"context_line":"                         \u0027notifications to opt-out from. For example:\\n \u0027"},{"line_number":54,"context_line":"                         \u0027notification_opt_out\u003didentity.user.created\\n \u0027"},{"line_number":55,"context_line":"                         \u0027notification_opt_out\u003didentity.authenticate.success\u0027),"},{"line_number":56,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_88b19349","line":53,"range":{"start_line":53,"start_character":69,"end_line":53,"end_character":71},"updated":"2016-02-05 19:06:25.000000000","message":"will this format correctly?","commit_id":"255685877ec54d1b9689b88cc5af8a5490d30c91"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"1510b33574ea078d9fab455aa132cb87a9c71474","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                         \u0027The value expected is: \u0027"},{"line_number":51,"context_line":"                         \u0027identity.\u003cresource_type\u003e.\u003coperation\u003e. This field \u0027"},{"line_number":52,"context_line":"                         \u0027can be set multiple times in order to add more \u0027"},{"line_number":53,"context_line":"                         \u0027notifications to opt-out from. For example:\\n \u0027"},{"line_number":54,"context_line":"                         \u0027notification_opt_out\u003didentity.user.created\\n \u0027"},{"line_number":55,"context_line":"                         \u0027notification_opt_out\u003didentity.authenticate.success\u0027),"},{"line_number":56,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_786744e9","line":53,"range":{"start_line":53,"start_character":69,"end_line":53,"end_character":71},"in_reply_to":"5a5ae5dd_658b1dc4","updated":"2016-02-05 19:27:58.000000000","message":"I am setting up devstack right now to try it out","commit_id":"255685877ec54d1b9689b88cc5af8a5490d30c91"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e2da074b312e2be988a977a4de7fbb9f243035ee","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                         \u0027The value expected is: \u0027"},{"line_number":51,"context_line":"                         \u0027identity.\u003cresource_type\u003e.\u003coperation\u003e. This field \u0027"},{"line_number":52,"context_line":"                         \u0027can be set multiple times in order to add more \u0027"},{"line_number":53,"context_line":"                         \u0027notifications to opt-out from. For example:\\n \u0027"},{"line_number":54,"context_line":"                         \u0027notification_opt_out\u003didentity.user.created\\n \u0027"},{"line_number":55,"context_line":"                         \u0027notification_opt_out\u003didentity.authenticate.success\u0027),"},{"line_number":56,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_1b7161a8","line":53,"range":{"start_line":53,"start_character":69,"end_line":53,"end_character":71},"in_reply_to":"5a5ae5dd_786744e9","updated":"2016-02-06 01:05:37.000000000","message":"Just to follow up...i tried it and it worked fine.","commit_id":"255685877ec54d1b9689b88cc5af8a5490d30c91"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e779999e48d3f61ceb333d62a3bde35a896a4e4a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                         \u0027The value expected is: \u0027"},{"line_number":51,"context_line":"                         \u0027identity.\u003cresource_type\u003e.\u003coperation\u003e. This field \u0027"},{"line_number":52,"context_line":"                         \u0027can be set multiple times in order to add more \u0027"},{"line_number":53,"context_line":"                         \u0027notifications to opt-out from. For example:\\n \u0027"},{"line_number":54,"context_line":"                         \u0027notification_opt_out\u003didentity.user.created\\n \u0027"},{"line_number":55,"context_line":"                         \u0027notification_opt_out\u003didentity.authenticate.success\u0027),"},{"line_number":56,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_658b1dc4","line":53,"range":{"start_line":53,"start_character":69,"end_line":53,"end_character":71},"in_reply_to":"5a5ae5dd_88b19349","updated":"2016-02-05 19:18:21.000000000","message":"i think so.. if not we can change it up in a follow-on patch","commit_id":"255685877ec54d1b9689b88cc5af8a5490d30c91"}],"keystone/tests/unit/common/test_notifications.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fe34c25d1a052a2b5283d25aff7f1e97f71eec62","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            mocked.assert_called_once_with(*expected_args)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_send_notification_with_opt_out(self):"},{"line_number":205,"context_line":"        \"\"\"Test that the private method _send_notification does not notify"},{"line_number":206,"context_line":"        when a valid notification_opt_out configuration is provided."},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        resource \u003d uuid.uuid4().hex"},{"line_number":209,"context_line":"        resource_type \u003d EXP_RESOURCE_TYPE"},{"line_number":210,"context_line":"        operation \u003d CREATED_OPERATION"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_a97ceb72","line":207,"range":{"start_line":205,"start_character":0,"end_line":207,"end_character":11},"updated":"2016-01-03 14:00:24.000000000","message":"i am wondering why the docstring wrote like this can pass pep8? anyway, suggest to follow the convention.\n\n\"one line summary\none blank line here.\ndesc go to here.\"","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"903b8949481ad101408703a80d4f6035e7d766ea","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            mocked.assert_called_once_with(*expected_args)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_send_notification_with_opt_out(self):"},{"line_number":205,"context_line":"        \"\"\"Test that the private method _send_notification does not notify"},{"line_number":206,"context_line":"        when a valid notification_opt_out configuration is provided."},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        resource \u003d uuid.uuid4().hex"},{"line_number":209,"context_line":"        resource_type \u003d EXP_RESOURCE_TYPE"},{"line_number":210,"context_line":"        operation \u003d CREATED_OPERATION"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_d102040b","line":207,"range":{"start_line":205,"start_character":0,"end_line":207,"end_character":11},"in_reply_to":"fa69d971_a97ceb72","updated":"2016-01-04 18:44:36.000000000","message":"This should be fine, I\u0027m keeping it uniform with test_send_notifications seen above.","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fe34c25d1a052a2b5283d25aff7f1e97f71eec62","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            mocked.assert_not_called()"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def test_send_audit_notification_with_opt_out(self):"},{"line_number":228,"context_line":"        \"\"\"Test that the private method _send_audit_notification does not notify"},{"line_number":229,"context_line":"        when a valid notification_opt_out configuration is provided."},{"line_number":230,"context_line":"        \"\"\""},{"line_number":231,"context_line":"        resource \u003d uuid.uuid4().hex"},{"line_number":232,"context_line":"        resource_type \u003d EXP_RESOURCE_TYPE"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_2991db99","line":230,"range":{"start_line":228,"start_character":0,"end_line":230,"end_character":11},"updated":"2016-01-03 14:00:24.000000000","message":"the same.","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"903b8949481ad101408703a80d4f6035e7d766ea","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            mocked.assert_not_called()"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def test_send_audit_notification_with_opt_out(self):"},{"line_number":228,"context_line":"        \"\"\"Test that the private method _send_audit_notification does not notify"},{"line_number":229,"context_line":"        when a valid notification_opt_out configuration is provided."},{"line_number":230,"context_line":"        \"\"\""},{"line_number":231,"context_line":"        resource \u003d uuid.uuid4().hex"},{"line_number":232,"context_line":"        resource_type \u003d EXP_RESOURCE_TYPE"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_63002b02","line":230,"range":{"start_line":228,"start_character":0,"end_line":230,"end_character":11},"in_reply_to":"fa69d971_2991db99","updated":"2016-01-04 18:44:36.000000000","message":"See line 207","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3509bc31c2bf7024404d935ae71ad85204770352","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                                                   target,"},{"line_number":255,"context_line":"                                                   event_type,"},{"line_number":256,"context_line":"                                                   **kwargs)"},{"line_number":257,"context_line":"            mocked.assert_not_called()"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"class BaseNotificationTest(test_v3.RestfulTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_b80f0487","line":257,"updated":"2015-12-18 20:41:11.000000000","message":"Did the same as in \"test_send_notification_with_opt_out\", making sure that _get_notifier is not called if a valid opt_out is provided","commit_id":"9fc91bd91b0a1bc7111458fb2cfe587d10a1ccb1"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5df6416febe29c2c383811bff4a4c07adbc7dc43","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            mocked.assert_called_once_with(*expected_args)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_send_notification_with_opt_out(self):"},{"line_number":205,"context_line":"        \"\"\"Test that the private method _send_notification does not notify"},{"line_number":206,"context_line":"        when a valid notification_opt_out configuration is provided."},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        resource \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_e6f6055c","line":205,"updated":"2016-01-06 17:27:23.000000000","message":"docstr summary lines should be one line and end with a period, see pep257","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"f1544b08d5762b096c8ccb67d5376f7acabe7ea0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            mocked.assert_called_once_with(*expected_args)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_send_notification_with_opt_out(self):"},{"line_number":205,"context_line":"        \"\"\"Test that the private method _send_notification does not notify"},{"line_number":206,"context_line":"        when a valid notification_opt_out configuration is provided."},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        resource \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_c0339060","line":205,"in_reply_to":"fa69d971_e6f6055c","updated":"2016-01-07 03:49:47.000000000","message":"I went ahead and fixed up test_send_notification as well","commit_id":"a543bf72a7524f99dbc5ea861da5a77bf52606df"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"7c8de7d9c8295f9a5e48d45e1ed2bfdd3e80589f","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        operation \u003d CREATED_OPERATION"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        # NOTE(diazjf): Here we add notification_opt_out to the"},{"line_number":217,"context_line":"        # configuration so that we should return before _get_notifer() is"},{"line_number":218,"context_line":"        # called. This is because we are opting out notifications for the"},{"line_number":219,"context_line":"        # passed resource_type and operation."},{"line_number":220,"context_line":"        conf \u003d self.useFixture(config_fixture.Config(CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_e37f5b64","line":217,"range":{"start_line":217,"start_character":56,"end_line":217,"end_character":68},"updated":"2016-01-21 19:29:57.000000000","message":"_get_notifier","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"d392cf2cec1126c0c9824eec4f5fb1e7eb02f4cc","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        operation \u003d CREATED_OPERATION"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        # NOTE(diazjf): Here we add notification_opt_out to the"},{"line_number":217,"context_line":"        # configuration so that we should return before _get_notifer() is"},{"line_number":218,"context_line":"        # called. This is because we are opting out notifications for the"},{"line_number":219,"context_line":"        # passed resource_type and operation."},{"line_number":220,"context_line":"        conf \u003d self.useFixture(config_fixture.Config(CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_3c49c4b7","line":217,"range":{"start_line":217,"start_character":56,"end_line":217,"end_character":68},"in_reply_to":"9a68dd71_e37f5b64","updated":"2016-01-23 03:56:55.000000000","message":"Done","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"7c8de7d9c8295f9a5e48d45e1ed2bfdd3e80589f","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        resource \u003d uuid.uuid4().hex"},{"line_number":238,"context_line":"        resource_type \u003d EXP_RESOURCE_TYPE"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        action \u003d CREATED_OPERATION + \u0027.\u0027 + resource_type"},{"line_number":241,"context_line":"        initiator \u003d mock"},{"line_number":242,"context_line":"        target \u003d mock"},{"line_number":243,"context_line":"        outcome \u003d \u0027success\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_1e09a2dd","line":240,"range":{"start_line":240,"start_character":17,"end_line":240,"end_character":34},"updated":"2016-01-21 19:29:57.000000000","message":"So i set this to DELETED_OPERATION to test this is working correctly and your test still passes.  It looks like when you set the config it is blocking all notifications because if i comment out line 252 it sends then it will send the notification.","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"d392cf2cec1126c0c9824eec4f5fb1e7eb02f4cc","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        resource \u003d uuid.uuid4().hex"},{"line_number":238,"context_line":"        resource_type \u003d EXP_RESOURCE_TYPE"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        action \u003d CREATED_OPERATION + \u0027.\u0027 + resource_type"},{"line_number":241,"context_line":"        initiator \u003d mock"},{"line_number":242,"context_line":"        target \u003d mock"},{"line_number":243,"context_line":"        outcome \u003d \u0027success\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_9cceb02b","line":240,"range":{"start_line":240,"start_character":17,"end_line":240,"end_character":34},"in_reply_to":"9a68dd71_1e09a2dd","updated":"2016-01-23 03:56:55.000000000","message":"Hey Tom, Items are opted-out of by event_type. I think its because you didn\u0027t change the event_type as seen in line 244.","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"7c8de7d9c8295f9a5e48d45e1ed2bfdd3e80589f","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        kwargs \u003d {\u0027resource_info\u0027: resource}"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # NOTE(diazjf): Here we add notification_opt_out to the"},{"line_number":248,"context_line":"        # configuration so that we should return before _get_notifer() is"},{"line_number":249,"context_line":"        # called. This is because we are opting out notifications for the"},{"line_number":250,"context_line":"        # passed event type."},{"line_number":251,"context_line":"        conf \u003d self.useFixture(config_fixture.Config(CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_43918798","line":248,"range":{"start_line":248,"start_character":56,"end_line":248,"end_character":68},"updated":"2016-01-21 19:29:57.000000000","message":"_get_notifier","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"d392cf2cec1126c0c9824eec4f5fb1e7eb02f4cc","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        kwargs \u003d {\u0027resource_info\u0027: resource}"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # NOTE(diazjf): Here we add notification_opt_out to the"},{"line_number":248,"context_line":"        # configuration so that we should return before _get_notifer() is"},{"line_number":249,"context_line":"        # called. This is because we are opting out notifications for the"},{"line_number":250,"context_line":"        # passed event type."},{"line_number":251,"context_line":"        conf \u003d self.useFixture(config_fixture.Config(CONF))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_7cdadce9","line":248,"range":{"start_line":248,"start_character":56,"end_line":248,"end_character":68},"in_reply_to":"9a68dd71_43918798","updated":"2016-01-23 03:56:55.000000000","message":"Done","commit_id":"789a5abeac4e04ff512b3431aab4168ce6077c53"}],"releasenotes/notes/bug-1519210-de76097c974f9c93.yaml":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"0208eb470336c590c6c55788c78c441c0ef776da","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    requires a prelude. Usually only notes describing"},{"line_number":12,"context_line":"    major features or adding release theme details should"},{"line_number":13,"context_line":"    have a prelude."},{"line_number":14,"context_line":"features:"},{"line_number":15,"context_line":"  - List new features here, or remove this section."},{"line_number":16,"context_line":"    All of the list items in this section are combined"},{"line_number":17,"context_line":"    when the release notes are rendered, so the text"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a5ae5dd_d796754b","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":8},"updated":"2016-02-04 23:26:48.000000000","message":"need to update this section and remove the rest","commit_id":"13bbc98a08ce8e630f1363a6fbd9dbe360919851"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e5ffad03f5faf91ce989e512404f16c6b32b0438","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - \u003e"},{"line_number":4,"context_line":"    [`bug 1519210 \u003chttps://bugs.launchpad.net/keystone/+bug/1519210\u003e`_]"},{"line_number":5,"context_line":"    A user may now opt-out of notifications by specifying a list of"},{"line_number":6,"context_line":"    `event_types` in the ``notification_opt_out`` option in `keystone.conf`."},{"line_number":7,"context_line":"    These events are never sent to a messaging service."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5a5ae5dd_27d9a522","line":6,"updated":"2016-02-05 22:03:58.000000000","message":"suggest: \"using the\" instead of \"in the\" since they may have to use it multiple times","commit_id":"255685877ec54d1b9689b88cc5af8a5490d30c91"}]}
